<html>
<head>
    <!-- https://bugs.webkit.org/show_bug.cgi?id=17688 - ensure the <embed> element does not propagate its height and width to an object ancestor node -->
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function measure() {
            if ((document.getElementById("first").offsetWidth == document.getElementById("second").offsetWidth)
                && (document.getElementById("first").offsetHeight == document.getElementById("second").offsetHeight)
                && document.getElementById("third").height == 100 
                && document.getElementById("third").width == 100)
              document.getElementById("console").innerHTML = "SUCCESS";
            testRunner.notifyDone();
        }

        function test(){
            window.setTimeout(measure(),0);
        }
    </script>
</head>
<body onload="test();">
    <object id="first" data="resources/mu.png" style="height: 100px; width:100px;"><embed height="300" width="300"></object>
    <br>
    <object id="second" data="resources/mu.png" style="" width="100" height="100"><embed height="300" width="300" type="application/x-webkit-test-netscape"></object>
    <br>
    <object id="third" style="" width="100" height="100"><embed height="300" width="300" type="application/x-webkit-test-netscape"></object>
    <div id="console">FAILURE</div>
</body></html>

