summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-shadow-parts/support
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/css-shadow-parts/support')
-rw-r--r--testing/web-platform/tests/css/css-shadow-parts/support/shadow-helper.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-shadow-parts/support/shadow-helper.js b/testing/web-platform/tests/css/css-shadow-parts/support/shadow-helper.js
new file mode 100644
index 0000000000..94accd6b1f
--- /dev/null
+++ b/testing/web-platform/tests/css/css-shadow-parts/support/shadow-helper.js
@@ -0,0 +1,33 @@
+// Takes a root element and a list of ids of shadow host elements. Each id refers to a shadow host
+// inside the previous id's shadow tree.
+function getElementByShadowIds(root, ids) {
+ for (var i = 0; ;i++) {
+ var host = root.getElementById(ids[i]);
+ if (host == null) {
+ throw "No element found: i=" + i + " id=" + ids[i] + ". Root was " + root;
+ }
+ if (i == ids.length - 1) {
+ return host;
+ }
+ root = host.shadowRoot;
+ if (root == null) {
+ throw "No shadowRoot found: i=" + i + " id=" + ids[i] + ". Host was " + host;
+ }
+ }
+}
+
+// Installs a mininal custom element based on this template.
+function installCustomElement(element_name, template_id) {
+ ceClass = class extends HTMLElement {
+ constructor() {
+ super();
+ var template = document
+ .getElementById(template_id)
+ .content;
+ this
+ .attachShadow({mode: 'open'})
+ .appendChild(template.cloneNode(true));
+ }
+ };
+ window.customElements.define(element_name, ceClass);
+}