<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->

<html>
<head>
    <meta name="viewport" content="initial-scale=1.0">
    <style>
        body {
            height: 2000px;
        }
        .fixed {
            position: fixed;
            top: 0; 
            width: 100%; 
            background: beige;
            padding-top: 300px;
        }
        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.didEndZoomingCallback = function() {
                    uiController.uiScriptComplete();
                };
                uiController.singleTapAtPoint(${x}, ${y}, function() {});
            })();`;
        }
        
        function getMoveToNextInputScript()
        {
            return `(function() {
                uiController.doAfterNextStablePresentationUpdate(function() {
                    uiController.uiScriptComplete(JSON.stringify(uiController.selectionCaretViewRect));
                });
                uiController.keyboardAccessoryBarNext();
            })();`;
        }

        function getCaretRectScript()
        {
            return `(function() {
                return JSON.stringify(uiController.selectionCaretViewRect);
            })();`;
        }

        function toString(rect)
        {
            return `[${rect.left.toFixed(2)} ${rect.top.toFixed(2)} ; ${rect.width.toFixed(2)} ${rect.height.toFixed(2)}]`;
        }

        var finalCaretRect;

        function runTest()
        {
            if (!window.testRunner || !testRunner.runUIScript)
                return;
            
            testRunner.runUIScript(getScrollDownUIScript(), function() {
                window.setTimeout(function() {
                    var rect = document.getElementById('input').getBoundingClientRect();
                    debug('Focusing first field');
                    testRunner.runUIScript(getFocusInputUIScript(rect.left, rect.top + document.scrollingElement.scrollTop), function() {
                        debug('Moving to next field');
                        testRunner.runUIScript(getMoveToNextInputScript(), function() {
                            setTimeout(function() {
                                testRunner.runUIScript(getMoveToNextInputScript(), function(caretRect) {
                                    finalCaretRect = JSON.parse(caretRect);
                                    shouldBeEqualToString('finalCaretRect.left.toFixed(2)', '44.00');
                                    shouldBeEqualToString('finalCaretRect.top.toFixed(2)', '1244.00');
                                    finishJSTest();
                                });
                            }, 0);
                        });
                    });
                }, 0);
            });
        }

        window.addEventListener('load', runTest, false);
    </script>
</head>
<body>
<p>Checks the location of the caret after focussing inputs inside position:fixed.</p>
<div class="fixed">
    <input id="input" type="text"/>
    <input type="text"/>
</div>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
