blob: 9d1b60df5e314f82f61e3ed2b93501d66c96cbad [file] [log] [blame]
<!DOCTYPE html>
<!--
TODO(yosin): We should upstream to wpt test.
This file is taken from https://github.com/kojiishi/web-platform-tests/blob/53908d773012edf931047674f7afe3975bc1820f/custom-elements/custom-elements-registry/get.html
-->
<title>Custom Elements: CustomElementRegistry.get</title>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<body>
<div id="log"></div>
<script>
'use strict';
(() => {
// https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementregistry-whendefined
// Use window from iframe to isolate the test.
function setup() {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const testWindow = iframe.contentWindow;
const customElements = testWindow.customElements;
if (!customElements)
return Promise.reject('This test requires window.customElements');
if (!('get' in customElements))
return Promise.reject('This test requires window.customElements.get');
return Promise.resolve(customElements);
}
promise_test(() => setup()
.then(customElements => {
// 1. If this CustomElementRegistry contains an entry with name name,
// then return that entry's constructor.
const name = 'test-get-existing';
class C extends HTMLElement {};
customElements.define(name, C);
assert_equals(customElements.get(name), C, 'get() returns the constructor')
return Promise.resolve(customElements);
}).then(customElements => {
// 2. Otherwise, return undefined.
assert_equals(customElements.get('test-get-not-defined'), undefined,
'get() returns undefined for not-defined name');
}).catch(reason => { throw reason }));
})();
</script>
</body>