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

        .fixed {
            position: fixed;
            top: 100px;
            left: 100px;
            width: 50px;
            height: 50px;
            background-color: blue;
        }

        .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();

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