| <!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> |