Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Unified Diff: Source/core/css/RuleSet.cpp

Issue 29633003: Avoid style sharing with mis-matched descendant selectors (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()));
}

Powered by Google App Engine
This is Rietveld 408576698