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

        #input {
            width: 100%;
            height: 50px;
            position: fixed;
            left: 0;
            top: 0;
        }

        div {
            background-image: linear-gradient(blue, red);
            height: 10000px;
        }
    </style>
</head>
<body>
<div>
<input id="input"></input>
</div>
</body>
<script>
jsTestIsAsync = true;

(() => {
    if (!window.testRunner || !testRunner.runUIScript) {
        description("To manually test, tap this input field and scroll up. The text caret should not end up outside of the input.");
        return;
    }

    UIHelper.activateAndWaitForInputSessionAt(innerWidth / 2, 30)
    .then(() => UIHelper.getUICaretViewRect())
    .then((rect) => {
        initialCaretRect = rect;
        shouldBe("initialCaretRect.left", "6");
        shouldBe("initialCaretRect.top", "21");
        shouldBe("initialCaretRect.width", "3");
        shouldBe("initialCaretRect.height", "15");
        document.scrollingElement.scrollTop += 5000;
        return UIHelper.getUICaretViewRect();
    })
    .then((rect) => {
        finalCaretRect = rect;
        shouldBe("finalCaretRect.left", "6");
        shouldBe("finalCaretRect.top", "4977");
        shouldBe("finalCaretRect.width", "3");
        shouldBe("finalCaretRect.height", "15");
        finishJSTest();
    });
})();
</script>
</html>
