blob: 214bc2e7707d59330a5bb7855009fa126b00f681 [file] [log] [blame]
<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<meta name="viewport" content="initial-scale=1.0">
<style>
.spacer-above {
background-color: silver;
height: 600px;
}
.spacer-below {
background-color: silver;
height: 80px;
}
input {
display: block;
margin: 60px 30px;
}
</style>
<script src="../../../resources/js-test-pre.js"></script>
<script>
var jsTestIsAsync = true;
function getScrollDownUIScript()
{
return `(function() {
uiController.immediateScrollToOffset(0, 800);
})();`;
}
function getFocusInputUIScript(x, y)
{
return `(function() {
uiController.didShowKeyboardCallback = function() {
uiController.doAfterNextStablePresentationUpdate(function() {
uiController.uiScriptComplete();
});
};
uiController.singleTapAtPoint(${x}, ${y}, function() {});
})();`;
}
function runTest()
{
if (!window.testRunner || !testRunner.runUIScript)
return;
testRunner.runUIScript(getScrollDownUIScript(), function() {
window.setTimeout(function() {
var rect = document.getElementById('input').getBoundingClientRect();
// singleTapAtPoint takes document coordinates, so add scrollTop to clientRect.top.
testRunner.runUIScript(getFocusInputUIScript(rect.left, rect.top + document.scrollingElement.scrollTop), function() {
debug('PASS: got stable update');
finishJSTest();
});
}, 0);
});
}
window.addEventListener('load', runTest, false);
</script>
</head>
<body>
<p>This test will time out if no stable update is received.</p>
<div class="spacer-above"></div>
<input id="input" type="text"/>
<div class="spacer-below"></div>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>