| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../js/resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <pre id="console"> |
| This tests the correctness of includers of forwarded children. |
| Note that this test needs internals object thus cannot run outside DRT. |
| </pre> |
| <div id="container"></div> |
| <script> |
| var container = document.getElementById("container"); |
| |
| var shadowRoot = null; |
| |
| var elementWithoutShadow = document.createElement("div"); |
| container.appendChild(elementWithoutShadow); |
| var childOfElementWithoutShadow = document.createElement("span"); |
| elementWithoutShadow.appendChild(childOfElementWithoutShadow); |
| container.offsetLeft; |
| shouldBe("internals.includerFor(childOfElementWithoutShadow)", "null"); |
| |
| var elementWithShadow = document.createElement("div"); |
| container.appendChild(elementWithShadow); |
| var shadowRootOfElementWithShadow = internals.ensureShadowRoot(elementWithShadow); |
| shadowRootOfElementWithShadow.appendChild(document.createElement("div")); // Gives non-content child. |
| var childOfElementWithShadow = document.createElement("span"); |
| elementWithShadow.appendChild(childOfElementWithShadow); |
| container.offsetLeft; |
| shouldBe("internals.includerFor(childOfElementWithShadow)", "null"); |
| |
| var elementWithShadowContent = document.createElement("div"); |
| container.appendChild(elementWithShadowContent); |
| var shadowRootOfElementWithShadowContent = internals.ensureShadowRoot(elementWithShadowContent); |
| var shadowContentOfElementWithShadowContent = internals.createContentElement(); |
| shadowRootOfElementWithShadowContent.appendChild(shadowContentOfElementWithShadowContent); |
| var childOfElementWithShadowContent = document.createElement("span"); |
| elementWithShadowContent.appendChild(childOfElementWithShadowContent); |
| container.offsetLeft; |
| shouldBe("internals.includerFor(childOfElementWithShadowContent)", "shadowContentOfElementWithShadowContent"); |
| |
| // |
| // Testing dynamic change |
| // |
| var movingChild = childOfElementWithShadowContent; |
| |
| // Removing |
| elementWithShadowContent.removeChild(movingChild); |
| shouldBe("internals.includerFor(movingChild)", "null"); |
| |
| // Moving to content-less tree |
| elementWithShadow.appendChild(movingChild); |
| shouldBe("internals.includerFor(movingChild)", "null"); |
| elementWithShadow.removeChild(movingChild); |
| |
| // Moving to another content-full tree |
| var anotherElementWithShadowContent = document.createElement("div"); |
| container.appendChild(anotherElementWithShadowContent); |
| var anotherShadowRootOfElementWithShadowContent = internals.ensureShadowRoot(anotherElementWithShadowContent); |
| var anotherShadowContentOfElementWithShadowContent = internals.createContentElement(); |
| anotherShadowRootOfElementWithShadowContent.appendChild(anotherShadowContentOfElementWithShadowContent); |
| |
| anotherElementWithShadowContent.appendChild(movingChild); |
| container.offsetLeft; |
| shouldBe("internals.includerFor(movingChild)", "anotherShadowContentOfElementWithShadowContent"); |
| </script> |
| <script src="../../js/resources/js-test-post.js"></script> |
| </body> |
| </html> |