<body onload="test()">
<p></p>
<div id=result>Testing...</div>
<iframe src="does-not-exist.html" sandbox=""></iframe>
<script src="/js-test-resources/js-test-pre.js"></script>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}


var w;
function test()
{
    w = frames[0];
    document.body.removeChild(document.getElementsByTagName("iframe")[0]);
    setTimeout(function() {
        gc();
        for (i in w) { }
        try { w.XMLHttpRequest; } catch (ex) { }
        try { w.top; } catch (ex) { }
        document.getElementById("result").innerHTML = "PASS";
        if (window.testRunner)
            testRunner.notifyDone();
    }, 0);
}

</script>
