<script>
function runTest()
{
    if (!window.sessionStorage)
        return;
    
    if (window.testRunner) {
        testRunner.waitUntilDone();
        testRunner.dumpAsText();
    }

    if (sessionStorage.testCompleted) {
        delete sessionStorage.testCompleted;
        if (window.testRunner)
            testRunner.notifyDone();
    } else {
        sessionStorage.testCompleted = true;
        document.location.reload(true);
    }
}

window.addEventListener('load', runTest, false);
</script>
<p>This test should not assert on reload in a debug build.</p>
<div id="element">Element in top frame</div>
<iframe src="resources/layout-after-destruction-subframe.html"></iframe>
<iframe ></iframe>
