<!DOCTYPE html>

<html>
<head>
  <script src="../../resources/run-after-layout-and-paint.js"></script>
  <style type="text/css" media="screen">
    iframe {
        border: 10px solid black;
        padding: 5px;
        margin: 20px;
        height: 150px;
        width: 300px;
        -webkit-box-shadow: 0 0 20px black;
        will-change: transform;
    }
    
    .overlay {
      position: absolute;
      width: 50px;
      height: 50px;
      top: 5px;
      left: 5px;
      background-color: rgba(0, 0, 0, 0.2);
    }
    
  </style>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    // Called from subframe.
    function testDone()
    {
      document.getElementById('parent-iframe').contentDocument.body.offsetWidth; // work around bug 41999.

      if (window.testRunner) {
        runAfterLayoutAndPaint(function() {
          document.getElementById('layers').innerText = internals.layerTreeAsText(document);
          testRunner.notifyDone();
        });
      }
    }
  </script>
</head>
<body>

    <!-- Test with already-composited iframe, and iframe contents becoming composited. -->
    <iframe id="parent-iframe" src="resources/enter-compositing-subframe.html"></iframe>
    
    <div class="overlay">
    </div>

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