Remove layout blockers before invoking arbitrary content callbacks #34482
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When manipulating the DOM tree we always want web content to only see stable states after any mutations are applied. We introduced script/layout blockers in 14b0de3 to catch cases where an unstable DOM could be exposed to web content. These restrictions were too strict, however; the spec mandates that steps like the
children changed
should be invoked synchronously (eg. step 9 of https://dom.spec.whatwg.org/#concept-node-insert), and it's possible to trigger web content from those steps in various ways (see the new test). Since we're careful to invoke such callbacks at times when the DOM is stable, this means that we need to remove the script/layout blockers right before invoking those callbacks, rather than after they have executed../mach build -d
does not report any errors./mach test-tidy
does not report any errors