[:is/:where] Support :is/:where inside :not
This adds support for using :is inside :not, without expanding the capabilities of :not itself. (In other words, we still only accept a single simple selector when using non-nesting selectors directly within :not). For invalidation, we do need to traverse into the complex selectors nested (deep) inside :not(), for example to mark .b as invalidates- self for ".a :not(:is(.b))", but at the :not-boundary during feature extraction, we avoid propagating the features, such that .a is marked with whole-subtree recalc. We already have similar logic in ExtractInvalidationSetFeaturesFromCompound which prevents feature extraction for selectors held by :not directly. Note that CSSParserSelector::IsSimple() only has one call-site, and that's during parsing of :not(). Bug: 568705 Change-Id: Ic7cb421c4d8f6a6e85cfea30c987db2e0fed64fa Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2463830 Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org> Reviewed-by:Rune Lillesveen <futhark@chromium.org> Cr-Commit-Position: refs/heads/master@{#816328}
Showing
Please register or sign in to comment