style: Ensure invalidated_self is called at most once per element.

MozReview-Commit-ID: 1M0WuAduqun
This commit is contained in:
Emilio Cobos Álvarez 2017-10-22 02:51:00 +02:00
parent bd2a82334b
commit 7f5536d5bc
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -240,12 +240,18 @@ where
debug!(" > descendants: {:?}", descendant_invalidations); debug!(" > descendants: {:?}", descendant_invalidations);
debug!(" > siblings: {:?}", sibling_invalidations); debug!(" > siblings: {:?}", sibling_invalidations);
let invalidated_self_from_collection = invalidated_self;
invalidated_self |= self.process_descendant_invalidations( invalidated_self |= self.process_descendant_invalidations(
&self_invalidations, &self_invalidations,
&mut descendant_invalidations, &mut descendant_invalidations,
&mut sibling_invalidations, &mut sibling_invalidations,
); );
if invalidated_self && !invalidated_self_from_collection {
self.processor.invalidated_self(self.element);
}
let invalidated_descendants = self.invalidate_descendants(&descendant_invalidations); let invalidated_descendants = self.invalidate_descendants(&descendant_invalidations);
let invalidated_siblings = self.invalidate_siblings(&mut sibling_invalidations); let invalidated_siblings = self.invalidate_siblings(&mut sibling_invalidations);
@ -276,12 +282,18 @@ where
); );
let mut invalidations_for_descendants = InvalidationVector::new(); let mut invalidations_for_descendants = InvalidationVector::new();
any_invalidated |= let invalidated_sibling =
sibling_invalidator.process_sibling_invalidations( sibling_invalidator.process_sibling_invalidations(
&mut invalidations_for_descendants, &mut invalidations_for_descendants,
sibling_invalidations, sibling_invalidations,
); );
if invalidated_sibling {
sibling_invalidator.processor.invalidated_self(sibling);
}
any_invalidated |= invalidated_sibling;
any_invalidated |= any_invalidated |=
sibling_invalidator.invalidate_descendants( sibling_invalidator.invalidate_descendants(
&invalidations_for_descendants &invalidations_for_descendants
@ -351,6 +363,10 @@ where
sibling_invalidations, sibling_invalidations,
); );
if invalidated_child {
child_invalidator.processor.invalidated_self(child);
}
child_invalidator.invalidate_descendants(&invalidations_for_descendants) child_invalidator.invalidate_descendants(&invalidations_for_descendants)
}; };
@ -718,10 +734,6 @@ where
CompoundSelectorMatchingResult::NotMatched => {} CompoundSelectorMatchingResult::NotMatched => {}
} }
if invalidated_self {
self.processor.invalidated_self(self.element);
}
SingleInvalidationResult { invalidated_self, matched, } SingleInvalidationResult { invalidated_self, matched, }
} }
} }