Bug 1528726 [wpt PR 15392] - HTML: nested browsing contexts name attribute, a=testonly
authorAnne van Kesteren <annevk@annevk.nl>
Tue, 05 Mar 2019 12:15:49 +0000
changeset 522451 289af7fabdef4962814a42983c5a1f88710fcaee
parent 522450 d04acd61397bb9e78d0397294931e47d758d7fcf
child 522452 511e44d2a68e08fdeaca1b69d769fda2acabc337
push id10871
push usercbrindusan@mozilla.com
push dateMon, 18 Mar 2019 15:49:32 +0000
treeherdermozilla-beta@018abdd16060 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1528726, 15392
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1528726 [wpt PR 15392] - HTML: nested browsing contexts name attribute, a=testonly Automatic update from web-platform-tests HTML: nested browsing contexts name attribute For https://github.com/whatwg/html/pull/4367. -- wpt-commits: e18c05e5d1ee2c9a2343dda4f8bb38071740ab8a wpt-pr: 15392
testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/name-attribute.window.js
testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/resources/post-to-parent.html
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/name-attribute.window.js
@@ -0,0 +1,58 @@
+// META: script=/common/get-host-info.sub.js
+
+[
+  "frame", // This works without <frameset>, so great
+  "iframe",
+  "object",
+  "embed",
+].forEach(element => {
+  [
+    null,
+    "",
+    "initialvalue"
+  ].forEach(initialNameValue => {
+    [
+      "same-origin",
+      "cross-origin"
+    ].forEach(originType => {
+      async_test(t => {
+        const ident = element + initialNameValue + originType,
+              file = `${new URL("resources/post-to-parent.html", location.href).pathname}?ident=${ident}`,
+              child = originType === "same-origin" ? file : `${get_host_info().HTTP_REMOTE_ORIGIN}${file}`,
+              frame = document.createElement(element),
+              expectedNameValue = initialNameValue || "";
+        let state = "set";
+        const listener = t.step_func(e => {
+          if (e.data.ident === ident) {
+            assert_equals(e.data.name, expectedNameValue); // This check is always the same
+            if (state === "set") {
+              frame.setAttribute("name", "meh");
+              state = "remove"
+              e.source.postMessage(null, "*");
+              return;
+            }
+            if (state === "remove") {
+              frame.removeAttribute("name");
+              state = "done";
+              e.source.postMessage(null, "*");
+              return;
+            }
+            if (state === "done") {
+              t.done();
+            }
+          }
+        });
+        frame.setAttribute(element === "object" ? "data" : "src", child);
+        if (initialNameValue !== null) {
+          frame.setAttribute("name", initialNameValue);
+        }
+        t.add_cleanup(() => {
+          self.removeEventListener("message", listener);
+          frame.remove();
+        });
+        self.addEventListener("message", listener);
+        document.body.append(frame);
+      }, `${originType} <${element}${initialNameValue !== null ? ' name=' + initialNameValue : ''}>`);
+    });
+  });
+});
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/resources/post-to-parent.html
@@ -0,0 +1,6 @@
+<script>
+const ident = new URL(location).searchParams.get("ident"),
+      post = () => parent.postMessage({ name: window.name, ident }, "*");
+onmessage = () => post();
+post();
+</script>