<!DOCTYPE html>
<html>
<head>
<script>
function focusinListener(evt) {
    try {
        this.parentNode.removeChild(this);
    } catch(e) {
    }
}

function test() {
    if (window.testRunner)
        testRunner.dumpAsText();
    document.getElementById("a").addEventListener('focusin', focusinListener , false);
    document.getElementById("a").focus();
}
</script>
</head>
<body onload="test();">
<p>Test for making sure that a crash does not happen when a focused node is removed in processing focusin eventListner.</p>
<pre id="console"></pre>
<h1 tabindex="0" id="a" ></h1>
</body>
</html>
