<!DOCTYPE html> <!-- webkit-test-runner [ internal: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: hidden;
            opacity: 0.8; /* Force stacking context */
        }
        
        body.changed .scroller {
            overflow: scroll;
        }
        
        .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.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>
