<html>
<head>
  <style type="text/css" media="screen">
    .container {
        height: 200px;
        width: 200px;
        background-color: green;
        -webkit-transform: translateZ(0);
    }

    #tester {
        position: absolute;
        top: 50px;
        left: 50px;
        height: 100px;
        width: 100px;
        background-color: blue;
    }
  </style>
  <script type="text/javascript" charset="utf-8">
    function doTest() {
        setTimeout(changeBackground1, 0);
    }
    function changeBackground1() {
        document.getElementById('tester').style.backgroundColor = 'red';
        setTimeout(changeBackground2, 0);
    }
    function changeBackground2() {
        document.getElementById('tester').style.backgroundColor = 'green';
        if (window.testRunner)
          testRunner.notifyDone();
    }
    if (window.testRunner) {
      testRunner.waitUntilDone();
      testRunner.dumpAsText(true);
    }
    window.addEventListener('load', doTest, false);
  </script>
</head>
<body>
  <!-- this test should only display a green square -->
  <div class="container">
    <div id="tester"></div>
  </div>
</body>
</html>
