<!DOCTYPE html>
<html>
<head>
    <title>Test for Bug 33533: window.onload never fires if page contains an &lt;iframe> with a bad scheme or whose load is cancelled by returning null from resource load delegate's willSendRequest</title>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.setCustomPolicyDelegate(true);
            if (testRunner.setShouldDecideNavigationPolicyAfterDelay)
                testRunner.setShouldDecideNavigationPolicyAfterDelay(true);
        }

        window.onload = function() {
            var result = document.getElementById("result");
            if (!window.testRunner) {
                result.innerText = "This test can only be run in DumpRenderTree.";
                return;
            }
            result.innerText = "PASSED";
        };
    </script>
</head>
<body>
    <p>Test for <a href="http://webkit.org/b/33533">window.onload never fires if page contains an
    &lt;iframe> with a bad scheme or whose load is cancelled by returning null from resource load
    delegate's willSendRequest</a>. If the test passes, you should see the word "PASSED" below.</p>
    <div id=result>FAILED</div>
    <iframe src="http://www.example.com/"></iframe>
</body>
</html>
