Index: third_party/WebKit/Source/core/css/RuleFeature.cpp |
diff --git a/third_party/WebKit/Source/core/css/RuleFeature.cpp b/third_party/WebKit/Source/core/css/RuleFeature.cpp |
index 76f9b60c3b773d6ff67988f73955cd478a5e8adf..425fc784e8edda35effaefa7a2e2f052e23ff395 100644 |
--- a/third_party/WebKit/Source/core/css/RuleFeature.cpp |
+++ b/third_party/WebKit/Source/core/css/RuleFeature.cpp |
@@ -428,10 +428,11 @@ void RuleFeatureSet::addFeaturesToInvalidationSet(InvalidationSet& invalidationS |
invalidationSet.setTreeBoundaryCrossing(); |
if (features.insertionPointCrossing) |
invalidationSet.setInsertionPointCrossing(); |
- if (features.forceSubtree) { |
+ if (features.forceSubtree) |
invalidationSet.setWholeSubtreeInvalid(); |
+ if (features.contentPseudoCrossing || features.forceSubtree) |
return; |
- } |
+ |
if (!features.id.isEmpty()) |
invalidationSet.addId(features.id); |
if (!features.tagName.isEmpty()) |
@@ -472,8 +473,11 @@ void RuleFeatureSet::addFeaturesToInvalidationSets(const CSSSelector* selector, |
} else { |
if (current->isHostPseudoClass()) |
descendantFeatures.treeBoundaryCrossing = true; |
- if (current->isInsertionPointCrossing()) |
+ if (current->isInsertionPointCrossing()) { |
descendantFeatures.insertionPointCrossing = true; |
+ if (current->pseudoType() == CSSSelector::PseudoContent) |
+ descendantFeatures.contentPseudoCrossing = true; |
+ } |
if (const CSSSelectorList* selectorList = current->selectorList()) { |
ASSERT(supportsInvalidationWithSelectorList(current->pseudoType())); |
for (const CSSSelector* subSelector = selectorList->first(); subSelector; subSelector = CSSSelectorList::next(*subSelector)) |