<!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.testRunner)
          testRunner.waitUntilDone();

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

            if (window.testRunner)
              testRunner.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>
