void StyleEngine::resetCSSFeatureFlags(const RuleFeatureSet& features) { m_usesSiblingRules = features.usesSiblingRules(); m_usesFirstLineRules = features.usesFirstLineRules(); m_usesWindowInactiveSelector = features.usesWindowInactiveSelector(); m_maxDirectAdjacentSelectors = features.maxDirectAdjacentSelectors(); }
void StyleEngine::combineCSSFeatureFlags(const RuleFeatureSet& features) { // Delay resetting the flags until after next style recalc since unapplying the style may not work without these set (this is true at least with before/after). m_usesSiblingRules = m_usesSiblingRules || features.usesSiblingRules(); m_usesFirstLineRules = m_usesFirstLineRules || features.usesFirstLineRules(); m_maxDirectAdjacentSelectors = max(m_maxDirectAdjacentSelectors, features.maxDirectAdjacentSelectors()); }
void StyleScopeResolver::collectFeaturesTo(RuleFeatureSet& features) { for (ScopedRuleSetMap::iterator it = m_authorStyles.begin(); it != m_authorStyles.end(); ++it) features.add(it->value->features()); #if ENABLE(SHADOW_DOM) for (ScopedRuleSetMap::iterator it = m_atHostRules.begin(); it != m_atHostRules.end(); ++it) features.add(it->value->features()); #endif }
void ScopedStyleResolver::collectFeaturesTo(RuleFeatureSet& features) { if (m_authorStyle) features.add(m_authorStyle->features()); if (m_atHostRules.isEmpty()) return; for (HashMap<const ShadowRoot*, OwnPtr<RuleSet> >::iterator it = m_atHostRules.begin(); it != m_atHostRules.end(); ++it) features.add(it->value->features()); }
void ScopedStyleResolver::collectFeaturesTo(RuleFeatureSet& features, WillBeHeapHashSet<RawPtrWillBeMember<const StyleSheetContents>>& visitedSharedStyleSheetContents) const { for (size_t i = 0; i < m_authorStyleSheets.size(); ++i) { ASSERT(m_authorStyleSheets[i]->ownerNode()); StyleSheetContents* contents = m_authorStyleSheets[i]->contents(); if (contents->hasOneClient() || visitedSharedStyleSheetContents.add(contents).isNewEntry) features.add(contents->ruleSet().features()); } if (!m_treeBoundaryCrossingRuleSet) return; for (const auto& rules : *m_treeBoundaryCrossingRuleSet) features.add(rules->m_ruleSet->features()); }
void ScopedStyleResolver::collectFeaturesTo(RuleFeatureSet& features, HashSet<const StyleSheetContents*>& visitedSharedStyleSheetContents) { for (size_t i = 0; i < m_authorStyleSheets.size(); ++i) { StyleSheetContents* contents = m_authorStyleSheets[i]->contents(); if (contents->hasOneClient() || visitedSharedStyleSheetContents.add(contents).isNewEntry) features.add(contents->ruleSet().features()); } }
static void collectFeaturesFromRuleData(RuleFeatureSet& features, const RuleData& ruleData) { bool hasSiblingSelector; features.collectFeaturesFromSelector(*ruleData.selector(), hasSiblingSelector); if (hasSiblingSelector) features.siblingRules.append(RuleFeature(ruleData.rule(), ruleData.selectorIndex(), ruleData.hasDocumentSecurityOrigin())); if (ruleData.containsUncommonAttributeSelector()) features.uncommonAttributeRules.append(RuleFeature(ruleData.rule(), ruleData.selectorIndex(), ruleData.hasDocumentSecurityOrigin())); }
static void collectFeaturesFromRuleData(RuleFeatureSet& features, const RuleData& ruleData) { bool foundSiblingSelector = false; for (const CSSSelector* selector = ruleData.selector(); selector; selector = selector->tagHistory()) { features.collectFeaturesFromSelector(selector); if (const CSSSelectorList* selectorList = selector->selectorList()) { for (const CSSSelector* subSelector = selectorList->first(); subSelector; subSelector = CSSSelectorList::next(subSelector)) { if (!foundSiblingSelector && selector->isSiblingSelector()) foundSiblingSelector = true; features.collectFeaturesFromSelector(subSelector); } } else if (!foundSiblingSelector && selector->isSiblingSelector()) foundSiblingSelector = true; } if (foundSiblingSelector) features.siblingRules.append(RuleFeature(ruleData.rule(), ruleData.selectorIndex(), ruleData.hasDocumentSecurityOrigin())); if (ruleData.containsUncommonAttributeSelector()) features.uncommonAttributeRules.append(RuleFeature(ruleData.rule(), ruleData.selectorIndex(), ruleData.hasDocumentSecurityOrigin())); }
void TreeBoundaryCrossingRules::collectFeaturesFromRuleSubSet(CSSStyleSheetRuleSubSet* ruleSubSet, RuleFeatureSet& features) { for (CSSStyleSheetRuleSubSet::iterator it = ruleSubSet->begin(); it != ruleSubSet->end(); ++it) features.add(it->second->features()); }
void StyleScopeResolver::collectFeaturesTo(RuleFeatureSet& features) { for (ScopedRuleSetMap::iterator it = m_authorStyles.begin(); it != m_authorStyles.end(); ++it) features.add(it->value->features()); }