<!DOCTYPE html>
<html>
<head>
<style>
    body {
        height: 2500px;
    }
    
    .scroller {
        border: 1px solid black;
    }

    .outer.scroller {
        width: 500px;
        height: 300px;
        overflow: auto;
    }

    .inner.scroller {
        width: 400px;
        height: 250px;
        overflow-x: hidden;
        overflow-y: auto;
        margin: 10px;
    }

    .contents {
        height: 300%;
        width: 300%;
    }
    
    .wide {
        width: 300%;
        height: 10px;
        background-color: gray;
    }
    
    </style>
<script src="../../../resources/js-test-pre.js"></script>
<script src="../../../resources/ui-helper.js"></script>
<script>
    jsTestIsAsync = true;

    let innerScroller;
    let outerScroller;

    function checkForScroll()
    {
        innerScroller = document.querySelector('.inner.scroller');
        outerScroller = document.querySelector('.outer.scroller');

        shouldBe('innerScroller.scrollLeft', '0');
        shouldBe('innerScroller.scrollTop', '0');

        shouldBeTrue('outerScroller.scrollLeft > 0');
        shouldBe('outerScroller.scrollTop', '0');

        finishJSTest();
    }

    async function scrollTest()
    {
        eventSender.mouseMoveTo(100, 100);

        // Sideways scroll.
        eventSender.monitorWheelEvents();
        eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'began', 'none');
        eventSender.mouseScrollByWithWheelAndMomentumPhases(-10, 0, 'changed', 'none');
        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
        eventSender.mouseScrollByWithWheelAndMomentumPhases(-10, 0, 'none', 'begin');
        eventSender.mouseScrollByWithWheelAndMomentumPhases(-10, 0, 'none', 'continue');
        eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
        await UIHelper.waitForScrollCompletion();

        checkForScroll();
    }

    function setupTopLevel()
    {
        description("Tests that sieways scrolling in an overflow-x:hidden scroller scrolls the enclosing scroller");
        if (window.eventSender) {
            setTimeout(scrollTest, 0);
            return;
        }

        finishJSTest();
    }

    window.addEventListener('load', () => {
        setupTopLevel();
    }, false);
</script>
</head>
<body>
    <div class="outer scroller">
        <div class="inner scroller">
            <div class="contents"></div>
        </div>
        <div class="wide"></div>
    </div>
<div id="console"></div>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
