Index: Source/core/css/RuleSet.cpp |
diff --git a/Source/core/css/RuleSet.cpp b/Source/core/css/RuleSet.cpp |
index f7a0325f543146ce808b33b35e6a049e58a84012..deac311c0b86ecbfcb6b9d0d60f10e3c40bb6cf5 100644 |
--- a/Source/core/css/RuleSet.cpp |
+++ b/Source/core/css/RuleSet.cpp |
@@ -39,6 +39,7 @@ |
#include "core/css/SelectorFilter.h" |
#include "core/css/StyleRuleImport.h" |
#include "core/css/StyleSheetContents.h" |
+#include "core/css/analyzer/RuleSetAnalyzer.h" |
#include "core/html/track/TextTrackCue.h" |
#include "platform/weborigin/SecurityOrigin.h" |
@@ -207,36 +208,6 @@ RuleData::RuleData(StyleRule* rule, unsigned selectorIndex, unsigned position, A |
SelectorFilter::collectIdentifierHashes(selector(), m_descendantSelectorIdentifierHashes, maximumIdentifierCount); |
} |
-static void collectFeaturesFromRuleData(RuleFeatureSet& features, const RuleData& ruleData) |
-{ |
- bool foundSiblingSelector = false; |
- unsigned maxDirectAdjacentSelectors = 0; |
- 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)) { |
- // FIXME: Shouldn't this be checking subSelector->isSiblingSelector()? |
- if (!foundSiblingSelector && selector->isSiblingSelector()) |
- foundSiblingSelector = true; |
- if (subSelector->isDirectAdjacentSelector()) |
- maxDirectAdjacentSelectors++; |
- features.collectFeaturesFromSelector(subSelector); |
- } |
- } else { |
- if (!foundSiblingSelector && selector->isSiblingSelector()) |
- foundSiblingSelector = true; |
- if (selector->isDirectAdjacentSelector()) |
- maxDirectAdjacentSelectors++; |
- } |
- } |
- features.setMaxDirectAdjacentSelectors(maxDirectAdjacentSelectors); |
- 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 RuleSet::addToRuleSet(StringImpl* key, PendingRuleMap& map, const RuleData& ruleData) |
{ |
if (!key) |
@@ -299,7 +270,7 @@ bool RuleSet::findBestRuleSetAndAdd(const CSSSelector* component, RuleData& rule |
void RuleSet::addRule(StyleRule* rule, unsigned selectorIndex, AddRuleFlags addRuleFlags) |
{ |
RuleData ruleData(rule, selectorIndex, m_ruleCount++, addRuleFlags); |
- collectFeaturesFromRuleData(m_features, ruleData); |
+ m_features.ensureRuleSetAnalyzer()->collectFeaturesFromRuleData(m_features, ruleData); |
if (!findBestRuleSetAndAdd(ruleData.selector(), ruleData)) { |
// If we didn't find a specialized map to stick it in, file under universal rules. |