<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->

<html>
<head>
    <meta name="viewport" content="initial-scale=1.0">
    <style>
        body {
            height: 2000px;
            margin: 0;
        }

        #fixed {
            position: fixed;
            top: 200px;
            left: 20px;
            height: 100px;
            width: calc(100% - 40px);
            background-color: blue;
        }
        
        #container {
            position: absolute;
            z-index: 0;
            top: 100px;
            left: 0;
            height: 400px;
            width: 100%;
            border: 2px solid black;
            box-sizing: border-box;
            overflow: hidden; /* Forces compositing on this layer */
        }
    </style>
    <script src="../../resources/ui-helper.js"></script>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();

        async function runTest()
        {
            if (!testRunner.runUIScript)
                return

            await UIHelper.delayFor(0);
            await UIHelper.immediateUnstableScrollTo(0, 55);
            await UIHelper.delayFor(120); // Wait for scrollbars to disappear.
            testRunner.notifyDone();
        }
        
        window.addEventListener('load', runTest, false);
    </script>
</head>
<body>
    <div id="container">
        <div id="fixed"></div>
    </div>
</body>
</html>
