<!-- webkit-test-runner [ dumpJSConsoleLogInStdErr=true ] -->
<html manifest="THIS_FILE_DOES_NOT_EXIST.manifest">
<head>
  <script src="THIS_FILE_DOES_NOT_EXIST.js" type="text/javascript"></script>
  <script type="text/javascript">
    var isParentFrame = window == window.top;

    if (isParentFrame) {
        if (window.testRunner) {
            testRunner.dumpAsText()
            testRunner.waitUntilDone();
        }

        window.onmessage = function() {
            document.getElementById('result').innerHTML = "SUCCESS";
            if (window.testRunner)
                testRunner.notifyDone();
        }
    } else {
        window.applicationCache.onchecking = function() {
            parent.postMessage("hello", "*");
            parent.killChildFrame();
        }
    }

    function killChildFrame() {
        document.body.removeChild(document.getElementsByTagName("iframe")[0]);
    }
  </script>
</head>
<body>
<p>Test the destruction of an iframe while deferred events are being raised does not crash the system.</p>
<div id="result">FAILURE</div>
<iframe src="deferred-events-delete-while-raising.html"></iframe>
</body>
</html>
