Index: Source/core/css/RuleSet.cpp |
diff --git a/Source/core/css/RuleSet.cpp b/Source/core/css/RuleSet.cpp |
index 3509682031c0404611d0c8beebed29a99da5f896..120c45185a4a1569fecff7d77e96a2478b06608f 100644 |
--- a/Source/core/css/RuleSet.cpp |
+++ b/Source/core/css/RuleSet.cpp |
@@ -224,6 +224,7 @@ RuleData::RuleData(StyleRule* rule, unsigned selectorIndex, unsigned position, A |
static void collectFeaturesFromRuleData(RuleFeatureSet& features, const RuleData& ruleData) |
{ |
bool foundSiblingSelector = false; |
+ bool foundDescendantSelector = false; |
for (const CSSSelector* selector = ruleData.selector(); selector; selector = selector->tagHistory()) { |
features.collectFeaturesFromSelector(selector); |
@@ -233,11 +234,16 @@ static void collectFeaturesFromRuleData(RuleFeatureSet& features, const RuleData |
foundSiblingSelector = true; |
features.collectFeaturesFromSelector(subSelector); |
} |
- } else if (!foundSiblingSelector && selector->isSiblingSelector()) |
+ } else if (!foundSiblingSelector && selector->isSiblingSelector()) { |
foundSiblingSelector = true; |
+ } else if (!foundDescendantSelector && selector->relation() == CSSSelector::Descendant) { |
+ foundDescendantSelector = true; |
+ } |
} |
if (foundSiblingSelector) |
features.siblingRules.append(RuleFeature(ruleData.rule(), ruleData.selectorIndex(), ruleData.hasDocumentSecurityOrigin())); |
+ if (foundDescendantSelector) |
+ features.descendantRules.append(RuleFeature(ruleData.rule(), ruleData.selectorIndex(), ruleData.hasDocumentSecurityOrigin())); |
if (ruleData.containsUncommonAttributeSelector()) |
features.uncommonAttributeRules.append(RuleFeature(ruleData.rule(), ruleData.selectorIndex(), ruleData.hasDocumentSecurityOrigin())); |
} |