<p>This page verifies that queued event listeners keep firing even after a node has been removed from the document.</p>
<p>If the test passes, you'll see a PASS message below.</p>

<pre id="console"></pre>

<div id="div"></div>

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

function log(s)
{
    document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
}

var result = [ ];

function reportResult(expected)
{
    var passed = true;
    var end = result.length > expected.length ? result.length : expected.length;
    for (var i = 0; i < end; ++i) {
        if (result[i] != expected[i]) {
            log("FAIL: " + name + " result[" + i + "] should be " + expected[i] + " but instead is " + result[i] + ".");
            passed = false;
        }
    }
    if (passed)
        log("PASS: result should be " + expected + " and is.");
}

var div = document.getElementById("div");
div.addEventListener("click", function f1() {
    result.push(arguments.callee.name);
    div.parentNode.removeChild(div);
}, false);

div.addEventListener("click", function f2() {
    result.push(arguments.callee.name);
}, false);

var event = document.createEvent("MouseEvent");
event.initMouseEvent("click", true, true, document.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, document);
div.dispatchEvent(event);

reportResult([ "f1", "f2" ]);
</script>
