<html>
<head></head>
<body>
<p id="description"></p>
<br>
<iframe id="subframe" name='subframe'></iframe>
<br>
This tests that window.frames.length does not crash the browser after the
frame navigates away from the current page. You should see "SUCCESS" below
once the test completes.
<br>
<div id="status">Test in progress...</div>

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

var myFrames = subframe.frames;

function done() {
    var foo = myFrames.length;
    document.getElementById("status").innerText = "SUCCESS";
    if (window.testRunner)
        window.testRunner.notifyDone();
}

subframe.document.location = "resources/notify-parent-done.html";
</script>
</body>
</html>
