<html>
    <head>
        <script>
            if (window.testRunner) {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }
            function timeoutFired()
            {
                document.getElementById('console').innerHTML = "Scrolled by JavaScript scrollTo(): FAILED";
                if (window.testRunner)
                    window.testRunner.notifyDone();
            }
            function scrollEventFired()
            {
                document.getElementById('console').innerHTML = "Scrolled by JavaScript scrollTo(): PASS";
                if (window.testRunner)
                    window.testRunner.notifyDone();
            }
            function runTest()
            {
                window.frames[0].onscroll = scrollEventFired;
                window.frames[0].scrollTo(0, 50);
                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>

