Index: Source/core/dom/shadow/SelectRuleFeatureSet.cpp |
diff --git a/Source/core/dom/shadow/SelectRuleFeatureSet.cpp b/Source/core/dom/shadow/SelectRuleFeatureSet.cpp |
index 23338960589a0e32cc2b31bf1bda67683d39220f..40a398e5502a2ce4fd096b8c6bf87f3b1b64045d 100644 |
--- a/Source/core/dom/shadow/SelectRuleFeatureSet.cpp |
+++ b/Source/core/dom/shadow/SelectRuleFeatureSet.cpp |
@@ -32,11 +32,26 @@ |
#include "core/dom/shadow/SelectRuleFeatureSet.h" |
#include "core/css/CSSSelector.h" |
+#include "core/css/CSSSelectorList.h" |
#include "wtf/BitVector.h" |
namespace blink { |
+void SelectRuleFeatureSet::collectFeaturesFromSelector(const CSSSelector& selector) |
+{ |
+ for (const CSSSelector* current = &selector; current; current = current->tagHistory()) { |
+ if (invalidationSetForSelector(*current)) |
+ continue; |
+ |
+ if (!current->selectorList()) |
+ continue; |
+ |
+ for (const CSSSelector* selector = current->selectorList()->first(); selector; selector = CSSSelectorList::next(*selector)) |
+ collectFeaturesFromSelector(*selector); |
+ } |
+} |
+ |
bool SelectRuleFeatureSet::checkSelectorsForClassChange(const SpaceSplitString& changedClasses) const |
{ |
unsigned changedSize = changedClasses.size(); |