| <!DOCTYPE html> |
| <html> |
| <body> |
| <p>This tests navigating a different window during beforeunload event. The page load should succeed.</p> |
| <button onclick="startTest(); this.remove();">Start test</button> |
| <div id="log"></div> |
| <script> |
| |
| const frame = document.createElement('iframe'); |
| document.body.appendChild(frame); |
| frame.contentDocument.open(); |
| frame.contentDocument.write(`<script> window.onbeforeunload = () => top.didFireBeforeUnload(); </` + `script>`); |
| frame.contentDocument.close(); |
| |
| let differentWindow; |
| const log = document.getElementById('log'); |
| function startTest() { |
| differentWindow = window.open('about:blank'); |
| setTimeout(endTest, 1000); |
| frame.src = 'about:blank'; |
| log.textContent = 'FAIL'; |
| } |
| |
| function didFireBeforeUnload() { |
| differentWindow.location.href = 'resources/message-opener.html'; |
| } |
| |
| window.onmessage = (event) => { |
| if (event.data == 'load') { |
| log.textContent = 'PASS'; |
| endTest(); |
| } |
| } |
| |
| function endTest() { |
| differentWindow.close(); |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| testRunner.setCanOpenWindows() |
| testRunner.setPopupBlockingEnabled(false); |
| testRunner.setCloseRemainingWindowsWhenComplete(true); |
| startTest(); |
| document.querySelector('button').remove(); |
| } |
| |
| </script> |
| </body> |
| </html> |