<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>
<a href="anchor-image-scrolled-x-y.html"><img src="resources/greenbox.png" ismap></a>
<div style="background:orange; width:3000px; height:3000px"></div>
</body>
