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