<!DOCTYPE html> <!-- webkit-test-runner [ AsyncOverflowScrollingEnabled=true ] -->
<html>
<head>
    <style>
        body {
            height: 1000px;
        }
        .container {
            position: absolute; /* Containing block for the inner absolute */
            top: 10px;
            left: 10px;
        }
        .scroller {
            height: 300px;
            width: 300px;
            border: 20px solid gray;
            padding: 5px;
            overflow: scroll;
            opacity: 0.8; /* Force stacking context */
        }
        
        .content {
            width: 200%;
            height: 300%;
        }
        
        .absolute {
            position: absolute;
            top: 100px;
            left: 50px;
            height: 200px;
            width: 200px;
            background-color: green;
        }
    </style>
    <script src="../../../resources/ui-helper.js"></script>
    <script>
        async function scrollOverContent()
        {
            await UIHelper.renderingUpdate();
            await UIHelper.mouseWheelScrollAt(50, 50);
        }

        async function scrollTest()
        {
            await scrollOverContent();
            if (window.testRunner)
                testRunner.notifyDone();
        }
        
        async function doTest()
        {
            document.body.offsetWidth;
            document.body.classList.add('changed');
            setTimeout(scrollTest, 0);
        }

        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
    <div class="container">
        <div class="scroller">
            <div class="content">
                <div class="absolute">
                </div>
            </div>
        </div>
    </div>
</body>
</html>
