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 464220 bcd8267fa1131118669ce89a47d1161aa026f97c
parent 464219 51f0cd0c1621b937102d5f6969d065cdfa013cbb
child 464221 ac00cd4c7abc76f10152db22f8d0a75861cf9005
push id35713
push usercbrindusan@mozilla.com
push dateFri, 15 Mar 2019 21:55:43 +0000
treeherdermozilla-central@66b1aba3fb43 [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>