DescriptionRemove checkForChildrenAdjacentRuleChanges.
All uses of SubtreeStyleChange now means strict subtree. All sibling
forest invalidations are done using invalidation sets except on node
insertions and removals.
checkForSiblingStyleChanges now has to invalidate siblings itself on
insertion/removal. Before this change we did a SubtreeStyleChange on a
single element and let checkForChildrenAdjacentRuleChanges mark the
sibling forest for recalc. The reason why we cannot use invalidation sets
when adding/removing nodes, is that we don't change the relevant features
(classes, ids, etc) when we need to figure out. For instance:
<style>
:not(.a) + div { color green }
</style>
<div class="a"></div>
<div>Should be green after insertion</div>
If you insert an element between the two divs, the latter will start
matching the style rule, but we cannot do that with invalidation sets.
Adjustments have been done to the style invalidator to allow scheduling
sibling invalidation sets on SubtreeStyleChange elements, since siblings
will have style recalcs triggered through the invalidation machinery, not
checkForChildrenAdjacentRuleChanges.
BUG=557440
Committed: https://crrev.com/95eaa0cbb6e9a7d348769a335ae702c1214769dc
Cr-Commit-Position: refs/heads/master@{#370097}
Patch Set 1 #
Total comments: 1
Patch Set 2 : Rebased #Patch Set 3 : Might need to schedule sibling invalidation sets for SubtreeStyleChange #
Total comments: 2
Patch Set 4 : #Patch Set 5 : Rebased #Patch Set 6 : Missing check for AttachContext::clearInvalidation #Patch Set 7 : Rebased #Messages
Total messages: 32 (12 generated)
|