summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/shadow-dom/declarative/declarative-after-attachshadow.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/shadow-dom/declarative/declarative-after-attachshadow.html')
-rw-r--r--testing/web-platform/tests/shadow-dom/declarative/declarative-after-attachshadow.html46
1 files changed, 46 insertions, 0 deletions
diff --git a/testing/web-platform/tests/shadow-dom/declarative/declarative-after-attachshadow.html b/testing/web-platform/tests/shadow-dom/declarative/declarative-after-attachshadow.html
new file mode 100644
index 0000000000..bfe2d66cfa
--- /dev/null
+++ b/testing/web-platform/tests/shadow-dom/declarative/declarative-after-attachshadow.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<title>Declarative Shadow DOM after attachShadow</title>
+<link rel='author' href='mailto:masonf@chromium.org'>
+<link rel='help' href='https://github.com/whatwg/dom/issues/831'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+
+<body>
+<script>
+let gotHost = false;
+function myObserver(mutationsList, observer) {
+ for (let mutation of mutationsList) {
+ for (let n of mutation.addedNodes) {
+ if (n.id === 'host') {
+ gotHost = true;
+ const shadowRoot = n.attachShadow( {mode: 'closed'});
+ assert_true(!!shadowRoot, 'Unable to attach shadow imperatively');
+ }
+ }
+ }
+}
+const observer = new MutationObserver(myObserver);
+observer.observe(document.body, { childList: true, subtree: true });
+assert_false(gotHost, 'No mutations yet');
+</script>
+
+<div id=host>
+ <!-- Ensure observer runs at this point (https://github.com/web-platform-tests/wpt/issues/35393) -->
+ <script> // some content, which shouldn't be necessary </script>
+ <template shadowrootmode=open>
+ Content
+ <slot>Fallback</slot>
+ </template>
+</div>
+
+<script>
+test(t => {
+ t.add_cleanup(function() { observer.disconnect(); });
+ assert_true(gotHost);
+ let host = document.querySelector('#host');
+ let template = host.querySelector('template');
+ assert_true(!!template, 'Declarative shadow attach should fail, so template should be left over');
+ assert_true(!host.shadowRoot, 'Shadow root should be closed (from attachShadow call)');
+}, 'Declarative Shadow DOM: declarative shadow should fail if attachShadow() already called');
+</script>
+</body>