style: Look at the snapshots when invalidating due to stylesheet changes.

Otherwise removal of stylesheets may get out of sync with other DOM changes, and
we may fail to invalidate the style of the affected elements.

Bug: 1432850
Reviewed-by: bz
MozReview-Commit-ID: DrMTgLzQcnk
This commit is contained in:
Emilio Cobos Álvarez 2018-01-25 02:53:49 +01:00
parent c2dfece49f
commit 657d8b8e31
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
8 changed files with 95 additions and 37 deletions

View file

@ -7,6 +7,7 @@
use dom::TElement;
use invalidation::stylesheets::StylesheetInvalidationSet;
use media_queries::Device;
use selector_parser::SnapshotMap;
use shared_lock::SharedRwLockReadGuard;
use std::slice;
use stylesheets::{Origin, OriginSet, OriginSetIterator, PerOrigin, StylesheetInDocument};
@ -502,6 +503,7 @@ where
pub fn flush<'a, E>(
&'a mut self,
document_element: Option<E>,
snapshots: Option<&SnapshotMap>,
) -> StylesheetFlusher<'a, S>
where
E: TElement,
@ -510,7 +512,9 @@ where
debug!("StylesheetSet::flush");
let had_invalidations = self.invalidations.flush(document_element);
let had_invalidations =
self.invalidations.flush(document_element, snapshots);
let origins_dirty =
mem::replace(&mut self.origins_dirty, OriginSet::empty());