<!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;
            position: relative;
        }
        
        .sticky {
            position: -webkit-sticky;
            top: 0px;
            width: 200px;
            height: 200px;
            background-color: green;
        }

        .container {
            margin: 40px;
            border: 2px solid red;
            height: 5000px;
            will-change: transform;
        }
    </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;

            const scrollUpdatesDisabled = true;
            await UIHelper.immediateScrollElementAtContentPointToOffset(50, 50, 0, 200, scrollUpdatesDisabled);
            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>
