haikuwebkit/LayoutTests/fast/shadow-dom/nth-node-on-shadow-child-ex...

8 lines
193 B
HTML
Raw Permalink Normal View History

:first-child, :last-child, :nth-child, and :nth-of-type don't work on shadow root's children https://bugs.webkit.org/show_bug.cgi?id=166748 <rdar://problem/29649177> Reviewed by Yusuke Suzuki. Source/WebCore: Added the support for matching positional pseudo classes. For now, we invalidate whenever a child node of a non-UA ShadowRoot is mutated instead of a fine-grained style invalidation as done for regular elements. Tests: fast/shadow-dom/nth-node-on-shadow-child-invalidation.html fast/shadow-dom/nth-node-on-shadow-child-no-jit.html fast/shadow-dom/nth-node-on-shadow-child.html * css/SelectorChecker.cpp: (WebCore::SelectorChecker::checkOne const): * cssjit/SelectorCompiler.cpp: (WebCore::SelectorCompiler::SelectorCodeGenerator::generateWalkToParentElementOrShadowRoot): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsFirstChild): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLastChild): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsOnlyChild): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthChildParentCheckAndRelationUpdate): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChildOf): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthLastChildParentCheckAndRelationUpdate): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChild): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChildOf): * dom/ShadowRoot.cpp: (WebCore::ShadowRoot::childrenChanged): Invalidate the subtree whenever a child node is mutated. * dom/ShadowRoot.h: * domjit/DOMJITHelpers.h: (WebCore::DOMJIT::branchTestIsShadowRootFlagOnNode): Added. (WebCore::DOMJIT::branchTestIsElementOrShadowRootFlagOnNode): Added. LayoutTests: Added ref tests for matching positional pseudo classes on direct child of shadow roots during style resolutions and DOM API matching with C++ selector checker and selector compilers. Also added a test for invalidating these selectors. * fast/shadow-dom/nth-node-on-shadow-child-expected.html: Added. * fast/shadow-dom/nth-node-on-shadow-child-invalidation-expected.html: Added. * fast/shadow-dom/nth-node-on-shadow-child-invalidation.html: Added. * fast/shadow-dom/nth-node-on-shadow-child-no-jit-expected.html: Added. * fast/shadow-dom/nth-node-on-shadow-child-no-jit.html: Added. * fast/shadow-dom/nth-node-on-shadow-child.html: Added. Canonical link: https://commits.webkit.org/204500@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235917 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-09-11 23:00:31 +00:00
<!DOCTYPE html>
<html>
<body>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<div style="width: 100px; height: 100px; background: green;"></div>
</body>
</html>