<!DOCTYPE html> <!-- webkit-test-runner [ AsyncOverflowScrollingEnabled=true ] -->
<html class="reftest-wait">
    <head>
        <style>
            html, body {
                margin: 0px;
            }
            ::-webkit-scrollbar {
                display: none;
            }
            .sticky {
                position: sticky;
                top: 0px;
            }
            .parent {
                height: 150vh;
            }
            .child {
                background: green;
                height: 4vh;
                width: 4vh;
            }
        </style>
        <script src="../../resources/ui-helper.js"></script>
        <script>
            async function runTest() {
                if (!window.testRunner) {
                    return;
                }

                try {
                    await UIHelper.delayFor(0);

                    eventSender.monitorWheelEvents();
                    eventSender.mouseMoveTo(10, 10);

                    // `direction` is a two-element array with a one in the appropriate direction.
                    let scrollMotions = [
                        [0, -1, 'began', 'none'],
                        [0, -1, 'changed', 'none'],
                        [0, -1, 'changed', 'none'],
                        [0, -1, 'changed', 'none'],
                        [0, 0, 'ended', 'none'],
                        [0, -1, 'none', 'begin'],
                        [0, -1, 'none', 'continue'],
                        [0, 0, 'none', 'end'],
                    ];
                    scrollMotions.forEach((callArguments) => {
                        eventSender.mouseScrollByWithWheelAndMomentumPhases(...callArguments);
                    });

                    await UIHelper.waitForScrollCompletion();
                } catch (e) {
                    console.log(e);
                } finally {
                    document.documentElement.classList.remove("reftest-wait");$
                }
            }
        </script>
    </head>
    <body onload="runTest();">
    <div class="sticky parent">
        <div class="sticky child"></div>
    </div>
    <div id="console"></div>
    </body>
</html>
