diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls')
8 files changed, 293 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/.gitkeep b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/.gitkeep new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/.gitkeep diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/contains.json b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/contains.json new file mode 100644 index 000000000..357a1e6a7 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/contains.json @@ -0,0 +1,34 @@ +[ + { + "id": "naming-form-controls-the-name-attribute", + "original_id": "naming-form-controls:-the-name-attribute" + }, + { + "id": "submitting-element-directionality-the-dirname-attribute", + "original_id": "submitting-element-directionality:-the-dirname-attribute" + }, + { + "id": "limiting-user-input-length-the-maxlength-attribute", + "original_id": "limiting-user-input-length:-the-maxlength-attribute" + }, + { + "id": "enabling-and-disabling-form-controls-the-disabled-attribute", + "original_id": "enabling-and-disabling-form-controls:-the-disabled-attribute" + }, + { + "id": "form-submission", + "original_id": "form-submission" + }, + { + "id": "autofocusing-a-form-control-the-autofocus-attribute", + "original_id": "autofocusing-a-form-control:-the-autofocus-attribute" + }, + { + "id": "input-modalities-the-inputmode-attribute", + "original_id": "input-modalities:-the-inputmode-attribute" + }, + { + "id": "autofilling-form-controls-the-autocomplete-attribute", + "original_id": "autofilling-form-controls:-the-autocomplete-attribute" + } +]
\ No newline at end of file diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr-iframe.html b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr-iframe.html new file mode 100644 index 000000000..b5ed7e3d9 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr-iframe.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Submitting element directionality: the dirname attribute support</title> +<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org"> diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html new file mode 100644 index 000000000..28d1c150b --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Submitting element directionality: the dirname attribute</title> +<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org"> +<link rel=help href="https://html.spec.whatwg.org/multipage/#submitting-element-directionality:-the-dirname-attribute"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<form action="dirname-ltr-iframe.html" method=get target="iframe"> + <p><label>Comment: <input type=text name="comment" dirname="comment.dir" required></label></p> + <p><button type=submit>Post Comment</button></p> +</form> +<iframe name="iframe"></iframe> +<script> + function getParameterByName(name) { + name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); + var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), + results = regex.exec(document.querySelector("iframe").contentWindow.location.search); + return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); + } + + var t = async_test("submit element directionality"); + document.querySelector("input").value="foobar"; + document.querySelector("button").click(); + + document.querySelector("iframe").onload = t.step_func_done(function() { + assert_equals(getParameterByName("comment.dir"), "ltr"); + }); +</script> diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl-manual.html b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl-manual.html new file mode 100644 index 000000000..cb00f6972 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl-manual.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Submitting element directionality: the dirname attribute (rtl)</title> +<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org"> +<link rel=help href="https://html.spec.whatwg.org/multipage/#submitting-element-directionality:-the-dirname-attribute"> +<form action="dirname-rtl-manual.html" method=get> + <p><label>Comment: <input type=text name="comment" dirname="comment.dir" required></label></p> + <p><button type=submit>Post Comment</button></p> +</form> +<p>Switch to a right-to-left writing direction, enter a text in the input and submit the form.</p> +<p>Test passes if the word "PASS" appears below</p> +<script> + function getParameterByName(name) { + name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); + var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), + results = regex.exec(location.search); + return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); + } + + var commentDir = getParameterByName("comment.dir"); + if (commentDir) { + var p = document.createElement("p"); + p.textContent = (commentDir == "rtl") ? "PASS" : "FAIL"; + document.body.appendChild(p); + } +</script> diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html new file mode 100644 index 000000000..14443e409 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html @@ -0,0 +1,84 @@ +<!DOCTYPE html> +<title>HTMLFormElement: the disabled attribute</title> +<link rel="author" title="Eric Casler" href="mailto:ericorange@gmail.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#enabling-and-disabling-form-controls:-the-disabled-attribute"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<div id="log"></div> +<div id="root"></div> +<script> +// Elements tested for in this file +var types = ["button", "input", "select", "textarea"]; +// no tests for: optgroup, option, fieldset + +var root = document.getElementById("root"); +for (var element_type = 0; element_type < types.length; element_type++) { + test(function() { + root.innerHTML = "<"+types[element_type]+" + id='elem'></"+types[element_type]+">"; + + var elem = document.getElementById("elem"); + assert_false(elem.disabled); + }, + "Test ["+types[element_type]+"]: default behaviour is NOT disabled"); + + test(function() { + var formats = ["disabled", + "disabled=disabled", "disabled='disabled'", + "disabled='true'", "disabled=true", + "disabled='false'", "disabled=false"]; + + for (var f = 0; f < formats.length; f++) { + root.innerHTML = "<"+types[element_type]+" id='elem' " + formats[f] + "></"+types[element_type]+">"; + + var elem = document.getElementById("elem"); + assert_true(elem.disabled); + } + }, + "Test ["+types[element_type]+"]: verify disabled acts as boolean attribute"); + + test(function() { + root.innerHTML = "<"+types[element_type]+" id='elem'></"+types[element_type]+"><input id='other' value='no event dispatched'></input>"; + var elem = document.getElementById("elem"), + other = document.getElementById("other"); + + assert_equals(other.value, "no event dispatched"); + + elem.disabled = true; + assert_true(elem.disabled); + + elem.onclick = function () { + // change value of other element, to avoid *.value returning "" for disabled elements + document.getElementById("other").value = "event dispatched"; + }; + + // Check if dispatched event executes + var evObj = document.createEvent('Events'); + evObj.initEvent("click", true, false); + elem.dispatchEvent(evObj); + assert_equals(other.value, "event dispatched"); + }, + "Test ["+types[element_type]+"]: synthetic click events should be dispatched"); + + test(function() { + root.innerHTML = "<"+types[element_type]+" id='elem'></"+types[element_type]+"><input id='other' value='no event dispatched'></input>"; + var elem = document.getElementById("elem"), + other = document.getElementById("other"); + + assert_equals(other.value, "no event dispatched"); + + elem.disabled = true; + assert_true(elem.disabled); + + elem.onclick = function () { + // change value of other element, to avoid *.value returning "" for disabled elements + document.getElementById("other").value = "event dispatched"; + }; + + // Check that click() on a disabled element doesn't dispatch a click event. + elem.click(); + assert_equals(other.value, "no event dispatched"); + }, + "Test ["+types[element_type]+"]: click() should not dispatch a click event"); +} +root.innerHTML = ""; +</script> diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/formAction_document_address.html b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/formAction_document_address.html new file mode 100644 index 000000000..d14cad532 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/formAction_document_address.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>HTML Test: formAction_document_address</title> + <link rel="author" title="Intel" href="http://www.intel.com/"> + <link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-fs-formaction"> + <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-document's-address"> + <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-button-element"> + <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-input-element"> + <meta name="assert" content="On getting the formAction IDL attribute, when the content attribute is missing or its value is the empty string, the document's address must be returned instead."> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <div id="log"></div> + + <div id="missing" style="display:none"> + <button type="submit">Submit</button> + <input type="submit"> + </div> + + <div id="empty_string" style="display:none"> + <button type="submit" formaction="">Submit</button> + <input type="submit" formaction=""> + </div> + + <div id="no_assigned_value" style="display:none"> + <button type="submit" formaction>Submit</button> + <input type="submit" formaction> + </div> + + <script> + // formaction content attribute is missing + test(function() { + var formAction = document.querySelector('#missing button').formAction; + var address = document.location.href; + assert_equals(formAction, address); + }, "Check if button.formAction is the document's address when formaction content attribute is missing"); + + test(function() { + var formAction = document.querySelector('#missing input').formAction; + var address = document.location.href; + assert_equals(formAction, address); + }, "Check if input.formAction is the document's address when formaction content attribute is missing"); + + // formaction content attribute value is empty string + test(function() { + var formAction = document.querySelector('#empty_string button').formAction; + var address = document.location.href; + assert_equals(formAction, address); + }, "Check if button.formAction is the document's address when formaction content attribute value is empty string"); + + test(function() { + var formAction = document.querySelector('#empty_string input').formAction; + var address = document.location.href; + assert_equals(formAction, address); + }, "Check if input.formAction is the document's address when formaction content attribute value is empty string"); + + // formaction content attribute value is not assigned, just for comparison with empty string above + test(function() { + var formAction = document.querySelector('#no_assigned_value button').formAction; + var address = document.location.href; + assert_equals(formAction, address); + }, "Check if button.formAction is the document's address when formaction content attribute value is not assigned"); + + test(function() { + var formAction = document.querySelector('#no_assigned_value input').formAction; + var address = document.location.href; + assert_equals(formAction, address); + }, "Check if input.formAction is the document's address when formaction content attribute value is not assigned"); + </script> + </body> +</html> diff --git a/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/formaction.html b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/formaction.html new file mode 100644 index 000000000..82798eaa8 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/attributes-common-to-form-controls/formaction.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html><head> + <title>formaction on button element</title> + <meta content="text/html; charset=UTF-8" http-equiv="content-type"> + <meta content="formaction on button element" name="description"> + <link href="https://html.spec.whatwg.org/multipage/#dom-fs-formaction" rel="help"> +</head> + <body> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + + <div id="log"></div> + <button formaction="http://www.example.com/" style="display: none" type="submit">Submit</button> + <input formaction="http://www.example.com/" style="display: none" type="submit" value="submit"> + <input style="display: none" type="submit" value="submit"> + <input formaction="" style="display: none" type="submit" value="submit"> + + <script type="text/javascript"> + function relativeToAbsolute(relativeURL) { + var a = document.createElement('a'); + a.href = relativeURL; + return a.href; + } + test(function() {assert_equals(document.getElementsByTagName("button")[0].formAction, "http://www.example.com/")}, "formAction on button support"); + test(function() {assert_equals(document.getElementsByTagName("input")[0].formAction, "http://www.example.com/")}, "formAction on input support"); + + var testElem = document.getElementsByTagName("input")[0]; + testElem.formAction = "http://www.example.com/page2.html"; + + test(function() {assert_equals(document.getElementsByTagName("input")[0].formAction, "http://www.example.com/page2.html")}, "formaction absolute URL value on input reflects correct value after being updated by the DOM"); + test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("formaction"), "http://www.example.com/page2.html")}, "formAction absolute URL value is correct using getAttribute"); + + var testElem = document.getElementsByTagName("input")[0]; + testElem.formAction = "../page3.html"; + + test(function() {assert_equals(document.getElementsByTagName("input")[0].formAction, relativeToAbsolute('../page3.html'))}, "formAction relative URL value on input reflects correct value after being updated by the DOM"); + test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("formaction"), "../page3.html")}, "formAction relative URL value is correct using getAttribute"); + + test(function() {assert_equals(document.getElementsByTagName("input")[1].formAction, document.URL)}, "On getting, when formaction is missing, the document's address must be returned"); + test(function() {assert_equals(document.getElementsByTagName("input")[2].formAction, document.URL)}, "On getting, when formaction value is the empty string, the document's address must be returned"); + </script> +</body></html> |