<!DOCTYPE html>

<html>
<head>
  <style type="text/css" media="screen">
    body {
        height: 1500px;
        margin: 0;
    }
    #banner {
        position: fixed;
        top: 0;
        width: 100%;
        height: 120px;
        background-color: rgba(0, 0, 0, 0.5);
    }
    iframe {
        display: block;
        margin: 20px;
        height: 200px;
        width: 280px;
    }
  </style>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    function doTest()
    {
        // For some reason this delay is required for AppKit to not short-circuit the display.
        window.setTimeout(function() {
          window.scrollTo(0, 100);
          // Force a paint, and give layers a chance to update.
          if (window.testRunner)
            testRunner.displayAndTrackRepaints();
          window.setTimeout(function() {
            if (window.testRunner) {
                document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document);
                testRunner.notifyDone();
            }
          }, 0);
        }, 0);
    }

    window.addEventListener('load', doTest, false);
  </script>
</head>
<body>
    <div id="banner"></div>

    <!-- Tests that when scrolled so that one iframe is overlapped, both iframes
        and their contents become composited. -->
    <iframe style="margin-top: 150px;" src="resources/intermediate-frame.html"></iframe>
    <iframe src="resources/intermediate-frame.html"></iframe>

    <pre id="layers">Layer tree appears here in DRT.</pre>
</body>
</html>
