Index: Source/core/css/RuleFeature.cpp |
diff --git a/Source/core/css/RuleFeature.cpp b/Source/core/css/RuleFeature.cpp |
index 69ea193992b9bec69ff3659e3801a1fd1dbc4775..bc75b5266a72013a3ab7af5b09c553a65a429748 100644 |
--- a/Source/core/css/RuleFeature.cpp |
+++ b/Source/core/css/RuleFeature.cpp |
@@ -53,6 +53,7 @@ static bool isSkippableComponentForInvalidation(const CSSSelector& selector) |
case CSSSelector::PseudoAfter: |
case CSSSelector::PseudoBackdrop: |
case CSSSelector::PseudoShadow: |
+ case CSSSelector::PseudoContent: |
return true; |
default: |
ASSERT(!selector.isCustomPseudoElement()); |
@@ -288,6 +289,8 @@ void RuleFeatureSet::addFeaturesToInvalidationSet(DescendantInvalidationSet& inv |
{ |
if (features.treeBoundaryCrossing) |
invalidationSet.setTreeBoundaryCrossing(); |
+ if (features.insertionPointCrossing) |
+ invalidationSet.setInsertionPointCrossing(); |
if (features.adjacent) { |
invalidationSet.setWholeSubtreeInvalid(); |
return; |
@@ -310,8 +313,10 @@ void RuleFeatureSet::addFeaturesToInvalidationSets(const CSSSelector& selector, |
if (DescendantInvalidationSet* invalidationSet = invalidationSetForSelector(*current)) { |
addFeaturesToInvalidationSet(*invalidationSet, features); |
} else { |
- if (current->pseudoType() == CSSSelector::PseudoHost) |
+ if (current->isTreeBoundaryCrossing()) |
features.treeBoundaryCrossing = true; |
+ if (current->isInsertionPointCrossing()) |
+ features.insertionPointCrossing = true; |
if (const CSSSelectorList* selectorList = current->selectorList()) { |
ASSERT(current->pseudoType() == CSSSelector::PseudoHost || current->pseudoType() == CSSSelector::PseudoAny || current->pseudoType() == CSSSelector::PseudoNot); |
for (const CSSSelector* selector = selectorList->first(); selector; selector = CSSSelectorList::next(*selector)) |