<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

gc = window.gc || function()
{
    if (window.GCController)
        return GCController.collect();
    
    for (var i = 0; i < 10000; ++i)
        var s = new String("AAAA");
}

handler = function()
{   
    this.removeEventListener("DOMNodeRemoved", handler, false);
    document.body.removeChild(object);
}

window.onload = function()
{    
    object = document.createElement("object");
    
    object.innerHTML = "<embed width=\"2\"/><element id=\"foo\"/>";
    embed = object.firstChild;
    
    attr = document.createAttribute("width");
    object.setAttributeNode(attr);
    attr.appendChild(document.createTextNode(1));
    attr.childNodes[0].addEventListener("DOMNodeRemoved", handler, false);
    
    document.body.appendChild(object);
    
    object = attr = null;
    gc();
    
    setTimeout(finishTest, 0);
}

finishTest = function()
{
    document.getElementById("foo");
    
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</head>
<body>PASS</body>
</html>
