summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/dom/events/non-cancelable-when-passive/resources/scrolling.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/dom/events/non-cancelable-when-passive/resources/scrolling.js')
-rw-r--r--testing/web-platform/tests/dom/events/non-cancelable-when-passive/resources/scrolling.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/testing/web-platform/tests/dom/events/non-cancelable-when-passive/resources/scrolling.js b/testing/web-platform/tests/dom/events/non-cancelable-when-passive/resources/scrolling.js
new file mode 100644
index 0000000000..88e10f5efd
--- /dev/null
+++ b/testing/web-platform/tests/dom/events/non-cancelable-when-passive/resources/scrolling.js
@@ -0,0 +1,34 @@
+function raf() {
+ return new Promise((resolve) => {
+ // rAF twice.
+ window.requestAnimationFrame(() => {
+ window.requestAnimationFrame(resolve);
+ });
+ });
+}
+
+async function runTest({target, eventName, passive, expectCancelable}) {
+ await raf();
+
+ let cancelable = null;
+ let arrived = false;
+ target.addEventListener(eventName, function (event) {
+ cancelable = event.cancelable;
+ arrived = true;
+ }, {passive:passive, once:true});
+
+ promise_test(async (t) => {
+ t.add_cleanup(() => {
+ document.querySelector('.remove-on-cleanup')?.remove();
+ });
+ const pos_x = Math.floor(window.innerWidth / 2);
+ const pos_y = Math.floor(window.innerHeight / 2);
+ const delta_x = 0;
+ const delta_y = 100;
+
+ await new test_driver.Actions()
+ .scroll(pos_x, pos_y, delta_x, delta_y).send();
+ await t.step_wait(() => arrived, `Didn't get event ${eventName} on ${target.localName}`);
+ assert_equals(cancelable, expectCancelable);
+ });
+}