diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/the-label-element/proxy-click-to-associated-element.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/the-label-element/proxy-click-to-associated-element.html | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/the-label-element/proxy-click-to-associated-element.html b/testing/web-platform/tests/html/semantics/forms/the-label-element/proxy-click-to-associated-element.html new file mode 100644 index 0000000000..fbfeda8a51 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/the-label-element/proxy-click-to-associated-element.html @@ -0,0 +1,58 @@ +<!DOCTYPE HTML> +<title>label element click proxying via "for" attribute or nested labelable element</title> +<link rel="author" title="yaycmyk" href="mailto:evan@yaycmyk.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/forms.html#the-label-element:the-label-element-10"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<form id="test"> + <input id="foo" type="checkbox" /> + <label id="foo-label" for="foo">foo</label> + + <label id="bar-label"> + <input id="bar" type="checkbox" /> bar + <input id="baz" type="checkbox" /> baz + </label> + + <input id="baz" type="checkbox" /> + <label id="baz-label" for="baz">baz</label> +</form> +<script> + "use strict"; + + async_test(t => { + const label = document.getElementById("foo-label"); + const input = document.getElementById("foo"); + + input.addEventListener("click", t.step_func_done()); + + label.click(); + + }, "label with for attribute should proxy click events to the associated element"); + + async_test(t => { + const label = document.getElementById("bar-label"); + const input = document.getElementById("bar"); + + input.addEventListener("click", t.step_func_done()); + + label.click(); + + }, "label without for attribute should proxy click events to the first labelable child"); + + async_test(t => { + + const label = document.getElementById("baz-label"); + const input = document.getElementById("baz"); + + input.addEventListener("click", t.unreached_func("Input should not receive click")); + label.addEventListener("click", t.step_func(ev => { + ev.preventDefault(); + t.step_timeout(() => t.done(), 500); + })); + + label.click(); + + }, "clicking a label that prevents the event's default should not proxy click events"); + +</script> |