| Index: Source/core/css/parser/BisonCSSParser-in.cpp
|
| diff --git a/Source/core/css/parser/BisonCSSParser-in.cpp b/Source/core/css/parser/BisonCSSParser-in.cpp
|
| index 030f192d1f1721a8a8c5274a8117fdc41e6f2ad3..4b366c75d1139dbd35e9297431241a051ee71fc8 100644
|
| --- a/Source/core/css/parser/BisonCSSParser-in.cpp
|
| +++ b/Source/core/css/parser/BisonCSSParser-in.cpp
|
| @@ -1756,6 +1756,43 @@ StyleRuleKeyframes* BisonCSSParser::createKeyframesRule(const String& name, Pass
|
| return rulePtr;
|
| }
|
|
|
| +static void recordSelectorStats(const CSSParserContext& context, const CSSSelectorList& selectorList)
|
| +{
|
| + if (!context.useCounter())
|
| + return;
|
| +
|
| + for (const CSSSelector* selector = selectorList.first(); selector; selector = CSSSelectorList::next(*selector)) {
|
| + for (const CSSSelector* current = selector; current ; current = current->tagHistory()) {
|
| + UseCounter::Feature feature = UseCounter::NumberOfFeatures;
|
| + switch (current->pseudoType()) {
|
| + case CSSSelector::PseudoUnresolved:
|
| + feature = UseCounter::CSSSelectorPseudoUnresolved;
|
| + break;
|
| + case CSSSelector::PseudoShadow:
|
| + feature = UseCounter::CSSSelectorPseudoShadow;
|
| + break;
|
| + case CSSSelector::PseudoContent:
|
| + feature = UseCounter::CSSSelectorPseudoContent;
|
| + break;
|
| + case CSSSelector::PseudoHost:
|
| + feature = UseCounter::CSSSelectorPseudoHost;
|
| + break;
|
| + case CSSSelector::PseudoHostContext:
|
| + feature = UseCounter::CSSSelectorPseudoHostContext;
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + if (feature != UseCounter::NumberOfFeatures)
|
| + context.useCounter()->count(feature);
|
| + if (current->relation() == CSSSelector::ShadowDeep)
|
| + context.useCounter()->count(UseCounter::CSSDeepCombinator);
|
| + if (current->selectorList())
|
| + recordSelectorStats(context, *current->selectorList());
|
| + }
|
| + }
|
| +}
|
| +
|
| StyleRuleBase* BisonCSSParser::createStyleRule(Vector<OwnPtr<CSSParserSelector> >* selectors)
|
| {
|
| StyleRule* result = 0;
|
| @@ -1766,6 +1803,7 @@ StyleRuleBase* BisonCSSParser::createStyleRule(Vector<OwnPtr<CSSParserSelector>
|
| rule->setProperties(createStylePropertySet());
|
| result = rule.get();
|
| m_parsedRules.append(rule.release());
|
| + recordSelectorStats(m_context, result->selectorList());
|
| }
|
| clearProperties();
|
| return result;
|
|
|