<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
if (window.testRunner)
    testRunner.waitUntilDone();

var testFinished = false;

function done()
{
    if (testFinished)
        return;
    testFinished = true;
    testPassed("received mousemove event.");
    debug('<br /><span class="pass">TEST COMPLETE</span>');
    if (window.testRunner)
        testRunner.notifyDone();
}

function runTest()
{
     if (!window.eventSender)
        return;

    var frame = document.getElementById("frame");
    var centerX = frame.offsetLeft + frame.offsetWidth / 2;
    var centerY = frame.offsetTop + frame.offsetHeight / 2;
    eventSender.mouseMoveTo(centerX, centerY);
}

window.onload = runTest;
</script>
</head>
<body>
<p id="description"></p>
<iframe id="frame" src="resources/iframe-onmousemove.html"></iframe>
<div id="console"></div>
<script>
    description("This test can be used to verify that a mousemove event is fired when moving the mouse cursor over an element in a subframe.");
</script>
</body>
</html>
