<!DOCTYPE html>

<html>
<head>
  <style type="text/css" media="screen">
    body {
      position: relative;
    }
    #parent {
      position: relative;
      width: 300px;
      height: 250px;
      padding: 20px;
      border: 1px solid black;
      -webkit-transform: translate(0px, 0px);
    }
    
    #child {
      position: relative;
      left: 10px;
      width: 250px;
      height: 220px;
      background-color: blue;
      -webkit-transform: translate(0px, 0px);
    }
    
   #grandchild {
      position: relative;
      top: 10px;
      left: 10px;
      width: 200px;
      height: 200px;
      background-color: yellow;
      -webkit-transform: rotate(30deg);
    }
    
   #greatgrandchild {
      position: relative;
      left: 100px;
      width: 250px;
      height: 100px;
      background-color: green;
      -webkit-transform: perspective(400)  translate3D(-30px, 30px, 100px) rotateY(60deg);
    }
    
  </style>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner)
      testRunner.waitUntilDone();

    function doTest()
    {
      if (window.testRunner)
        testRunner.notifyDone();
    }

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

<body>
  
  <!-- Normally we skip making a compositing layer on a parent, even if its children are composited -->
  <!-- But if the parent has a 2D transform it should get a compositing layer -->
  <!-- Here we test that the entire hierarchy gets layers when some elements are transformed and others arent -->
  <!-- Should see a box containing a blue box containing a rotated yellow box containing a green box in perspective -->
  <div id="parent">
      This content is in the parent
      <div id="child">
          <div id="grandchild">
              <div id="greatgrandchild">
                  Box should have perspective
              </div>
          </div>
      </div>
  </div>
</body>
</html>

