mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-03 04:52:06 +02:00
Includes reimporting the test we already had, which has changed significantly. Most of these fail, but importing them now to track progress.
94 lines
4.2 KiB
HTML
94 lines
4.2 KiB
HTML
<!DOCTYPE html>
|
|
<title>Tests the registry assignment during element mutation</title>
|
|
<meta name="author" title="Jayson Chen" href="mailto:jaysonchen@microsoft.com"></meta>
|
|
<link rel="help" href="https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries">
|
|
<link rel="help" href="https://github.com/WICG/webcomponents/issues/923">
|
|
<script src="../../resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
|
|
<body>
|
|
<div id="host">
|
|
<div id="shadow-host-1">
|
|
<template shadowrootmode="open" shadowrootclonable="true" shadowrootcustomelementregistry>
|
|
<div id="shadow-host-1-child"></div>
|
|
</template>
|
|
</div>
|
|
<div id="shadow-host-2">
|
|
<template shadowrootmode="open" shadowrootclonable="true" shadowrootcustomelementregistry>
|
|
<div id="shadow-host-2-child"></div>
|
|
</template>
|
|
</div>
|
|
</div>
|
|
|
|
<template id="template">
|
|
<div id="template-host-1">
|
|
<template shadowrootmode="open" shadowrootclonable><x-foo></x-foo></template>
|
|
</div>
|
|
<div id="template-host-2">
|
|
<template shadowrootmode="open" shadowrootclonable shadowrootcustomelementregistry><x-foo></x-foo></template>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
function runTests(mutation, mutationName) {
|
|
test(() => {
|
|
const registry = new CustomElementRegistry;
|
|
|
|
const element = document.createElement('new-element');
|
|
assert_equals(element.customElementRegistry, window.customElements);
|
|
|
|
mutation(document.body, element);
|
|
const shadow = document.createElement('div').attachShadow({mode: 'open', customElementRegistry: registry})
|
|
mutation(shadow, element);
|
|
assert_not_equals(element.customElementRegistry, registry);
|
|
|
|
mutation(document.body, element);
|
|
assert_equals(element.customElementRegistry, window.customElements);
|
|
}, "An element with global registry should not change its registry when run " + mutationName + " into a shadow tree with scoped registry.")
|
|
|
|
test(() => {
|
|
const clone = host.cloneNode(true);
|
|
const shadowRoot1 = clone.querySelector('#shadow-host-1').shadowRoot;
|
|
const element = shadowRoot1.querySelector('#shadow-host-1-child');
|
|
|
|
const registry1 = new CustomElementRegistry;
|
|
registry1.initialize(shadowRoot1);
|
|
assert_equals(element.customElementRegistry, registry1);
|
|
|
|
mutation(document.querySelector('#host'), element);
|
|
assert_equals(element.customElementRegistry, registry1);
|
|
}, "An element with scoped registry should not change its registry when run " + mutationName + " out of the shadow tree.")
|
|
|
|
test(() => {
|
|
const clone = host.cloneNode(true);
|
|
const shadowRoot1 = clone.querySelector('#shadow-host-1').shadowRoot;
|
|
const shadowRoot2 = clone.querySelector('#shadow-host-2').shadowRoot;
|
|
const element = shadowRoot1.querySelector('#shadow-host-1-child');
|
|
|
|
const registry1 = new CustomElementRegistry;
|
|
const registry2 = new CustomElementRegistry;
|
|
registry1.initialize(shadowRoot1);
|
|
registry2.initialize(shadowRoot2);
|
|
assert_equals(element.customElementRegistry, registry1);
|
|
|
|
mutation(shadowRoot2, element);
|
|
assert_equals(element.customElementRegistry, registry1);
|
|
}, "An element with scoped registry should not change its registry when run " + mutationName + " into another shadow tree with different scoped registry.")
|
|
};
|
|
|
|
runTests(function (parent, child) { parent.append(child); }, "append");
|
|
runTests(function (parent, child) { parent.appendChild(child); }, "appendChild");
|
|
runTests(function (parent, child) { parent.prepend(child); }, "prepend");
|
|
|
|
test(() => {
|
|
customElements.define('x-foo', class extends HTMLElement {});
|
|
const template = document.getElementById('template');
|
|
document.body.append(template.content.cloneNode(true));
|
|
assert_equals(document.querySelector('#template-host-1').shadowRoot.querySelector('x-foo').customElementRegistry, customElements);
|
|
assert_equals(document.querySelector('#template-host-2').shadowRoot.querySelector('x-foo').customElementRegistry, null);
|
|
}, "Declarative shadow DOM with shadowrootcustomelementregistry attribute without registry initialized should remain null registry after adoption.")
|
|
|
|
</script>
|
|
</body>
|