blob: 04c37701549215c2b48b3782d7358e74248867de [file] [log] [blame]
<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<meta name="viewport" content="initial-scale=1">
<style>
main {
display: flex;
}
.foo {
flex-basis: 0;
}
.map {
flex-grow: 2;
overflow: hidden;
position: relative;
outline: 2px solid green;
}
#container {
height: 10px;
background-color: silver;
outline: 2px solid black;
}
#target {
background-color: blue;
}
</style>
<script src="../../../../resources/js-test-pre.js"></script>
<script>
description("Checks that touches work on elements that are taller than the view.");
window.jsTestIsAsync = true;
function getUIScript(x, y)
{
return `
(function() {
uiController.singleTapAtPoint(${x}, ${y}, function() {
uiController.uiScriptComplete();
});
})();`
}
function runTest()
{
var container = document.getElementById('container');
window.addEventListener("touchend", (event) => {
debug("touchend fired.");
finishJSTest();
});
var targetRect = document.getElementById('target').getBoundingClientRect();
var tapPointX = targetRect.x + targetRect.width / 2;
var tapPointY = targetRect.y + 50; // Tap near the top.
target.addEventListener('touchstart', function() {
debug("touchstart fired.");
shouldBe("event.touches.length", "1");
shouldBe("event.touches[0].clientX", "113");
shouldBe("event.touches[0].clientY", String(tapPointY));
}, false);
if (window.testRunner)
testRunner.runUIScript(getUIScript(tapPointX, tapPointY), function(result) { });
}
window.addEventListener('load', runTest, false);
</script>
</head>
<body>
<main>
<div class="foo">
<h1>Test</h1>
</div>
<div class="map">
<div id="container">
<div id="target" style="position: absolute; width: 100px; height: 800px;"></div>
</div>
</div>
</main>
<script src="../../../../resources/js-test-post.js"></script>
</body>
</html>