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 d732d585ab686d0a1b43c810e621cc032beb9b41..512207af67f2f0ddfc482ef28ad30283ce31a16c 100644 |
--- a/third_party/WebKit/Source/core/css/RuleFeature.cpp |
+++ b/third_party/WebKit/Source/core/css/RuleFeature.cpp |
@@ -587,15 +587,15 @@ void RuleFeatureSet::collectFeaturesFromSelector(const CSSSelector& selector, Ru |
metadata.maxDirectAdjacentSelectors = maxDirectAdjacentSelectors; |
maxDirectAdjacentSelectors = 0; |
} |
- if (current->isSiblingSelector()) |
+ if (!metadata.foundInsertionPointCrossing && current->isSiblingSelector()) |
kochi
2016/02/15 04:10:17
If foundInsertionPointCrossing is only used for th
rune
2016/02/15 07:27:04
It's passed recursively down to selectorList below
rune
2016/02/15 08:12:07
Done.
kochi
2016/02/15 10:10:56
Thanks for explanation. I overlooked that it is p
|
metadata.foundSiblingSelector = true; |
- const CSSSelectorList* selectorList = current->selectorList(); |
- if (!selectorList) |
- continue; |
- |
- for (const CSSSelector* subSelector = selectorList->first(); subSelector; subSelector = CSSSelectorList::next(*subSelector)) |
- collectFeaturesFromSelector(*subSelector, metadata); |
+ if (const CSSSelectorList* selectorList = current->selectorList()) { |
+ for (const CSSSelector* subSelector = selectorList->first(); subSelector; subSelector = CSSSelectorList::next(*subSelector)) |
+ collectFeaturesFromSelector(*subSelector, metadata); |
+ } |
+ if (current->relationIsAffectedByPseudoContent()) |
+ metadata.foundInsertionPointCrossing = true; |
} |
ASSERT(!maxDirectAdjacentSelectors); |