diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html b/testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html new file mode 100644 index 0000000000..063836cd23 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html @@ -0,0 +1,112 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<meta name=variant content="?default"> +<meta name=variant content="?week,month"> +<title>text field selection</title> +<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org"> +<link rel=help href="https://html.spec.whatwg.org/multipage/#textFieldSelection"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> + var nonApplicableTypes = ["hidden", "email", "datetime-local", "date", "time", "number", "range", "color", "checkbox", "radio", "file", "submit", "image", "reset", "button"]; + var applicableTypes = ["text", "search", "tel", "url", "password", "aninvalidtype", null]; + + if (location.search !== "?default") { + // For non default case, use the parameters passed in through query string + // instead of nonApplicableTypes. + nonApplicableTypes = location.search.substr(1).split(','); + } + + nonApplicableTypes.forEach(function(type){ + var el = document.createElement("input"); + el.type = type; + + test(() => { + assert_equals(el.selectionStart, null); + }, `selectionStart on an input[type=${type}] returns null`); + + test(() => { + assert_equals(el.selectionEnd, null); + }, `selectionEnd on an input[type=${type}] returns null`); + + test(() => { + assert_equals(el.selectionDirection, null); + }, `selectionDirection on an input[type=${type}] returns null`); + + test(() => { + assert_throws_dom("InvalidStateError", function(){ + el.selectionStart = 0; + }); + }, `assigning selectionStart on an input[type=${type}] throws InvalidStateError`); + + test(() => { + assert_throws_dom("InvalidStateError", function(){ + el.selectionEnd = 0; + }); + }, `assigning selectionEnd on an input[type=${type}] throws InvalidStateError`); + + test(() => { + assert_throws_dom("InvalidStateError", function(){ + el.selectionDirection = 'none'; + }); + }, `assigning selectionDirection on an input[type=${type}] throws InvalidStateError`); + + test(() => { + assert_throws_dom("InvalidStateError", function(){ + el.setRangeText("foobar"); + }); + }, `setRangeText on an input[type=${type}] throws InvalidStateError`); + + test(() => { + assert_throws_dom("InvalidStateError", function(){ + el.setSelectionRange(0, 1); + }); + }, `setSelectionRange on an input[type=${type}] throws InvalidStateError`); + }); + + applicableTypes.forEach(function(type) { + const el = document.createElement("input"); + if (type) { + el.type = type; + } + const initialDirection = el.selectionDirection; + + test(() => { + assert_equals(el.selectionStart, 0); + }, `selectionStart on an input[type=${type}] returns a value`); + + test(() => { + assert_equals(el.selectionEnd, 0); + }, `selectionEnd on an input[type=${type}] returns a value`); + + test(() => { + assert_in_array(el.selectionDirection, ["forward", "none"]); + }, `selectionDirection on an input[type=${type}] returns a value`); + + test(() => { + el.selectionDirection = "none"; + assert_equals(el.selectionDirection, initialDirection); + }, `assigning selectionDirection "none" on an input[type=${type}] should give the initial direction`); + + test(() => { + el.selectionStart = 1; + }, `assigning selectionStart on an input[type=${type}] doesn't throw an exception`); + + test(() => { + el.selectionEnd = 1; + }, `assigning selectionEnd on an input[type=${type}] doesn't throw an exception`); + + test(() => { + el.selectionDirection = "forward"; + }, `assigning selectionDirection on an input[type=${type}] doesn't throw an exception`); + + test(() => { + el.setRangeText("foobar"); + }, `setRangeText on an input[type=${type}] doesn't throw an exception`); + + test(() => { + el.setSelectionRange(0, 1); + }, `setSelectionRange on an input[type=${type}] doesn't throw an exception`); + }); +</script> |