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

        if (window.internals)
            internals.setPagination("LeftToRightPaginated", 10, 400);

        function dumpLayers()
        {
            var result = "Element at 500, 200: " + document.elementFromPoint(500, 200).classList + "\n";

            if (window.testRunner)
                result += window.internals.layerTreeAsText(document);

            document.getElementById('layers').innerText = result;
        }
        
        window.addEventListener('load', dumpLayers, false);
    </script>
    <style>
    .spacer {
        height: 350px;
        width: 100%;
        margin: 10px;
        background-color: silver;
    }
    
    .box {
        height: 100px;
        width: 100px;
        margin: 10px;
        background-color: blue;
    }
    .composited {
      -webkit-transform: translateZ(0);
    }
    </style>
</head>
<body>

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

</body>
</html>
