<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;
    }
    .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>
