<!DOCTYPE html>
<html>

<head>
    <script src="../resources/run-after-layout-and-paint.js"></script>
    <style>
        body {
            margin: 0;
            height: 2500px;
        }

        .box {
          height: 100px;
          width: 100px;
        }

        .fixed {
            position: fixed;
            left: 0px;
            top: 0px;
        }

        .wrapper {
          position: absolute;
          background-color: green;
        }
        
    </style>
    <script>
      if (window.testRunner) {
        testRunner.waitUntilDone();
        testRunner.dumpAsText();
      }
      if (window.internals) {
          internals.settings.setPreferCompositingToLCDTextEnabled(true);
      }

      function doScroll()
      {
        window.setTimeout(function() {
          window.scrollTo(0, 200);

          runAfterLayoutAndPaint(function() {
            if (window.internals) {
              document.getElementById('results').innerText = internals.layerTreeAsText(document);
              if (window.testRunner) {
                testRunner.notifyDone();
              }
            }
          });
        }, 10);
      }
      
      window.addEventListener('load', doScroll, false);
    </script>
</head>
<body>
  <pre id="results"></pre>
  <div class="fixed">
    <div class="wrapper box">
    </div>
  </div>
</body>
</html>
