DescriptionAvoid crash when updating stylesheets during a remove operation.
When we are in the middle of removing a subtree of a shadow tree
containing a style element, and one of the other elements schedules
style invalidation, we are synchronously trying to update rule features
when the style node is still inDocument() and isInShadowTree() while the
treeScope() has been reset to the document scope in preparation for
removing it from the tree. That caused us to add the sheet for the style
element being removed to our style data/rule features.
We should make updateActiveStyleSheets asynchronous (crbug.com/567021)
and schedule invalidations with the current rule features instead of
forcing an update of rule features through appendPendingAuthorStyleSheets.
Since updateActiveStyleSheets is currently synchronous and
appendPendingAuthorStyleSheets happens lazily, we are in an inconsistent
state which means we need to execute the latter in order to avoid
glitches in style invalidation because we are marking for
invalidation/recalc in the former step.
This crasher surfaced when we started looking up the treeScope() directly
in https://codereview.chromium.org/1285293003
R=esprehn@chromium.org
BUG=559292
Committed: https://crrev.com/0b0f3ace8820d371e6f4b2b61354728a71ce8356
Cr-Commit-Position: refs/heads/master@{#369004}
Patch Set 1 #
Messages
Total messages: 12 (4 generated)
|