<html>
<head>
<title>GC test 10</title>
<script>
function print(message, color) 
{
    var paragraph = document.createElement("div");
    paragraph.appendChild(document.createTextNode(message));
    paragraph.style.fontFamily = "monospace";
    if (color)
        paragraph.style.color = color;
    document.getElementById("console").appendChild(paragraph);
}

var before,after;
var threshold = 5;

function test()
{
    if (window.GCController)
    {
        GCController.collect();
        before = GCController.getJSObjectCount();
        
        window.frames.myframe.location.reload(true);

        GCController.collect();
        after = GCController.getJSObjectCount();
        
        // Unfortunately we cannot do a strict check here because there is still very minor (3) JS object increase,
        // likely due to temporary JS objects being created during further execution of this test function.
        // However, the iframe document leaking everything has an addition of ~25 objects every
        // refresh, so it still is an accurate test.
        if (after > (before + threshold))
        {
            print("FAIL: " + before + " objects before refresh, " + after + " objects after refresh.", "red");
        }
        else
        {
            print("PASS: Refresh did not leak JS objects.", "green");
        }
    }
    else
    {
        print("WARNING: Test cannot run if GCController does not exist. Thus it only runs from the test interface.", "red");
    }
}

</script>
</head>

<body style="color: black" onload="test()">
<p>This page tests to make sure that the refresh of a page which holds a document reference in its DOM wrapper tree
does not leak all of its associated JS objects.</p>
<p>If the test passes, you'll see a single 'PASS' message below.</p>
<hr>

<div id='console'></div>

<iframe name="myframe" id="myframe" src="resources/gc-10-frame.html">
</body>
</html>
