diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
commit | 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch) | |
tree | a31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/event-timing/programmatic-click-not-observed.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip |
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/event-timing/programmatic-click-not-observed.html')
-rw-r--r-- | testing/web-platform/tests/event-timing/programmatic-click-not-observed.html | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/testing/web-platform/tests/event-timing/programmatic-click-not-observed.html b/testing/web-platform/tests/event-timing/programmatic-click-not-observed.html new file mode 100644 index 0000000000..049607e04e --- /dev/null +++ b/testing/web-platform/tests/event-timing/programmatic-click-not-observed.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<html> +<meta charset=utf-8 /> +<div id='div' onclick='delay()'>Click me</div> +<div id='div2'>No, click me!</div> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/resources/testdriver.js></script> +<script src=/resources/testdriver-vendor.js></script> + +<script src=resources/event-timing-test-utils.js></script> +<script> + let delayCalled = false; + let beforeClick; + function delay() { + const end = performance.now() + 150; + while(performance.now() < end) {} + delayCalled = true; + } + promise_test(function(t) { + assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); + let observedPointerDown = false; + const observerPromise = new Promise(resolve => { + const observer = new PerformanceObserver(t.step_func(entryList => { + const pointerDowns = entryList.getEntriesByName('pointerdown'); + // Ignore cases in which there is no pointerdown. + if (pointerDowns.length === 0) + return; + + assert_false(observedPointerDown, 'There must only be one pointerdown entry.'); + assert_equals(pointerDowns.length, 1); + const entry = pointerDowns[0]; + // This ensures that the entry is exposing timing from the second click, i.e. + // the one from the clickAndBlockMain() call. + assert_greater_than_equal(entry.processingStart, beforeClick); + verifyClickEvent(entry, 'div2', true); + observedPointerDown = true; + resolve(); + })); + observer.observe({entryTypes: ['event']}); + }); + document.getElementById('div').click(); + // Take the timestamp after the programmatic click but before the next click. + beforeClick = performance.now(); + // After the programmatic click, use another input to know when entries have been + // dispatched to the PerformanceObserver callback. + const clickPromise = clickAndBlockMain('div2'); + return Promise.all([observerPromise, clickPromise]); + }, "Event Timing: events from programmatic click are not observed"); +</script> +</html> |