<html>
<head>
    <script src="resources/print.js"></script>
    <script>
        if (window.layoutTestController) {
            layoutTestController.dumpAsText();
            layoutTestController.waitUntilDone();
        }
        
        var count = 0;
        var maxCount = 10;
        var timeout = 100;

        document.addEventListener("beforeload", function(event) {
            if (event.target && event.target.parentElement)
                event.target.parentElement.removeChild(event.target);
        }, true);
    </script>
</head>
<body>
    <p>This page tests that you can correctly remove an object element with an invalid data URL in its beforeload listener without causing a crash.</p>
    <object data="does-not-exist.png">FAIL</object>
    <object data="does-not-exist">FAIL</object>
    <div id="console"></div>
    <script>
        function checkObjectRemoval()
        {
            if (!document.getElementsByTagName("object").length) {
                print("PASS", "green");
                if (window.layoutTestController)
                    layoutTestController.notifyDone();
                return;
            }
            
            if (++count > maxCount) {
                print("FAIL", "red");
                if (window.layoutTestController)
                    layoutTestController.notifyDone();
                return;
            }
            
            setTimeout("checkObjectRemoval()", timeout);
        }
        
        setTimeout("checkObjectRemoval()", timeout);
    </script>
</body>
</html>

