| Index: third_party/WebKit/LayoutTests/custom-elements/isolated-worlds.html
|
| diff --git a/third_party/WebKit/LayoutTests/custom-elements/isolated-worlds.html b/third_party/WebKit/LayoutTests/custom-elements/isolated-worlds.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f7e635ec025e3d9f80ef11e99d0400bde50cbf57
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/custom-elements/isolated-worlds.html
|
| @@ -0,0 +1,81 @@
|
| +<!DOCTYPE html>
|
| +<script src="../resources/testharness.js"></script>
|
| +<script src="../resources/testharness-helpers.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>
|
|
|