summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/speculation-rules/prerender/resources/window-open-during-prerendering.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/speculation-rules/prerender/resources/window-open-during-prerendering.html')
-rw-r--r--testing/web-platform/tests/speculation-rules/prerender/resources/window-open-during-prerendering.html41
1 files changed, 41 insertions, 0 deletions
diff --git a/testing/web-platform/tests/speculation-rules/prerender/resources/window-open-during-prerendering.html b/testing/web-platform/tests/speculation-rules/prerender/resources/window-open-during-prerendering.html
new file mode 100644
index 0000000000..a314d5005b
--- /dev/null
+++ b/testing/web-platform/tests/speculation-rules/prerender/resources/window-open-during-prerendering.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="utils.js"></script>
+<script>
+
+// This file is loaded twice. First this is loaded as a page to trigger
+// prerendering and then loaded as a prerendering page.
+
+function runAsTriggerPage() {
+ assert_false(document.prerendering);
+ startPrerendering(location.href + '&prerendering=true');
+
+ // Close this window for cleanup after the prerendering page runs the test.
+ const bc = new PrerenderChannel('result');
+ bc.onmessage = e => window.close();
+}
+
+function runAsPrerenderingPage() {
+ assert_true(document.prerendering);
+
+ // Attempt to open a window during prerendering.
+ const win = window.open('empty.html', '_blank');
+
+ // Send the result to the test runner page.
+ const bc = new PrerenderChannel('result');
+ if (win) {
+ bc.postMessage('opened');
+ win.close();
+ } else {
+ bc.postMessage('failed to open');
+ }
+}
+
+if (new URLSearchParams(location.search).has('prerendering')) {
+ runAsPrerenderingPage();
+} else {
+ runAsTriggerPage();
+}
+
+</script>