Index: Source/core/css/RuleFeature.h |
diff --git a/Source/core/css/RuleFeature.h b/Source/core/css/RuleFeature.h |
index b83f357bf04ef89ba6663677dab3e152f6447bb7..5eeb6f1504548ca72ea3c559bef428ed5344729b 100644 |
--- a/Source/core/css/RuleFeature.h |
+++ b/Source/core/css/RuleFeature.h |
@@ -22,6 +22,7 @@ |
#ifndef RuleFeature_h |
#define RuleFeature_h |
+#include "core/css/CSSSelector.h" |
#include "core/css/invalidation/DescendantInvalidationSet.h" |
#include "core/css/invalidation/StyleInvalidator.h" |
#include "wtf/Forward.h" |
@@ -30,7 +31,6 @@ |
namespace WebCore { |
-class CSSSelector; |
class CSSSelectorList; |
class Document; |
class Node; |
@@ -87,10 +87,9 @@ public: |
void scheduleStyleInvalidationForClassChange(const SpaceSplitString& changedClasses, Element&); |
void scheduleStyleInvalidationForClassChange(const SpaceSplitString& oldClasses, const SpaceSplitString& newClasses, Element&); |
- |
void scheduleStyleInvalidationForAttributeChange(const QualifiedName& attributeName, Element&); |
- |
void scheduleStyleInvalidationForIdChange(const AtomicString& oldId, const AtomicString& newId, Element&); |
+ void scheduleStyleInvalidationForPseudoChange(CSSSelector::PseudoType, Element&); |
bool hasIdsInSelectors() const |
{ |
@@ -109,6 +108,7 @@ public: |
private: |
typedef HashMap<AtomicString, RefPtr<DescendantInvalidationSet> > InvalidationSetMap; |
+ typedef HashMap<CSSSelector::PseudoType, RefPtr<DescendantInvalidationSet>, WTF::IntHash<unsigned>, WTF::UnsignedWithZeroKeyHashTraits<unsigned> > PseudoTypeInvalidationSetMap; |
struct FeatureMetadata { |
FeatureMetadata() |
@@ -132,13 +132,14 @@ private: |
static InvalidationSetMode invalidationSetModeForSelector(const CSSSelector&); |
- void collectFeaturesFromSelector(const CSSSelector&, FeatureMetadata&, InvalidationSetMode); |
- void collectFeaturesFromSelectorList(const CSSSelectorList*, FeatureMetadata&, InvalidationSetMode); |
+ void collectFeaturesFromSelector(const CSSSelector&, FeatureMetadata&, InvalidationSetMode, bool seenCombinator); |
+ void collectFeaturesFromSelectorList(const CSSSelectorList*, FeatureMetadata&, InvalidationSetMode, bool seenCombinator); |
DescendantInvalidationSet& ensureClassInvalidationSet(const AtomicString& className); |
DescendantInvalidationSet& ensureAttributeInvalidationSet(const AtomicString& attributeName); |
DescendantInvalidationSet& ensureIdInvalidationSet(const AtomicString& attributeName); |
- DescendantInvalidationSet* invalidationSetForSelector(const CSSSelector&); |
+ DescendantInvalidationSet& ensurePseudoInvalidationSet(CSSSelector::PseudoType); |
+ DescendantInvalidationSet* invalidationSetForSelector(const CSSSelector&, bool seenCombinator); |
InvalidationSetMode updateInvalidationSets(const CSSSelector&); |
@@ -161,6 +162,7 @@ private: |
InvalidationSetMap m_classInvalidationSets; |
InvalidationSetMap m_attributeInvalidationSets; |
InvalidationSetMap m_idInvalidationSets; |
+ PseudoTypeInvalidationSetMap m_pseudoInvalidationSets; |
bool m_targetedStyleRecalcEnabled; |
StyleInvalidator m_styleInvalidator; |
}; |