diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit.html | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit.html b/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit.html new file mode 100644 index 0000000000..b6ea0cefab --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-submission-algorithm"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<!-- The onclick submit() should get superseded by the default + action submit(), which isn't preventDefaulted by onclick here. + This is per the Form Submission Algorithm [1], step 22.3, which + says that new planned navigations replace old planned navigations. + [1] https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-submission-algorithm + --> + +<label for=frame1 style="display:block">This frame should stay blank</label> +<iframe name=frame1 id=frame1></iframe> +<label for=frame2 style="display:block">This frame should navigate (to 404)</label> +<iframe name=frame2 id=frame2></iframe> +<form id="form1" target="frame1" action="nonexistent.html"> + <input type=hidden name=navigated value=1> + <input id=submitbutton type=submit> +</form> + +<script> +let frame1 = document.getElementById('frame1'); +let frame2 = document.getElementById('frame2'); +let form1 = document.getElementById('form1'); +let submitbutton = document.getElementById('submitbutton'); + +async_test(t => { + window.addEventListener('load', () => { + frame1.addEventListener('load', t.step_func_done(() => { + assert_unreached("Frame1 should not get navigated by this test."); + })); + frame2.addEventListener('load', t.step_func_done(() => { + let params = (new URL(frame2.contentWindow.location)).searchParams; + let wasNavigated = !!params.get("navigated"); + assert_true(wasNavigated) + })); + form1.addEventListener('click', t.step_func(() => { + form1.submit(); + form1.target='frame2'; + + })); + submitbutton.click(); + }); +}, 'default submit action should supersede onclick submit()'); + +</script> |