<script src="../../../resources/gc.js"></script>
<script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.setCanOpenWindows();
        testRunner.setCloseRemainingWindowsWhenComplete();
        testRunner.waitUntilDone();
    }

    var win = window.open("resources/dom-access-from-closure-window-child.html", "child");

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

    function done()
    {
        gc();
        // Call the method injected by resources/dom-access-from-closure-window-child.html
        accessFrame();

        if (window.testRunner)
            testRunner.notifyDone();
    }
</script>
<pre id="console"></pre>
