<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
</head>
<body>
<style>
html, body { margin: 0; padding: 0; width: 100%; height: 100%; }
iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
</style>
<script src="../../../resources/ui-helper.js"></script>
<script>

const frame = document.createElement('iframe');
document.body.appendChild(frame);
frame.contentDocument.body.innerHTML = `
<style>
html, body { margin: 0; padding: 0; width: 100%; height: 100%; }
body { background: #6cf; }
#description { position: absolute; top: 50%; padding: 10px; }
#container { position: absolute; top: 90%; left: 20%; width: 60%; padding: 10px; font-size: 20px; text-align: center; height: 200px; border: solid 1px #ccc; }
</style>
<div id="container" onclick="this.contentEditable = true; this.focus();">click here</div>
<p id="description">
    This tests focusing an element inside an iframe at the bottom of the page.<br>
    To manually test, tap on "click here" below with docked software keyboard.<br>
    <span id="result"></span>
</p>
`;

let keyboardHeight = 250;

function checkScrollTop() {
    frame.contentWindow.result.textContent = visualViewport.pageTop > keyboardHeight ? 'PASS' : `FAIL - ${visualViewport.offsetTop}px`;
}

async function runTest() {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
    testRunner.dumpChildFramesAsText();
    await UIHelper.setHardwareKeyboardAttached(false);
    await UIHelper.activateAndWaitForInputSessionAt(frame.offsetWidth / 2, frame.offsetHeight - 5);
    await UIHelper.ensurePresentationUpdate();
    const rect = await UIHelper.inputViewBounds();
    keyboardHeight = rect.height;
    checkScrollTop();
    testRunner.notifyDone();
}

if (window.testRunner)
    runTest();
else
    frame.contentWindow.container.addEventListener('focus', () => setTimeout(checkScrollTop, 500));

</script>
</body>
</html>
