<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB">
<!-- =========================================== kroc camen of camen design ============================================= -->
<head>
  <title>camen design - Video for Everybody!</title>
  <style type="text/css" media="screen">
    body {
      width: 600px;
      margin: 0 auto;
    }

    #sidebar {
      position: absolute;
      height: 100px;
      width: 100px; 
      margin-left: -200px;
      padding-left: 200px;
      background: gray;
    }

    #article {
      position: relative;
      border: 1px solid black;
    }

    #compositing {
      height: 100px;
      width: 100px;
      background-color: green;
      margin: 0 auto;
      -webkit-transform: translateZ(0);
    }
    
    #tester {
      position: absolute;
      top: 1px;
      left: 350px;
      height: 100px;
      width: 100px;
      background-color: red;
    }
  </style>
  <script type="text/javascript" charset="utf-8">
  if (window.testRunner)
    testRunner.waitUntilDone();

  function startTest()
  {
    window.setTimeout(function() {
      document.documentElement.style.width = '800px'
      window.setTimeout(function() {
        if (window.testRunner)
          testRunner.notifyDone();
      }, 0);
    }, 0);
  }

  window.addEventListener('load', startTest, false);
  </script>
</head>
<body>

  <div id="tester"></div>
  <div id="sidebar"></div>

  <div id="article">
    <div id="compositing"></div>
  </div>
  <p><a href="rdar://problem/7026010">rdar://problem/7026010</a><br>
    Test for the root layer getting correctly positioned. You should see no red.</p>
</body>
</html>
