diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html b/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html new file mode 100644 index 0000000000..a14cfe7afa --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-double-submit-default-action.html @@ -0,0 +1,108 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<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> +<script src="./resources/targetted-form.js"></script> +<!-- + The submit() in event handler should get superseded by the default action + submit(), which isn't preventDefaulted. This is per the Form Submission + Algorithm [1], step 24, which says that new planned navigations replace old + planned navigations. + [1] https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-submission-algorithm +--> +<body> +<script> +promise_test(async () => { + let form = populateForm('<input name=n1 value=v1><input type=submit>'); + let iframe = form.previousSibling; + let input = form.querySelector("input[name=n1]"); + let submitter = form.querySelector("input[type=submit]"); + submitter.addEventListener('click', () => { + input.value = 'v2'; + form.submit(); + input.value = 'v3'; + form.submit(); + input.value = 'v4'; + }); + submitter.click(); + await loadPromise(iframe); + assert_equals(getParamValue(iframe, "n1"), "v4"); +}, 'default submit action should supersede input onclick submit()'); + +promise_test(async () => { + let form = populateForm('<input name=n1 value=v1><button>submit</button>'); + let iframe = form.previousSibling; + let input = form.querySelector("input[name=n1]"); + let submitter = form.querySelector("button"); + submitter.addEventListener('click', (e) => { + input.value = 'v2'; + form.submit(); + input.value = 'v3'; + form.submit(); + input.value = 'v4'; + }); + submitter.click(); + await loadPromise(iframe); + assert_equals(getParamValue(iframe, "n1"), "v4"); +}, 'default submit action should supersede button onclick submit()'); + +promise_test(async () => { + let form = populateForm('<input name=n1 value=v1><input type=submit>'); + let iframe = form.previousSibling; + let input = form.querySelector("input[name=n1]"); + let submitter = form.querySelector("input[type=submit]"); + form.addEventListener('click', () => { + input.value = 'v2'; + form.submit(); + input.value = 'v3'; + form.submit(); + input.value = 'v4'; + }); + submitter.click(); + await loadPromise(iframe); + assert_equals(getParamValue(iframe, "n1"), "v4"); +}, 'default submit action should supersede form onclick submit()'); + +promise_test(async () => { + let form = populateForm('<input name=n1 value=v1><input type=submit>'); + let iframe = form.previousSibling; + let input = form.querySelector("input[name=n1]"); + let submitter = form.querySelector("input[type=submit]"); + form.addEventListener('submit', () => { + input.value = 'v2'; + form.submit(); + input.value = 'v3'; + form.submit(); + input.value = 'v4'; + }); + submitter.click(); + await loadPromise(iframe); + assert_equals(getParamValue(iframe, "n1"), "v4"); +}, 'default submit action should supersede form onsubmit submit()'); + +promise_test(async (t) => { + let form = populateForm('<input name=n1 value=v1><input type=submit>'); + let iframe = form.previousSibling; + let input = form.querySelector("input[name=n1]"); + let submitter = form.querySelector("input[type=submit]"); + form.addEventListener('click', () => { + input.value = 'v2'; + form.submit(); + input.value = 'v3'; + form.submit(); + input.value = 'v4'; + }); + form.addEventListener('submit', () => { + input.value = 'v5'; + form.submit(); + input.value = 'v6'; + form.submit(); + input.value = 'v7'; + }); + submitter.click(); + await loadPromise(iframe); + assert_equals(getParamValue(iframe, "n1"), "v7"); +}, 'default submit action should supersede form onclick/onsubmit submit()'); +</script> +</body> |