Vector<RefPtr<StyleRule>> StyleRule::splitIntoMultipleRulesWithMaximumSelectorComponentCount(unsigned maxCount) const { ASSERT(selectorList().componentCount() > maxCount); Vector<RefPtr<StyleRule>> rules; Vector<const CSSSelector*> componentsSinceLastSplit; for (const CSSSelector* selector = selectorList().first(); selector; selector = CSSSelectorList::next(selector)) { Vector<const CSSSelector*, 8> componentsInThisSelector; for (const CSSSelector* component = selector; component; component = component->tagHistory()) componentsInThisSelector.append(component); if (componentsInThisSelector.size() + componentsSinceLastSplit.size() > maxCount && !componentsSinceLastSplit.isEmpty()) { rules.append(create(sourceLine(), componentsSinceLastSplit, const_cast<StyleProperties&>(m_properties.get()))); componentsSinceLastSplit.clear(); } componentsSinceLastSplit.appendVector(componentsInThisSelector); } if (!componentsSinceLastSplit.isEmpty()) rules.append(create(sourceLine(), componentsSinceLastSplit, const_cast<StyleProperties&>(m_properties.get()))); return rules; }
String CSSStyleRule::selectorText() const { String str; for (CSSSelector* s = selectorList().first(); s; s = CSSSelectorList::next(s)) { if (s != selectorList().first()) str += ", "; str += s->selectorText(); } return str; }
bool HTMLContentElement::matchSelector(const WillBeHeapVector<RawPtrWillBeMember<Node>, 32>& siblings, int nth) const { for (const CSSSelector* selector = selectorList().first(); selector; selector = CSSSelectorList::next(*selector)) { if (checkOneSelector(*selector, siblings, nth)) return true; } return false; }
String CSSPageRule::pageSelectorText() const { String text = "@page"; CSSSelector* selector = selectorList().first(); if (selector) { String pageSpecification = selector->selectorText(); if (!pageSpecification.isEmpty() && pageSpecification != starAtom) text += " " + pageSpecification; } return text; }