| <script src="../../resources/ui-helper.js"></script> |
| <script> |
| if (window.testRunner) { |
| testRunner.waitUntilDone(); |
| testRunner.dumpAsText(); |
| testRunner.setShouldStayOnPageAfterHandlingBeforeUnload(true); |
| } |
| |
| _confirmationDialogDisplayedOnce = false; |
| |
| function submitForm() |
| { |
| document.forms[0].submit(); |
| } |
| |
| window.addEventListener("beforeunload", function() { |
| |
| if (window._confirmationDialogDisplayedOnce) |
| return "Click 'Leave Page'"; |
| |
| window.setTimeout(function() { |
| if (window.testRunner) |
| testRunner.setShouldStayOnPageAfterHandlingBeforeUnload(false); |
| |
| window.setTimeout(function() { |
| document.getElementById("console").innerHTML = "FAIL"; |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }, 1000); |
| |
| document.forms[0].submit(); |
| }, 0); |
| |
| window._confirmationDialogDisplayedOnce = true; |
| |
| return "Click 'Stay on Page'"; |
| }); |
| </script> |
| |
| <p>This tests that submitting a form a second time after canceling the first submission in a onbeforeunload handler is allowed. To test manually, follow the instructions in the JavaScript confirmation dialogs.</p> |
| |
| <div id="console"></div> |
| <input id="testButton" type="button" value="Click to submit form" onclick="submitForm()"> |
| <form action="resources/pass-and-notify-done.html" method="POST"> |
| </form> |
| |
| <script> |
| // Simulate a user interaction with the page so that the beforeunload alert shows. |
| const testButton = document.getElementById("testButton"); |
| UIHelper.activateAt(testButton.offsetLeft + 5, testButton.offsetTop + 5); |
| </script> |