<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Transform Repaint Descendants</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <style type="text/css">
    #box {
      position:relative;
      top: 100px;
      left: 100px;
      height: 200px;
      width: 200px;
      background-color: #CCC;
      border: 1px solid black;
    }
    
    #box > div {
      position: absolute;
      height: 50px;
      width: 400px;
      top: 75px;
      left: 75px;
      background-color: #555;
    }
  </style>
  <script src="resources/repaint.js" type="text/javascript" charset="utf-8"></script>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner)
      testRunner.waitUntilDone();

    var gAngle = 20;
    function incrementAngle()
    {
      document.getElementById('box').style.webkitTransform = 'rotate(' + gAngle + 'deg)';
      gAngle += 3;
    }

    function repaintTest()
    {
      incrementAngle();
    }
    
    function startTest()
    {
      incrementAngle();
      window.setTimeout(function() {
        runRepaintTest();
        if (window.testRunner)
          testRunner.notifyDone();
      }, 0);
    }
  </script>
</head>
<body onload="startTest()">
  <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=22088">https://bugs.webkit.org/show_bug.cgi?id=22088</a>. The rotated box should be correctly redrawn.</p>
  <div id="box"><div></div></div>
</body>
</html>
