UNPKG

@webcomponents/custom-elements

Version:
81 lines (68 loc) 2.19 kB
<!DOCTYPE html> <script src="../resources/testharness.js"></script> <script src="../resources/testharnessreport.js"></script> <script src="spec/resources/custom-elements-helpers.js"></script> <body> <script> 'use strict'; (() => { if (!window.testRunner) { // Requires evaluateScriptInIsolatedWorld return; } promise_test((t) => { return create_window_in_test(t) .then((w) => { function in_isolated_world() { let f = document.querySelector('iframe'); let w = f.contentWindow; let e = w.document.body.lastChild; w.postMessage( e.localName == 'a-a' && Object.getPrototypeOf(e) === w.HTMLElement.prototype, '*'); } var p = new Promise((resolve) => { w.addEventListener('message', t.step_func((event) => { assert_true(event.data, 'the custom element prototype should not appear in ' + 'isolated worlds'); resolve(); })); }); class X extends w.HTMLElement {} w.customElements.define('a-a', X); w.document.body.appendChild(new X); testRunner.evaluateScriptInIsolatedWorld( 1, `(${in_isolated_world.toString()})();`); return p; }); }, 'Retrieve a custom element in an isolated world'); // TODO(dominicc): Test retrieving a custom element that has not been wrapped // before in any world, when upgrades are implemented. promise_test((t) => { return create_window_in_test(t) .then((w) => { function in_isolated_world() { let f = document.querySelector('iframe'); let w = f.contentWindow; w.postMessage(`customElements=${w.customElements}`, '*'); } var p = new Promise((resolve) => { w.addEventListener('message', t.step_func((event) => { assert_equals(event.data, 'customElements=null', 'the customElements property should be null ' + 'in isolated worlds'); resolve(); })); }); testRunner.evaluateScriptInIsolatedWorld( 1, `(${in_isolated_world.toString()})();`); return p; }); }, 'No custom elements registry in isolated worlds'); })(); </script>