<head>
<script>

function frameLoaded()
{
    // create lots of objects to force a garbage collection
    var i = 0;
    var s;
    while (i < 5000) {
        i = i+1.11;
        s = s + " ";
    }

    var output= document.getElementById("output");

    output.innerHTML += spanB.customProperty + "<BR>";
    output.innerHTML += spanB + "<BR>";
    output.innerHTML += spanB.parentNode + "<BR>";
    output.innerHTML += spanB.ownerDocument + "<BR>";
    
    if (window.layoutTestController)
        layoutTestController.notifyDone();
}

function doit()
{
    var frame = document.getElementById("frame");
    spanB = frame.contentDocument.getElementById("span-B");
    spanB.customProperty = "B";
    frame.onload = frameLoaded;    
    frame.src = "about:blank";    
}

if (window.layoutTestController) {
    layoutTestController.dumpAsText();
    layoutTestController.waitUntilDone();
}

</script>
</head>

<body onload="doit()">
<div style="border: 1px solid red">
<p>
This test verifies that DOM documents are protected against garbage
collection but without necessarily keeping all their children alive,
so long as any node in the document is reachable.
</p>
<p>
The output should be the following pieces of text on lines by
themselves: "B", "[object HTMLElement]", "null", "[object HTMLDocument]".
</p>
</div>

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

<iframe id="frame" src='data:text/html,<div id="div"><span id="span-A"><span id="span-B"><span id="span-C">original span</span></span></span></div>'>
</body>
