blob: c934b2792350a9adb4e62883b12dd3605f9c4ebe [file] [log] [blame]
<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true AsyncOverflowScrollingEnabled=true ] -->
<html>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<head>
<script src="../../../../resources/js-test.js"></script>
<script src="../../../../resources/ui-helper.js"></script>
<style>
html, body {
width: 100%;
height: 100%;
margin: 0;
}
#scroller {
overflow: scroll;
width: 200px;
height: 200px;
border: 2px solid black;
}
#content {
width: 100%;
height: 1000px;
}
</style>
<script>
jsTestIsAsync = true;
async function runTest() {
description("Verifies that calling preventDefault() on touchstart prevents scrolling when the touch event handler is unresponsive for an extended duration. To manually test, attempt to scroll the box; check that touchstart and touchend events were handled, and that the box did not scroll.");
const scroller = document.getElementById("scroller");
scroller.addEventListener("touchstart", event => {
const startTime = Date.now();
while (1) {
if (Date.now() - startTime > 400)
break;
}
testPassed("Observed touchstart event");
event.preventDefault();
});
scroller.addEventListener("touchend", () => {
testPassed("Observed touchend event");
finishJSTest();
});
scroller.addEventListener("scroll", () => testFailed("Observed scroll event"), { once : true });
if (!window.testRunner)
return;
const eventStreamData = new UIHelper.EventStreamBuilder()
.begin(100, 190)
.move(100, 10, 1)
.move(100, 190, 1)
.move(100, 100, 0.5)
.end()
.takeResult();
await UIHelper.sendEventStream(eventStreamData);
}
addEventListener("load", runTest);
</script>
</head>
<body>
<div id="scroller">
<div id="content"></div>
</div>
<pre id="description"></pre>
<pre id="console"></pre>
</body>
</html>