<!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;
          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>
