<script>
if (window.testRunner)
    testRunner.waitUntilDone();

function mouseOver()
{
    var trouble = document.createElement('iframe');
    trouble.id='trouble';
    trouble.src="data:text/html,... then into this iframe to crash."
    document.getElementById("parentNode").appendChild(trouble);
}

function mouseOut()
{
    var trouble = document.getElementById('trouble');
    trouble.parentNode.removeChild(trouble);
}

function runTest()
{
    var e1 = document.getElementById("parentNode");
    var x = e1.offsetLeft+3;
    var y = e1.offsetTop+3;
    eventSender.mouseMoveTo(x, y);
    var e2 = document.getElementById('trouble');
    x = e2.offsetLeft+3;
    y = e2.offsetTop+3;
    eventSender.mouseMoveTo(x, y);
    
    printResults("PASSED");
}

function printResults(result)
{
    var console = document.getElementById("results");
    console.innerHTML = result;
    console.style.display = "block";
    document.getElementById("parentNode").style.display = "none";
    testRunner.dumpAsText();
    testRunner.notifyDone();
}

</script>

<body onload="runTest()">
<div id="parentNode" onmouseout="mouseOut()" onmouseover="mouseOver()">
Mouseover this text...
</div>
<br>
<div id="results" style="display:none;"></div>
</body>
