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

        document.addEventListener("beforeload", function(event) {
            event.preventDefault();
        }, true);

        function checkObject()
        {
            var style = getComputedStyle(document.getElementsByTagName("object")[0], null);
            if (style.width != "auto" || style.height != "auto")
                print("FAIL", "red");

            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
</head>
<body onload="checkObject();">
    <div id="target"></div>
    <div id="console"></div>
    <script>
        document.getElementById("target").innerHTML = "<object data='../../images/resources/test-load.jpg'><span style='font-family:monospace; color:green'>PASS</span></object>";
    </script>
</body>
</html>
