| Index: Source/core/css/RuleFeature.cpp
|
| diff --git a/Source/core/css/RuleFeature.cpp b/Source/core/css/RuleFeature.cpp
|
| index b4d4bc3dbc210b307cbc7482f5c5e7b17bcf96dd..a4312b39b1afc827ef2cf2dc30f46dc0b7141c31 100644
|
| --- a/Source/core/css/RuleFeature.cpp
|
| +++ b/Source/core/css/RuleFeature.cpp
|
| @@ -113,6 +113,7 @@ static bool supportsInvalidation(CSSSelector::PseudoType type)
|
| case CSSSelector::PseudoInRange:
|
| case CSSSelector::PseudoOutOfRange:
|
| case CSSSelector::PseudoUnresolved:
|
| + case CSSSelector::PseudoContent:
|
| case CSSSelector::PseudoHost:
|
| case CSSSelector::PseudoShadow:
|
| case CSSSelector::PseudoListBox:
|
| @@ -175,7 +176,6 @@ static bool requiresSubtreeInvalidation(const CSSSelector& selector)
|
| case CSSSelector::PseudoCue:
|
| case CSSSelector::PseudoFutureCue:
|
| case CSSSelector::PseudoPastCue:
|
| - case CSSSelector::PseudoContent:
|
| case CSSSelector::PseudoSpatialNavigationFocus:
|
| // FIXME: Most pseudo classes/elements above can be supported and moved
|
| // to assertSupportedPseudo(). Move on a case-by-case basis. If they
|
| @@ -373,6 +373,8 @@ void RuleFeatureSet::addFeaturesToInvalidationSet(DescendantInvalidationSet& inv
|
| {
|
| if (features.treeBoundaryCrossing)
|
| invalidationSet.setTreeBoundaryCrossing();
|
| + if (features.insertionPointCrossing)
|
| + invalidationSet.setInsertionPointCrossing();
|
| if (features.adjacent) {
|
| invalidationSet.setWholeSubtreeInvalid();
|
| return;
|
| @@ -395,8 +397,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))
|
|
|