| Index: Source/core/css/RuleFeature.cpp
|
| diff --git a/Source/core/css/RuleFeature.cpp b/Source/core/css/RuleFeature.cpp
|
| index 7cb58c1d79632a91cfb32781f394f2c01c444839..8e8f7a44ed2a77ada24fc1e01c7b6fb0c1852543 100644
|
| --- a/Source/core/css/RuleFeature.cpp
|
| +++ b/Source/core/css/RuleFeature.cpp
|
| @@ -171,6 +171,8 @@ void RuleFeatureSet::collectFeaturesFromSelector(const CSSSelector& selector)
|
|
|
| void RuleFeatureSet::collectFeaturesFromSelector(const CSSSelector& selector, RuleFeatureSet::FeatureMetadata& metadata)
|
| {
|
| + unsigned maxDirectAdjacentSelectors = 0;
|
| +
|
| for (const CSSSelector* current = &selector; current; current = current->tagHistory()) {
|
| if (current->m_match == CSSSelector::Id)
|
| metadata.idsInRules.add(current->value());
|
| @@ -181,13 +183,20 @@ void RuleFeatureSet::collectFeaturesFromSelector(const CSSSelector& selector, Ru
|
|
|
| if (current->pseudoType() == CSSSelector::PseudoFirstLine)
|
| metadata.usesFirstLineRules = true;
|
| - if (current->isDirectAdjacentSelector())
|
| - metadata.maxDirectAdjacentSelectors++;
|
| + if (current->isDirectAdjacentSelector()) {
|
| + maxDirectAdjacentSelectors++;
|
| + } else if (maxDirectAdjacentSelectors) {
|
| + if (maxDirectAdjacentSelectors > metadata.maxDirectAdjacentSelectors)
|
| + metadata.maxDirectAdjacentSelectors = maxDirectAdjacentSelectors;
|
| + maxDirectAdjacentSelectors = 0;
|
| + }
|
| if (current->isSiblingSelector())
|
| metadata.foundSiblingSelector = true;
|
|
|
| collectFeaturesFromSelectorList(current->selectorList(), metadata);
|
| }
|
| +
|
| + ASSERT(!maxDirectAdjacentSelectors);
|
| }
|
|
|
| void RuleFeatureSet::collectFeaturesFromSelectorList(const CSSSelectorList* selectorList, RuleFeatureSet::FeatureMetadata& metadata)
|
|
|