<!DOCTYPE html>
<html>
<head>
<title>This tests that repaint rects are enclosing.</title>
<style>
  div {
    background: green; 
    width: 9px;
    height: 9px;
    position: fixed;
  }
</style>
</head>
<body>
<p id="container"></p>
<script>
  if (window.testRunner)
    testRunner.waitUntilDone();

  var container = document.getElementById("container");
  adjustment = 0.1;
  w = 0.1; h = 0.1;
  for (i = 0; i < 20; ++i) {
    adjustment += 0.1;
    for (j = 0; j < 15; ++j) {
      var e = document.createElement("div");
      e.style.top = ((w + 1) * i + j * adjustment) + "px";
      e.style.left = ((w + 1) * j + i * adjustment) + "px";
      e.style.width = w + "px";
      e.style.height = h + "px";
      container.appendChild(e);
      w += 0.1;
      h += 0.1;
    }
  }
  
  function resize() {
     divs = document.getElementsByTagName("div");
     for (i = 0; i < divs.length; ++i)
       divs[i].style.width = "0px";
     
     if (window.testRunner)
       testRunner.notifyDone();
  }
  setTimeout(resize, 10);
</script>
</body>
</html>
