<html> <head> <script> if (window.layoutTestController) { layoutTestController.dumpAsText(); layoutTestController.waitUntilDone(); } var container1; var container2; var elem; function handler2() { container2.appendChild(elem); } function onload() { container1 = document.getElementById("newcontainer1"); container2 = document.getElementById("newcontainer2"); if (!window.eventSender) return; var rect = document.getElementById("trigger").getBoundingClientRect(); eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2); eventSender.mouseDown(); eventSender.mouseUp(); } function onpress() { elem = document.getElementById("subcontainer1"); document.getElementById("sub1").focus(); try { container1.appendChild(elem); container1.removeChild(elem); elem = null; } catch (e) { } // Force GC. if (this.GCController) GCController.collect(); else { for (var i = 0; i < 10000; ++i) { ({ }); } } document.body.removeChild(container2); if (window.layoutTestController) layoutTestController.notifyDone(); } </script> </head> <body onload="onload()"> <p>Tests for proper handling of DOM changes during a blur event. If the test doesn't crash, it passed. <div id="subcontainer1"> <textarea id="sub1" onblur="handler2()"></textarea> </div> <input id="trigger" type="button" name="Press" value="press" onclick="onpress()"> <div id="newcontainer1"></div> <div id="newcontainer2"></div> </body> </html>