<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Test for bug 25282 (bug 12885 with a repaint container)</title>
    <style type="text/css">
        div.wrapper {
          height: 420px;
          width: 120px;
          margin: 20px;
          -webkit-transform: translateZ(0);
        }
        div.outer { position: absolute; }
        div.wide { width: 100px; height: 50px; }
        div.narrow { width: 50px; }
        div.tall { width: 50px; height: 100px; }
        div.short { height: 50px; width: 50px; }
        #main-content { float: left; width: 100px; height: 80px; }
        #target3 { display: none; clear: both; height: 20px; background: green; }
    </style>
    <script>
        if (window.layoutTestController)
          layoutTestController.waitUntilDone();

        function repaintTest()
        {
            document.getElementById('target1').style.width = 'auto';
            document.getElementById('target2').style.height = 'auto';
            document.getElementById('target3').style.display = 'block';

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

        function runRepaintTest()
        {
            setTimeout(repaintTest, 0);
        }
    </script>
</head>
<body onload="runRepaintTest();">

  <div class="wrapper">
    <div class="outer" style="border: medium solid green; top: 8px; height: 100px;">
        <div class="narrow" id="target1">
            <div class="wide"></div>
        </div>
    </div>

    <div class="outer" style="border: medium solid green; top: 158px; width: 100px;">
        <div class="short" id="target2">
            <div class="tall"></div>
        </div>
    </div>

    <div class="outer" style="top: 308px;">
        <div style="background: green;">
            <div style="position: relative;">
                <div id="main-content">
                </div>
            </div>
            <div id="target3"></div>
        </div>
    </div>
  </div>
</body>
</html>
