Index: Source/core/css/RuleFeature.h |
diff --git a/Source/core/css/RuleFeature.h b/Source/core/css/RuleFeature.h |
index b29330ddc23634820c7eda2b1a691f457d49e51d..1726a4148f60a53df7be2f37382445b48a63316f 100644 |
--- a/Source/core/css/RuleFeature.h |
+++ b/Source/core/css/RuleFeature.h |
@@ -125,23 +125,14 @@ private: |
unsigned maxDirectAdjacentSelectors; |
}; |
- enum InvalidationSetMode { |
- AddFeatures, |
- UseLocalStyleChange, |
- UseSubtreeStyleChange |
- }; |
- |
- static InvalidationSetMode invalidationSetModeForSelector(const CSSSelector&); |
- |
- void collectFeaturesFromSelector(const CSSSelector&, FeatureMetadata&, InvalidationSetMode); |
- void collectFeaturesFromSelectorList(const CSSSelectorList*, FeatureMetadata&, InvalidationSetMode); |
+ void collectFeaturesFromSelector(const CSSSelector&, FeatureMetadata&); |
DescendantInvalidationSet& ensureClassInvalidationSet(const AtomicString& className); |
DescendantInvalidationSet& ensureAttributeInvalidationSet(const AtomicString& attributeName); |
DescendantInvalidationSet& ensureIdInvalidationSet(const AtomicString& attributeName); |
DescendantInvalidationSet& ensurePseudoInvalidationSet(CSSSelector::PseudoType); |
- InvalidationSetMode updateInvalidationSets(const CSSSelector&); |
+ void updateInvalidationSets(const CSSSelector&); |
struct InvalidationSetFeatures { |
InvalidationSetFeatures() |
@@ -149,7 +140,11 @@ private: |
, treeBoundaryCrossing(false) |
, adjacent(false) |
, insertionPointCrossing(false) |
+ , forceSubtree(false) |
{ } |
+ |
+ bool useSubtreeInvalidation() const { return forceSubtree || adjacent; } |
+ |
Vector<AtomicString> classes; |
Vector<AtomicString> attributes; |
AtomicString id; |
@@ -158,10 +153,14 @@ private: |
bool treeBoundaryCrossing; |
bool adjacent; |
bool insertionPointCrossing; |
+ bool forceSubtree; |
}; |
- static void extractInvalidationSetFeature(const CSSSelector&, InvalidationSetFeatures&); |
- const CSSSelector* extractInvalidationSetFeatures(const CSSSelector&, InvalidationSetFeatures&, bool negated); |
+ static bool extractInvalidationSetFeature(const CSSSelector&, InvalidationSetFeatures&); |
+ |
+ enum UseFeaturesType { UseFeatures, ForceSubtree }; |
+ |
+ std::pair<const CSSSelector*, UseFeaturesType> extractInvalidationSetFeatures(const CSSSelector&, InvalidationSetFeatures&, bool negated); |
void addFeaturesToInvalidationSet(DescendantInvalidationSet&, const InvalidationSetFeatures&); |
void addFeaturesToInvalidationSets(const CSSSelector&, InvalidationSetFeatures&); |