<!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;
        }

        #absolute {
            width: 100vw;
            height: 50px;
            position: absolute;
            left: 0;
            top: 0;
            font-size: 100px;
        }

        #content {
            background-image: linear-gradient(blue, red);
            height: 10000px;
        }
    </style>
    <script>
    jsTestIsAsync = true;

    function selectTextAt(tapX, tapY)
    {
        return new Promise(resolve => {
            testRunner.runUIScript(`
                (function() {
                    uiController.longPressAtPoint(${tapX}, ${tapY}, function() {
                        uiController.uiScriptComplete("Done");
                    });
                })();`, resolve);
        });
    }

    function run()
    {
        if (!window.testRunner || !testRunner.runUIScript) {
            description("To manually test, long press this text and scroll up. The selection rect should be in the expected place (in the absolutely positioned div) after scrolling.");
            return;
        }

        selectTextAt(50, 50)
        .then(() => UIHelper.getUISelectionViewRects())
        .then((rects) => {
            initialSelectionRects = rects;
            shouldBe("initialSelectionRects.length", "1");
            shouldBe("initialSelectionRects[0].left", "0");
            shouldBe("initialSelectionRects[0].top", "2");
            shouldBe("initialSelectionRects[0].width", "309");
            shouldBe("initialSelectionRects[0].height", "112");
            document.scrollingElement.scrollTop += 5000;
            return UIHelper.getUISelectionViewRects();
        })
        .then((rects) => {
            finalSelectionRects = rects;
            shouldBe("finalSelectionRects.length", "1");
            shouldBe("finalSelectionRects[0].left", "0");
            shouldBe("finalSelectionRects[0].top", "2");
            shouldBe("finalSelectionRects[0].width", "309");
            shouldBe("finalSelectionRects[0].height", "112");
            finishJSTest();
        });
    }
    </script>
</head>
<body onload=run()>
    <div id="absolute">WebKit</div>
    <div id="content"></div>
</body>
</html>
