Selector filtering doesn't currently work in shadow trees making style resolve slow.
Created attachment 268451 [details] patch
Comment on attachment 268451 [details] patch Attachment 268451 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/662739 Number of test failures exceeded the failure limit.
Created attachment 268453 [details] Archive of layout-test-results from ews115 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews115 Port: mac-yosemite Platform: Mac OS X 10.10.5
Comment on attachment 268451 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=268451&action=review > Source/WebCore/css/RuleSet.cpp:229 > + // FIXME: Custom pseudo elements are handled but the shadow tree's selector filter. It doesn't know about the main DOM. > + ruleData.disableSelectorFiltering(); The first part is not a complete sentence. > Source/WebCore/css/SelectorFilter.cpp:57 > +bool SelectorFilter::parentStackIsConsistent(const ContainerNode* parentNode) const Is it valid for parentNode to be null in this function? > Source/WebCore/style/StyleTreeResolver.cpp:441 > + SelectorFilterParentPusher parentPusher(m_selectorFilter, slot); > + parentPusher.push(); In other stack-based classes like this, the constructor would push by default, unless some argument told it not to.
Created attachment 268459 [details] patch
Created attachment 268463 [details] patch
> Is it valid for parentNode to be null in this function? Seems so, in some edge cases. Debug bot failures were about that actually. > In other stack-based classes like this, the constructor would push by > default, unless some argument told it not to. Implemented this.
https://trac.webkit.org/r194762