<html>
<head>
    <script src="resources/print.js"></script>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText();

        document.addEventListener("beforeload", function(event) {
            if (event.target && event.target.parentElement)
                event.target.parentElement.removeChild(event.target);
                // Note, we intentionally do not cancel the load here,
                // WebCore should automatically cancel it.
                // Otherwise DRT will print:
                // Blocked access to external URL http://webkit.org/
        }, true);
    </script>
</head>
<body>
    <p>This page tests that you can correctly remove an iframe element in its beforeload listener without causing a crash.</p>
    <iframe src="http://webkit.org"></iframe>
    <div id="console"></div>
    <script>
        if (document.getElementsByTagName("iframe").length)
            print("FAIL", "red");
        else
            print("PASS", "green");
    </script>
</body>
</html>
