| 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 425fc784e8edda35effaefa7a2e2f052e23ff395..432c445437db3c1c448010e9d2ba9d6e0060bc42 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()));
|
| @@ -473,7 +477,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 (current->pseudoType() == CSSSelector::PseudoContent)
|
| descendantFeatures.contentPseudoCrossing = true;
|
|
|