| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="resources/helpers.js"></script> |
| |
| <body> |
| <script> |
| "use strict"; |
| promise_test(async t => { |
| const sentinelIframe = await setupSentinelIframe(t); |
| const startingHistoryLength = history.length; |
| |
| const code = ` |
| const form = document.createElement("form"); |
| form.action = "/common/blank.html"; |
| |
| const input = document.createElement("input"); |
| input.type = "hidden"; |
| input.name = "thereplacement"; |
| form.append(input); |
| |
| document.currentScript.before(form); |
| form.submit(); |
| `; |
| |
| const startURL = "resources/code-injector.html?pipe=sub(none)&code=" + encodeURIComponent(code); |
| const afterReplacementURL = "/common/blank.html?thereplacement="; |
| const iframe = insertIframe(t, startURL); |
| |
| assert_equals(history.length, startingHistoryLength, "Inserting the under-test iframe must not change history.length"); |
| |
| await waitForLoad(t, iframe, afterReplacementURL); |
| assert_equals(history.length, startingHistoryLength, "history.length must not change after waiting for the replacement"); |
| |
| await checkSentinelIframe(t, sentinelIframe); |
| assert_equals(history.length, startingHistoryLength, "history.length must not change after checking the sentinel iframe"); |
| }, "Replace before load, triggered by same-document formElement.submit()"); |
| </script> |