Source code

Revision control

Copy as Markdown

Other Tools

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);
});
}