Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Unified Diff: third_party/WebKit/LayoutTests/custom-elements/isolated-worlds.html

Issue 1952893003: Implement custom element construction and some 'define' checks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Implement feedback. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698