<html>
<!--
This test checks for the regression bug that causes white, horizontal blank bars
to occur when scrolling scaled images in Chromium. Since test_shell implements scrolling
differently than Chrome, we simulate scrolling by occluding part of the image, and
verifying it repaints correctly when the occlusion is removed. The image must straddle
the bottom edge of the window with no more than about 20% visible in order to force
ImageSkia to do a partial load, as this is a precondition of the regression.
-->
<script type='text/javascript'>

  function doScroll()
  {
    // Remove occlusion after initial page draw.
    var occluder = document.getElementById('occluder');
    occluder.style.top = 600;

    if (window.testRunner)
      testRunner.notifyDone();
  }

  if (window.testRunner)
    testRunner.waitUntilDone();

</script>
<body onLoad="doScroll();" style="overflow:hidden;">
<p>This test verifies correct repaint of scrolled/re-painted-after-uncovering, scaled images.</p>
<p>If successful, the image below extends past the bottom of the window, with no white bar
   occluding the part of the image adjacent to the bottom of the window.</p>
<!-- It is important for the image to be loaded with only a small amount showing,
     as ImageSkia will only do a partial load in this case, which is required to
     trigger the regression. -->
<img id = "pic" src="resources/image-rescale.jpg" width="160" height="105"
    style="position: absolute; left: 50px; top:580px"
    > <!-- Rescaled to 1/2 normal size, required to trigger the regression. -->

<!-- The div below occludes part of the image. It is removed shortly after the
     document has loaded, but if the regression is present the image will not
     repaint correctly. -->
<div id="occluder" style="position:absolute; left:0px; top:590px; width:300px; height:10px; background:white;"></div>
</body>
</html>

