<html>
    <head>
        <style>
            body {
                cursor: hand;
            }
        </style>
        <script>
            function log(text)
            {
                var div = document.createElement("div");
                div.textContent = text;
                document.getElementById("console").appendChild(div);
            }

            function test()
            {
                if (window.testRunner)
                    testRunner.dumpAsText();
                if (!window.eventSender)
                    return;
                eventSender.dragMode = false;
                eventSender.mouseMoveTo(50, 50);
                var originalInfo = internals.getCurrentCursorInfo();

                // The view is 800x600 in tests.
                eventSender.mouseMoveTo(799, 500);
                var scrollbarInfo = internals.getCurrentCursorInfo();
                log("Hovered pointer: " + originalInfo);
                log("Scrollbar pointer: " + scrollbarInfo);
            }
        </script>
    </head>
    <body onload="test()" style="height: 2000px">
        This tests that hovering over a scrollbar resets the mouse cursor to the default pointer.<br>
        <div id="console"></div>
    </body>
</html>
