| 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.
|
| 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()));
|
|
|