<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true AsyncOverflowScrollingEnabled=true AsyncFrameScrollingEnabled=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;
            z-index: 0;
            position: relative;
        }
        
        .sticky {
            position: -webkit-sticky;
            top: 0px;
            width: 200px;
            height: 200px;
            background-color: green;
        }

        .container {
            margin: 40px;
            border: 2px solid red;
            height: 5000px;
        }
    </style>
    <script src="../../resources/ui-helper.js"></script>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();

        async function doTest()
        {
            if (!window.testRunner)
                return;

            if (!testRunner.runUIScript)
                return;
            
            await UIHelper.ensurePresentationUpdate();
            document.querySelector('.scroller').scrollTo(0, 200);
            await UIHelper.ensurePresentationUpdate();

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