<html>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function finish()
        {
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
    <body> 
        <object type="image/png" data="this.object.does.not.exist.dtd">
            <object type="image/png" data="this.object.does.not.exist.dtd">
                <object type="image/png" data="this.object.does.not.exist.dtd" onerror="finish()">PASS when no crash occurs.</object>
            </object>
        </object>
    </body>
</html>
