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/invokers/invoketarget-button-event-dispatch.tentative.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/invokers/invoketarget-button-event-dispatch.tentative.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html b/testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html new file mode 100644 index 0000000000..b19c1d3adc --- /dev/null +++ b/testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html @@ -0,0 +1,119 @@ +<!doctype html> +<meta charset="utf-8" /> +<meta name="author" title="Keith Cirkel" href="mailto:keithamus@github.com" /> +<link rel="help" href="https://open-ui.org/components/invokers.explainer/" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="resources/invoker-utils.js"></script> + +<div id="invokee"></div> +<button id="invokerbutton" invoketarget="invokee"></button> + +<script> + promise_test(async function (t) { + let event = null; + invokee.addEventListener("invoke", (e) => (event = e), { once: true }); + await clickOn(invokerbutton); + assert_true(event instanceof InvokeEvent, "event is InvokeEvent"); + assert_equals(event.type, "invoke", "type"); + assert_equals(event.bubbles, false, "bubbles"); + assert_equals(event.composed, true, "composed"); + assert_equals(event.isTrusted, true, "isTrusted"); + assert_equals(event.action, "auto", "action"); + assert_equals(event.target, invokee, "target"); + assert_equals(event.invoker, invokerbutton, "invoker"); + }, "event dispatches on click"); + + promise_test(async function (t) { + let event = null; + invokee.addEventListener("invoke", (e) => (event = e), { once: true }); + invokerbutton.invokeAction = "fooBar"; + await clickOn(invokerbutton); + assert_true(event instanceof InvokeEvent, "event is InvokeEvent"); + assert_equals(event.type, "invoke", "type"); + assert_equals(event.bubbles, false, "bubbles"); + assert_equals(event.composed, true, "composed"); + assert_equals(event.isTrusted, true, "isTrusted"); + assert_equals(event.action, "fooBar", "action"); + assert_equals(event.target, invokee, "target"); + assert_equals(event.invoker, invokerbutton, "invoker"); + }, "event action is set to invokeAction"); + + promise_test(async function (t) { + let event = null; + invokee.addEventListener("invoke", (e) => (event = e), { once: true }); + invokerbutton.setAttribute("invokeaction", "BaRbAz"); + await clickOn(invokerbutton); + assert_true(event instanceof InvokeEvent, "event is InvokeEvent"); + assert_equals(event.type, "invoke", "type"); + assert_equals(event.bubbles, false, "bubbles"); + assert_equals(event.composed, true, "composed"); + assert_equals(event.isTrusted, true, "isTrusted"); + assert_equals(event.action, "BaRbAz", "action"); + assert_equals(event.target, invokee, "target"); + assert_equals(event.invoker, invokerbutton, "invoker"); + }, "event action is set to invokeaction attribute"); + + promise_test(async function (t) { + let called = false; + invokerbutton.addEventListener( + "click", + (event) => { + event.preventDefault(); + }, + { once: true }, + ); + invokee.addEventListener( + "invoke", + (event) => { + called = true; + }, + { once: true }, + ); + await clickOn(invokerbutton); + assert_false(called, "event was not called"); + }, "event does not dispatch if click:preventDefault is called"); + + promise_test(async function (t) { + t.add_cleanup(() => invokerbutton.removeAttribute('disabled')); + let called = false; + invokee.addEventListener( + "invoke", + (event) => { + called = true; + }, + { once: true }, + ); + invokerbutton.setAttribute("disabled", ""); + await clickOn(invokerbutton); + assert_false(called, "event was not called"); + }, "event does not dispatch if invoker is disabled"); + + promise_test(async function (t) { + svgInvokee = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + t.add_cleanup(() => { + invokerbutton.invokeTargetElement = invokee; + svgInvokee.remove(); + }); + document.body.append(svgInvokee); + let called = false; + assert_false(svgInvokee instanceof HTMLElement); + assert_true(svgInvokee instanceof Element); + let eventInvoker = null; + svgInvokee.addEventListener( + "invoke", + (event) => { + eventInvoker = event.invoker; + called = true; + }, + { once: true }, + ); + invokerbutton.invokeTargetElement = svgInvokee; + await clickOn(invokerbutton); + assert_true(called, "event was called"); + assert_true(eventInvoker == svgInvokee, "event invoker is set to right element"); + }, "event dispatches if invoker is non-HTML Element"); +</script> |