<!DOCTYPE>
<html>
<head>
    <!-- https://bugs.webkit.org/show_bug.cgi?id=28035 -->
    <!-- In quirks mode, an image with height set to 100% should expand to fill the height of the body of the document. -->
    <style>
        img { height:100%; }
    </style>
   <script type="text/javascript">
       if (window.testRunner) {
           testRunner.dumpAsText();
           testRunner.waitUntilDone();
       }

       function run() {
           testHeight = window.getComputedStyle(document.getElementById("image"), null).getPropertyValue("height");
           referenceHeight = window.getComputedStyle(document.getElementById("body"), null).getPropertyValue("height");
           if (testHeight == referenceHeight)
               document.getElementById("console").innerText = "PASSED";
           else
               document.getElementById("console").innerText = "FAILED: testHeight=" + testHeight +"; expected " + referenceHeight;
          if (window.testRunner)
               testRunner.notifyDone();
       }
   </script>
</head>
<body id="body" onload="setTimeout('run()', 0);">
    <img id="image" src="resources/greenbox.png">
    <div id="console"/>
</body>
</html>

