| <script> |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| </script> |
| |
| <template id=shadow1><slot></slot></template> |
| <template id=shadow2><div><slot></slot></div>text</template> |
| <template id=shadow3><slot><slot-default>text</slot-default></slot></div></template> |
| <template id=shadow4><div shadow=shadow41>text<slot></slot>text</div></template> |
| <template id=shadow41><div><slot></slot></div></template> |
| |
| <template test=1><div shadow=shadow1></div></template> |
| <template test=2><div shadow=shadow1>text</div></template> |
| <template test=3><div shadow=shadow1>text<div></div></div></template> |
| <template test=4><div shadow=shadow1><div>text</div><div>text</div></div></template> |
| |
| <template test=5><div shadow=shadow2></div></template> |
| <template test=6><div shadow=shadow2>text</div></template> |
| <template test=7><div shadow=shadow2>text<div></div></div></template> |
| <template test=8><div shadow=shadow2><div>text</div><div>text</div></div></template> |
| |
| <template test=9><div shadow=shadow3></div></template> |
| <template test=10><div shadow=shadow3>text</div></template> |
| <template test=11><div shadow=shadow3>text<div></div></div></template> |
| <template test=12><div shadow=shadow3><div>text</div><div>text</div></div></template> |
| |
| <template test=13><div shadow=shadow4></div></template> |
| <template test=14><div shadow=shadow4>text</div></template> |
| <template test=15><div shadow=shadow4>text<div></div></div></template> |
| <template test=16><div shadow=shadow4><div>text</div><div>text</div></div></template> |
| |
| <body> |
| <pre id=console></pre> |
| <script> |
| function installShadows(tree) |
| { |
| for (const host of tree.querySelectorAll("[shadow]")) { |
| var shadowId = host.getAttribute("shadow"); |
| var shadowContents = document.querySelector("#"+shadowId).content.cloneNode(true); |
| |
| installShadows(shadowContents); |
| |
| var shadowRoot = host.attachShadow({ mode: "open" }); |
| shadowRoot.appendChild(shadowContents); |
| } |
| } |
| |
| function findSlots(root) |
| { |
| let slots = []; |
| for (const host of root.querySelectorAll("[shadow]")) { |
| for (const slot of host.shadowRoot.querySelectorAll("slot")) |
| slots.push(slot); |
| Array.prototype.push.apply(slots, findSlots(host.shadowRoot)); |
| } |
| return slots; |
| } |
| |
| var console = document.querySelector("#console"); |
| |
| for (const testTemplate of document.querySelectorAll("[test]")) { |
| var test = testTemplate.content.cloneNode(true); |
| installShadows(test); |
| console.innerText += "\nTest " + testTemplate.getAttribute("test") + "\n"; |
| console.innerText += internals.composedTreeAsText(test); |
| console.innerText += "Slot trees:\n"; |
| for (const slot of findSlots(test)) |
| console.innerText += internals.composedTreeAsText(slot) + "\n"; |
| } |
| |
| </script> |
| </body> |