| <!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> |