mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
style: Record attribute dependencies within the selector list of :nth-child(... of <selector list>)
There are separate filters for IDs, classes, attribute local names, and element state. Also, we invalidate siblings of elements matched against the selector list of :nth-child(... of <selector list>) by marking matched elements with NODE_HAS_SLOW_SELECTOR_NTH_OF. The only remaining invalidation case invalidation case is `:nth-child(An+B of :has())` (bug 1818155), which should not block shipping `layout.css.nth-child-of.enabled`, because :has(...) is still being implemented (bug 418039). Depends on D172352 Differential Revision: https://phabricator.services.mozilla.com/D171936
This commit is contained in:
parent
c7f8845665
commit
356e886d26
7 changed files with 261 additions and 28 deletions
|
@ -14,7 +14,6 @@ use crate::{Atom, LocalName, Namespace, ShrinkIfNeeded};
|
|||
use selectors::attr::NamespaceConstraint;
|
||||
use selectors::parser::{Combinator, Component};
|
||||
use selectors::parser::{Selector, SelectorIter};
|
||||
use selectors::visitor::SelectorVisitor;
|
||||
use smallvec::SmallVec;
|
||||
use style_traits::dom::{DocumentState, ElementState};
|
||||
|
||||
|
@ -430,7 +429,11 @@ impl<'a> SelectorDependencyCollector<'a> {
|
|||
impl<'a> SelectorVisitor for SelectorDependencyCollector<'a> {
|
||||
type Impl = SelectorImpl;
|
||||
|
||||
fn visit_selector_list(&mut self, list: &[Selector<SelectorImpl>]) -> bool {
|
||||
fn visit_selector_list(
|
||||
&mut self,
|
||||
_list_kind: SelectorListKind,
|
||||
list: &[Selector<SelectorImpl>],
|
||||
) -> bool {
|
||||
for selector in list {
|
||||
// Here we cheat a bit: We can visit the rightmost compound with
|
||||
// the "outer" visitor, and it'd be fine. This reduces the amount of
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue