<!DOCTYPE html> <!-- webkit-test-runner [ AsyncOverflowScrollingEnabled=true ] -->
<html>
<head>
    <style>
        #scroller {
            position: absolute;
            top: 20px;
            left: 20px;
            width: 500px;
            height: 400px;
            border: 2px solid gray;
            overflow-y: scroll;
            background-color: rgba(255, 255, 255, 0.5);
            box-sizing: border-box;
        }

        .fixed {
            position: fixed;
            left: 0px;
            top: -200px; /* outside the viewport */
            width: 200px;
            height: 100px;
        }

        .box {
            position: absolute;
            top: 210px;
            left: 10px;
            width: 300px;
            height: 100px;
            background-color: green;
        }

        .contents {
            position: absolute;
            left: 35px;
            top: 28px;
            width: 90%;
            height: 300%;
        }

        .outside-box {
            position: absolute;
            overflow: hidden;
            top: 20px;
            left: 530px;
            width: 20px;
            height: 400px;
            background-color: silver;
        }

        #header {
            position: relative;
            background-color: blue;
            width: 100%;
            height: 20px;
        }
    </style>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();

        window.addEventListener('load', () => {
            const scroller = document.getElementById('scroller');
            scroller.addEventListener('scroll', () => {
                const scrollPos = scroller.scrollTop;
                const header = document.getElementById('header');
                header.style.top = `-${scrollPos}px`;
            }, false);
            
            requestAnimationFrame(() => {
                scroller.scrollTop = 100;
                if (window.testRunner)
                    testRunner.notifyDone();
            })
        }, false);
    </script>
</head>
<body>
    <div id="scroller">
        <div class="contents">
            <div class="fixed"></div>
            <div class="box"></div>
        </div>
    </div>
    <div class="outside-box">
        <div id="header">relative</div>
    </div>
</body>