blob: f3f0d58209fd8edda4fa1cc092dbe8d19bc4f143 [file] [log] [blame]
<!DOCTYPE html>
<title>Default passive document level touchmove event listener test</title>
<link rel="help" href="https://github.com/WICG/interventions/issues/35">
<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 id="touchDiv">
</div>
</body>
<style>
#touchDiv {
width: 100px;
height: 100px;
}
</style>
<script>
var touch_div = document.getElementById("touchDiv");
var cancelable = true;
var touch_move_arrived = false;
document.addEventListener("touchmove", function (event) {
cancelable = event.cancelable;
touch_move_arrived = true;
event.preventDefault();
});
function waitFor(condition) {
const MAX_FRAME = 500;
return new Promise((resolve, reject) => {
function tick(frames) {
// We requestAnimationFrame either for 500 frames or until condition is
// met.
if (frames >= MAX_FRAME)
reject("Condition did not become true after 500 frames");
else if (condition())
resolve();
else
requestAnimationFrame(tick.bind(this, frames + 1));
}
tick(0);
});
}
function waitForCompositorCommit() {
return new Promise((resolve) => {
// rAF twice.
window.requestAnimationFrame(() => {
window.requestAnimationFrame(resolve);
});
});
}
function injectInput() {
new test_driver.Actions()
.addPointer("touch_pointer", "touch")
.pointerMove(0, 0, {origin: touch_div})
.pointerDown()
.pointerMove(30, 30)
.pointerUp()
.send();
}
function runTest() {
promise_test (async () => {
await waitForCompositorCommit();
injectInput();
await waitFor(()=> { return touch_move_arrived; });
assert_false(cancelable);
}, "Touchmove events are non-cancelable since the event listener is treated as passive.");
}
</script>