bool CSSSelectorList::hasShadowDistributedAt(size_t index) const { SelectorHasShadowDistributed functor; return forEachTagSelector(functor, selectorAt(index)); }
bool CSSSelectorList::selectorCrossesTreeScopes(size_t index) const { SelectorCrossesTreeScopes functor; return forEachTagSelector(functor, selectorAt(index)); }
bool CSSSelectorList::hasCombinatorCrossingTreeBoundaryAt(size_t index) const { SelectorHasCombinatorCrossingTreeBoundary functor; return forEachTagSelector(functor, selectorAt(index)); }
bool CSSSelectorList::selectorNeedsUpdatedDistribution(size_t index) const { return forEachTagSelector([](const CSSSelector& selector) -> bool { return selector.relationIsAffectedByPseudoContent() || selector.pseudoType() == CSSSelector::PseudoSlotted || selector.pseudoType() == CSSSelector::PseudoHostContext; }, selectorAt(index)); }
bool CSSSelectorList::selectorUsesDeepCombinatorOrShadowPseudo(size_t index) const { return forEachTagSelector([](const CSSSelector& selector) -> bool { return selector.relation() == CSSSelector::ShadowDeep || selector.pseudoType() == CSSSelector::PseudoShadow; }, selectorAt(index)); }
bool CSSSelectorList::selectorHasSlottedPseudo(size_t index) const { return forEachTagSelector([](const CSSSelector& selector) -> bool { return selector.pseudoType() == CSSSelector::PseudoSlotted; }, selectorAt(index)); }
bool CSSSelectorList::selectorHasContentPseudo(size_t index) const { return forEachTagSelector([](const CSSSelector& selector) -> bool { return selector.relationIsAffectedByPseudoContent(); }, selectorAt(index)); }