You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[@scope] Treat kScopeActivation as a special kSubSelector
The internal selector relation kScopeActivation is inserted by
the selector parser for selectors within @scope. This relation,
when encountered in the selector, basically figures out if we're
in scope [1], what the scoping roots are (there may be multiple),
and tries to match the rest of the selector with context.scope
set to those roots.
However, kScopeActivation is not a combinator: it does not change
the current element being considered for matching. In this respect,
it's much like the kSubSelector relation. This CL treats it as
such in SelectorChecker::MatchSelector, by skipping the combinator-
related checks for exceeding the scope [2] and dynamic_pseudo
matching (i.e. exactly the same as kSubSelector).
I've moved the handling of kScopeActivation to a separate function
(MatchForScopeActivation) to make it more clear that it's a special
case (like MatchForSubSelector), and not like the other relations.
This fixes a bug where selectors with pseudo-elements within @scope
would match the originating element instead (due to missing
dynamic_pseudo).
[1] https://drafts.csswg.org/css-cascade-6/#in-scope
[2] Although we already skipped this for kScopeActivation.
Fixed: 335337303
Change-Id: I6f421c317c00efba5be8ca1407455f03e414a174
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5476369
Reviewed-by: Rune Lillesveen <[email protected]>
Commit-Queue: Anders Hartvoll Ruud <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1291819}
0 commit comments