<html>
    <head>
        <style>
            #container {
                width: 410px;
                height: 400px;
                overflow-y: scroll;
            }

            .cell {
                width: 400px;
                height: 400px;
            }

            #cell0 { background-color: #DD0000; }
            #cell1 { background-color: #FF6666; }
            #cell2 { background-color: #00DD00; }
            #cell3 { background-color: #66FF66; }
            #cell4 { background-color: #0000DD; }
            #cell5 { background-color: #6666FF; }
        </style>
        <script src="../../resources/js-test-pre.js"></script>
        <script>

        function checkScrollOffsets()
        {
            var container = document.getElementById("container");
            debug("scrollTop: " + container.scrollTop);
            debug("scrollLeft: " + container.scrollLeft);
            finishJSTest();
            testRunner.notifyDone();
        }

        function testStatelessScrollingAgainstEdge()
        {
            eventSender.mouseMoveTo(100, 100);
            eventSender.mouseScrollByWithWheelAndMomentumPhases(10, 10, "none", "none", true);
            setTimeout(checkScrollOffsets, 0);
        }

        function setup()
        {
            if (window.eventSender) {
                window.jsTestIsAsync = true;
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
                eventSender.monitorWheelEvents();
                setTimeout(testStatelessScrollingAgainstEdge, 0);
            }
        }
        </script>
    </head>

    <body onload="setup();">
        <div id="container">
            <div class="cell" id="cell0"></div>
            <div class="cell" id="cell1"></div>
            <div class="cell" id="cell2"></div>
            <div class="cell" id="cell3"></div>
            <div class="cell" id="cell4"></div>
            <div class="cell" id="cell5"></div>
        </div>
    </body>
    <script src="../../resources/js-test-post.js"></script>
</html>