<html>
<head>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText();

        if (window.internals)
            internals.setPagination("LeftToRightPaginated", 0);

        function dumpLayers()
        {
            if (window.testRunner)
                document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);
        }
        window.addEventListener('load', dumpLayers, false);
    </script>
    <style>
    .spacer {
      height: 350px;
      width: 100%;
      margin: 10px;
      background-color: silver;
    }
    
    .clipping {
        height: 100px;
        width: 100px;
        border: 1px solid black;
        overflow: hidden;
        z-index: 0;
    }
    .box {
      height: 200px;
      width: 200px;
      background-color: blue;
      border: 20px solid darkblue;
    }
    .composited {
      -webkit-transform: translateZ(0)
    }
    </style>
</head>
<body>

  <div class="spacer"></div>
  <div class="spacer"></div>
  <div class="clipping">
      <div class="composited box"></div>
  </div>
<pre id="layers">Layer tree goes here in DRT</pre>

</body>
</html>
