<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>
