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..be037d420bdfb0fbd5914e86be16187ea21a79d9 100644 |
--- a/third_party/WebKit/Source/core/css/RuleFeature.cpp |
+++ b/third_party/WebKit/Source/core/css/RuleFeature.cpp |
@@ -173,7 +173,8 @@ bool supportsInvalidationWithSelectorList(CSSSelector::PseudoType pseudo) |
|| pseudo == CSSSelector::PseudoCue |
|| pseudo == CSSSelector::PseudoHost |
|| pseudo == CSSSelector::PseudoHostContext |
- || pseudo == CSSSelector::PseudoNot; |
+ || pseudo == CSSSelector::PseudoNot |
+ || pseudo == CSSSelector::PseudoSlotted; |
} |
#endif // ENABLE(ASSERT) |
@@ -194,6 +195,9 @@ bool requiresSubtreeInvalidation(const CSSSelector& selector) |
case CSSSelector::PseudoHostContext: |
// :host-context matches a shadow host, yet the simple selectors inside |
// :host-context matches an ancestor of the shadow host. |
+ case CSSSelector::PseudoSlotted: |
+ // TODO(kochi): This recalculates a bit more than necessary. Find out a way |
+ // to avoid unnecessary recalculation. |
rune
2016/01/09 01:15:36
This shouldn't be necessary as long as we extract
|
return true; |
default: |
ASSERT(supportsInvalidation(selector.pseudoType())); |
@@ -472,7 +476,7 @@ void RuleFeatureSet::addFeaturesToInvalidationSets(const CSSSelector* selector, |
} else { |
if (current->isHostPseudoClass()) |
descendantFeatures.treeBoundaryCrossing = true; |
- if (current->isInsertionPointCrossing()) |
+ if (current->isInsertionPointCrossing() || current->isSlottedPseudoElement()) |
descendantFeatures.insertionPointCrossing = true; |
if (const CSSSelectorList* selectorList = current->selectorList()) { |
ASSERT(supportsInvalidationWithSelectorList(current->pseudoType())); |