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.
58 lines
2.2 KiB
HTML
58 lines
2.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
|
|
<link rel="help" href="https://github.com/whatwg/html/issues/10854">
|
|
<script src="../../resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
|
|
test(() => {
|
|
class ABElement extends HTMLElement { };
|
|
const scopedRegistry = new CustomElementRegistry;
|
|
scopedRegistry.define('a-b', ABElement);
|
|
assert_throws_js(TypeError, () => new ABElement);
|
|
}, 'A constructor with only a scoped custom element registry definition should fail upon construction');
|
|
|
|
test(() => {
|
|
class CElement extends HTMLElement { };
|
|
const scopedRegistry = new CustomElementRegistry;
|
|
scopedRegistry.define('scoped-c', CElement);
|
|
customElements.define('global-c', CElement);
|
|
const cElement = new CElement;
|
|
assert_equals(cElement.localName, 'global-c');
|
|
}, 'A constructor uses the global registry to create an element');
|
|
|
|
test(() => {
|
|
let fgElement;
|
|
let hiElement;
|
|
class DEElement extends HTMLElement {
|
|
constructor() {
|
|
fgElement = document.createElement('f-g', {customElementRegistry: scopedRegistry2});
|
|
super();
|
|
hiElement = document.createElement('h-i', {customElementRegistry: scopedRegistry2});
|
|
}
|
|
};
|
|
class FGElement extends HTMLElement { }
|
|
class HIElement extends HTMLElement { }
|
|
const scopedRegistry1 = new CustomElementRegistry;
|
|
scopedRegistry1.define('d-e', DEElement);
|
|
const scopedRegistry2 = new CustomElementRegistry;
|
|
scopedRegistry2.define('f-g', FGElement);
|
|
scopedRegistry2.define('h-i', HIElement);
|
|
|
|
const deElement = document.createElement('d-e', {customElementRegistry: scopedRegistry1});
|
|
assert_true(deElement instanceof DEElement);
|
|
assert_equals(deElement.customElementRegistry, scopedRegistry1);
|
|
assert_true(fgElement instanceof FGElement);
|
|
assert_equals(fgElement.customElementRegistry, scopedRegistry2);
|
|
assert_true(hiElement instanceof HIElement);
|
|
assert_equals(hiElement.customElementRegistry, scopedRegistry2);
|
|
}, 'A constructor creating an element from another registry before or after super call should work');
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|