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 464554 289af7fabdef4962814a42983c5a1f88710fcaee
parent 464553 d04acd61397bb9e78d0397294931e47d758d7fcf
child 464555 511e44d2a68e08fdeaca1b69d769fda2acabc337
push id35717
push useraciure@mozilla.com
push dateSun, 17 Mar 2019 09:45:26 +0000
treeherdermozilla-central@e0861be8d6c0 [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>