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

    var count = 0;
</script>
</head>
<body onload='deleteFrame()'>
    <script>
    function deleteFrame()
    {
        var frameToRemove = document.getElementById('subframe');
        document.body.removeChild(frameToRemove);
    }

    function reloadSubframe()
    {
        var iframe = document.createElement('iframe');
        iframe.id = 'subframe';
        iframe.src = 'resources/crash-during-iframe-load-stop.html';
        document.body.appendChild(iframe);
        setTimeout(function() { deleteFrame(); }, 0);
    }

    function subFrameFinishedLoading()
    {
        if (window.testRunner)
            testRunner.notifyDone();
    }
    </script>
    <p>This tests that WebKit does not crash when frame loads are interrupted. This test passes if it does not crash.</p>
    <iframe id="subframe" src='resources/crash-during-iframe-load-stop.html'></iframe>
</body>
</html>