| <!DOCTYPE html> | |
| <title>Custom Elements: CustomElementRegistry.getName function</title> | |
| <meta name="author" title="Keith Cirkel" href="mailto:keithamus@github.com"> | |
| <meta name="assert" content="CustomElementRegistry.getName function exists"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script> | |
| test(function () { | |
| assert_equals(customElements.getName(class extends HTMLElement {}), null); | |
| }, 'customElements.getName must return null when the registry does not contain an entry with the given constructor'); | |
| test(function () { | |
| assert_throws_js(TypeError, function () { customElements.getName(undefined); }, | |
| 'customElements.getName must throw a TypeError when the element interface is undefined'); | |
| assert_throws_js(TypeError, function () { customElements.getName(null); }, | |
| 'customElements.getName must throw a TypeError when the element interface is null'); | |
| assert_throws_js(TypeError, function () { customElements.getName('foo-bar'); }, | |
| 'customElements.getName must throw a TypeError when the element interface is a string'); | |
| assert_throws_js(TypeError, function () { customElements.getName(1); }, | |
| 'customElements.getName must throw a TypeError when the element interface is a number'); | |
| assert_throws_js(TypeError, function () { customElements.getName({}); }, | |
| 'customElements.getName must throw a TypeError when the element interface is an object'); | |
| assert_throws_js(TypeError, function () { customElements.getName([]) }, | |
| 'customElements.getName must throw a TypeError when the element interface is an array'); | |
| }, 'customElements.getName must throw when the element interface is not a constructor'); | |
| test(function () { | |
| class OtherExistingCustomElement extends HTMLElement {}; | |
| class SecondExistingCustomElement extends HTMLElement {}; | |
| assert_throws_js(TypeError, function () { customElements.getName(customElements.getName(OtherExistingCustomElement)); }, | |
| 'customElements.getName must throw a TypeError when the element interface is undefined'); | |
| customElements.define('other-existing-custom-element', OtherExistingCustomElement); | |
| customElements.define('second-existing-custom-element', SecondExistingCustomElement); | |
| assert_equals(customElements.getName(OtherExistingCustomElement), 'other-existing-custom-element'); | |
| assert_equals(customElements.getName(SecondExistingCustomElement), 'second-existing-custom-element'); | |
| }, 'customElements.getName returns the name of the entry with the given constructor when there is a matching entry.'); | |
| test(function () { | |
| class ButtonCustomBuiltInElement extends HTMLButtonElement {}; | |
| class InputCustomBuiltInElement extends HTMLInputElement {}; | |
| customElements.define('button-custom-built-in-element', ButtonCustomBuiltInElement, { extends: 'button' }); | |
| customElements.define('input-custom-built-in-element', InputCustomBuiltInElement, { extends: 'input' }); | |
| assert_equals(customElements.getName(ButtonCustomBuiltInElement), 'button-custom-built-in-element'); | |
| assert_equals(customElements.getName(InputCustomBuiltInElement), 'input-custom-built-in-element'); | |
| }, 'customElements.getName returns the name of the entry with the given customized built in constructor when there is a matching entry.'); | |
| </script> |