blob: b7224835fa398b3a81415af4ff288899bf53c266 [file] [log] [blame]
<!DOCTYPE html>
<title>Default passive document level wheel event listener manual test</title>
<link rel="help" href="https://github.com/WICG/interventions/issues/64">
<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>
<body onload=runTest()>
<div>This is a manual test since there is no way to synthesize wheel events.
Scroll by wheel in the middle of the page to run the test.</div>
</body>
<script>
var cancelable = true;
var wheel_arrived = false;
document.addEventListener("wheel", function (event) {
cancelable = event.cancelable;
wheel_arrived = true;
event.preventDefault();
});
function waitFor(condition) {
const MAX_FRAME = 200;
return new Promise((resolve, reject) => {
function tick(frames) {
// We requestAnimationFrame either for 200 frames or until condition is
// met.
if (frames >= MAX_FRAME)
reject("Condition did not become true after 200 frames");
else if (condition())
resolve();
else
requestAnimationFrame(tick.bind(this, frames + 1));
}
tick(0);
});
}
function runTest() {
promise_test (async () => {
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 waitFor(()=> { return wheel_arrived; });
assert_false(cancelable);
}, "Wheel events are non-cancelable since the event listener is treated as passive.");
}
</script>