diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/the-button-element/button-untrusted-key-event.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/the-button-element/button-untrusted-key-event.html | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/the-button-element/button-untrusted-key-event.html b/testing/web-platform/tests/html/semantics/forms/the-button-element/button-untrusted-key-event.html new file mode 100644 index 0000000000..dd34d31233 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/the-button-element/button-untrusted-key-event.html @@ -0,0 +1,112 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>Forms</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<div id="log"></div> +<form id="input_form"> + <button name="submitButton" type="submit">Submit</button> + <button name="resetButton" type="reset">Reset</button> + <button name="buttonButton" type="button">Button</button> +</form> +<script type="module"> +const form = document.querySelector("form"); +form.addEventListener("submit", (e) => { + e.preventDefault(); + assert_true(false, 'form should not be submitted'); +}); + +for (const button of document.querySelectorAll("button")) { + button.addEventListener("click", function(e) { + assert_true(false, `${button.type} button should not be clicked`); + }); +} + +// Create and append button elements +for (const button of document.querySelectorAll("button")) { + test(() => { + // keyCode: Enter + button.dispatchEvent( + new KeyboardEvent("keypress", { + keyCode: 13, + }) + ); + + // key: Enter + button.dispatchEvent( + new KeyboardEvent("keypress", { + key: "Enter", + }) + ); + + // keyCode: Space + button.dispatchEvent( + new KeyboardEvent("keypress", { + keyCode: 32, + }) + ); + + // key: Space + button.dispatchEvent( + new KeyboardEvent("keypress", { + key: " ", + }) + ); + }, `Dispatching untrusted keypress events to ${button.type} button should not cause click event`); + + test(() => { + // keyCode: Enter + button.dispatchEvent( + new KeyboardEvent("keydown", { + keyCode: 13, + }) + ); + button.dispatchEvent( + new KeyboardEvent("keyup", { + keyCode: 13, + }) + ); + + // key: Enter + button.dispatchEvent( + new KeyboardEvent("keydown", { + key: "Enter", + }) + ); + button.dispatchEvent( + new KeyboardEvent("keyup", { + key: "Enter", + }) + ); + + // keyCode: Space + button.dispatchEvent( + new KeyboardEvent("keydown", { + keyCode: 32, + }) + ); + button.dispatchEvent( + new KeyboardEvent("keyup", { + keyCode: 32, + }) + ); + + // key: Space + button.dispatchEvent( + new KeyboardEvent("keydown", { + key: " ", + }) + ); + button.dispatchEvent( + new KeyboardEvent("keyup", { + key: " ", + }) + ); + }, `Dispatching untrusted keyup/keydown events to ${button.type} button should not cause click event`); +} +</script> +</body> +</html> |