<!DOCTYPE html>
<html>
  <head>
    <style type="text/css">
      #overlay {
        position: absolute;
        left: 10px;
        top: 10px;
        width: 400px;
        height: 100px;
        z-index: 1;
        background-color: rgba(0, 0, 0, 0.5);
      }

      #container {
        position: absolute;
        left: 200px;
        top: 8px;
        width: 200px;
        z-index: 2;
        border: 2px solid blue;
      }

      #composited {
        will-change: transform;
        width: 20px;
        height: 20px;
      }

      #scroller {
        height: 200px;
        /* translucent to prevent compositing */
        background-color: rgba(255, 255, 0, 0.5);
        overflow-y: scroll;
      }

      #scroller > div {
        height: 400px;
      }
      
      pre {
        margin-top: 200px;
      }
    </style>
    <script type="text/javascript" charset="utf-8">
      if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
      }

      function doTest()
      {
        window.setTimeout(function() {
          document.getElementById('scroller').scrollTop = 50;
          if (window.testRunner) {
            document.getElementById('results').innerText = internals.layerTreeAsText(document);
            testRunner.notifyDone();
          }
        }, 20);
      }
      window.addEventListener('load', doTest, false);
    </script>
  </head>
  <body>

    <div id="composited"></div>

    <div id="overlay"></div>

    <div id="container">
      <div id="scroller">
        <div>scroll me</div>
      </div>
    </div>
    <pre id="results"></pre>
</body>
</html>
