<html>
<head>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
}

function log(text)
{
    var console = document.getElementById('console');
    console.appendChild(document.createTextNode(text));
    console.appendChild(document.createElement('br'));
}
</script>
<body>
<img id="imageSlow" 
     src="resources/image-slow.pl" width="128" height="128">
<div id="console"></div>
<script language="JavaScript"> 
    var e = document.getElementById("imageSlow");
    function runTest() {
        readyState = document.readyState;
        if (readyState == 'complete') {
            log("Success")
            testRunner.notifyDone()
        } else if (readyState == 'loading' || readyState == 'interactive') {
            x = e.offsetLeft + e.offsetWidth / 2;
            y = e.offsetTop + e.offsetHeight / 2;
    
            eventSender.mouseMoveTo(x, y);
            eventSender.mouseDown();    
            eventSender.mouseMoveTo(x + 100, y + 100);
            eventSender.mouseUp();
            setTimeout("runTest()", 50);
        }
    }

    runTest();
</script>
</body>
</head>
</html>

