<html>
    <head>
        <script>
            if (window.testRunner) {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }
            function timeoutFired()
            {
                document.getElementById('console').innerHTML = "Not scrolled by WheelEvent: SUCCESS";
                if (window.testRunner)
                    window.testRunner.notifyDone();
            }
            function scrollEventFired()
            {
                document.getElementById('console').innerHTML = "Scrolled by WheelEvent: FAILED (Should not be scrolled).";
                if (window.testRunner)
                    window.testRunner.notifyDone();
            }
            function runTest()
            {
                window.frames[0].onscroll = scrollEventFired;
                if (window.frames[0].eventSender) {
                    window.frames[0].eventSender.mouseScrollBy(0, -1);
                }
                setTimeout("timeoutFired()", 1000);
            }
        </script>
    </head>
    <body>
        <div id="console"></div>
        <iframe onload="runTest();" scrolling="no" style="width:200px;height:200px;" src="resources/scrollable-iframe.html"> 
    </body>
</html>

