summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/forms/the-label-element/proxy-click-to-associated-element.html
diff options
context:
space:
mode:
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.html58
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>