<head>
<script>
function test()
{
    var queryIndex = document.URL.indexOf('?');
    if (queryIndex == -1) {
        window.scrollTo(500, 500);

        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();

            eventSender.mouseMoveTo(18, 18);
            eventSender.mouseDown();
            eventSender.mouseUp();
        }
    } else {
        document.write("<div>Form data: " + document.URL.substring(queryIndex + 1) + "</div>");
        document.write("<div>X and Y should both be about 10.</div>");

        if (window.testRunner)
            testRunner.notifyDone();
    }
}
</script>
</head>
<body onload="test()">
<div style="background:red; width:1000px; height:500px"></div>
<div style="background:blue; height:50px; width:500px; float:left"></div>
<form method="get" action="input-image-scrolled-x-y.html"><input type="image" src="resources/greenbox.png"></form>
<div style="background:orange; width:3000px; height:3000px"></div>
</body>
