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

  function startTest()
  {
    window.setTimeout(function() {
      document.documentElement.style.width = '800px'
      window.setTimeout(function() {
        if (window.layoutTestController)
          layoutTestController.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>
