diff options
Diffstat (limited to 'testing/web-platform/tests/html/browsers/windows/resources/window-name.sub.html')
-rw-r--r-- | testing/web-platform/tests/html/browsers/windows/resources/window-name.sub.html | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/windows/resources/window-name.sub.html b/testing/web-platform/tests/html/browsers/windows/resources/window-name.sub.html new file mode 100644 index 0000000000..9255ba3401 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/windows/resources/window-name.sub.html @@ -0,0 +1,102 @@ +<!doctype html> +<title>popup helper</title> +<script> + +const search = decodeURIComponent(window.location.search.replace("?", "")); +const steps = search.split("|"); + +async function proceedTest() { + while (steps.length) { + const step = steps.shift(); + + if (step.startsWith("report=")) { + const id = step.split("=")[1]; + const stashURL = new URL("window-name-stash.py", location); + stashURL.searchParams.set('id', id); + stashURL.searchParams.set('value', window.name); + + await fetch(stashURL, { method: "POST" }); + continue; + } + + if (step === "close") { + window.close(); + break; + } + + if (step === "cross") { + const url = new URL(window.location); + url.host = "{{hosts[alt][]}}:{{ports[https][0]}}"; + url.search = "?" + steps.join("|"); + window.location = url.href; + break; + } + + if (step === "same") { + const url = new URL(window.location); + url.host = "{{host}}:{{ports[https][0]}}"; + url.search = "?" + steps.join("|"); + window.location = url.href; + break; + } + + if (step === "sub") { + const url = new URL(window.location); + url.host = "{{hosts[][www]}}:{{ports[https][0]}}"; + url.search = "?" + steps.join("|"); + window.location = url.href; + break; + } + + if (step === "closeOpener") { + if (window.opener) { + window.opener.close(); + } + continue; + } + + if (step.startsWith("navOpener=")) { + if (!window.opener) { + continue; + } + + let url = step.split("=")[1]; + window.opener.location.href = url; + + continue; + } + + if (step === "open") { + const url = new URL(window.location); + url.host = "{{host}}:{{ports[https][0]}}"; + url.search = "?" + steps.join("|"); + window.open(url); + break; + } + + if (step.startsWith("reportOpener=")) { + const id = step.split("=")[1]; + const stashURL = new URL("window-name-stash.py", location); + stashURL.searchParams.set('id', id); + stashURL.searchParams.set('value', window.opener.name); + + await fetch(stashURL, { method: "POST" }); + continue; + } + + if (step.startsWith("set=")) { + window.name = step.split("=")[1]; + continue; + } + + if (step.startsWith("setDomain=")) { + document.domain = step.split("=")[1]; + continue; + } + + throw new Error("Unsupported step!"); + } +} + +proceedTest(); +</script> |