<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true AsyncOverflowScrollingEnabled=true ] -->
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0">
    <style>
        #scroller {
            margin: 10px;
            height: 300px;
            width: 300px;
            border: 1px solid black;
            overflow: scroll;
        }
        
        .box {
            position: fixed;
            margin-top: 200px;
            width: 200px;
            height: 200px;
            background-color: green;
        }
        
        .spacer {
            height: 800px;
        }
    </style>
    <script src="../../resources/ui-helper.js"></script>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();

        async function doTest()
        {
            await UIHelper.ensurePresentationUpdate(); // Not sure why this is necessary, but it is.
            scroller.scrollTo(0, 200);
            await UIHelper.ensurePresentationUpdate();

            if (window.testRunner)
                testRunner.notifyDone();
        }
        
        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
    <div id="scroller">
        <div class="box"></div>
        <div class="spacer"></div>
    </div>
</body>
</html>
