57 lines
2.2 KiB
HTML
57 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>
|