summaryrefslogtreecommitdiffstats
path: root/test/wpt/tests/resources/declarative-shadow-dom-polyfill.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-21 20:56:19 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-21 20:56:19 +0000
commit0b6210cd37b68b94252cb798598b12974a20e1c1 (patch)
treee371686554a877842d95aa94f100bee552ff2a8e /test/wpt/tests/resources/declarative-shadow-dom-polyfill.js
parentInitial commit. (diff)
downloadnode-undici-upstream.tar.xz
node-undici-upstream.zip
Adding upstream version 5.28.2+dfsg1+~cs23.11.12.3.upstream/5.28.2+dfsg1+_cs23.11.12.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--test/wpt/tests/resources/declarative-shadow-dom-polyfill.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/wpt/tests/resources/declarative-shadow-dom-polyfill.js b/test/wpt/tests/resources/declarative-shadow-dom-polyfill.js
new file mode 100644
index 0000000..99a3e91
--- /dev/null
+++ b/test/wpt/tests/resources/declarative-shadow-dom-polyfill.js
@@ -0,0 +1,25 @@
+/*
+ * Polyfill for attaching shadow trees for declarative Shadow DOM for
+ * implementations that do not support declarative Shadow DOM.
+ *
+ * Note: this polyfill will feature-detect the native feature, and do nothing
+ * if supported.
+ *
+ * See: https://github.com/whatwg/html/pull/5465
+ *
+ * root: The root of the subtree in which to upgrade shadow roots
+ *
+ */
+
+function polyfill_declarative_shadow_dom(root) {
+ if (HTMLTemplateElement.prototype.hasOwnProperty('shadowRootMode'))
+ return;
+ root.querySelectorAll("template[shadowrootmode]").forEach(template => {
+ const mode = template.getAttribute("shadowrootmode");
+ const delegatesFocus = template.hasAttribute("shadowrootdelegatesfocus");
+ const shadowRoot = template.parentNode.attachShadow({ mode, delegatesFocus });
+ shadowRoot.appendChild(template.content);
+ template.remove();
+ polyfill_declarative_shadow_dom(shadowRoot);
+ });
+}