<!DOCTYPE html>
<html>
<head>
  <style type="text/css" media="screen">
    embed {
      height: 10px;
      width: 10px;
      border: 1px solid black;
    }
    
    embed.large {
      width: 300px;
      height: 150px;
    }
    
    .container {
      height: 100px;
      width: 200px;
      overflow: hidden;
    }
  </style>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    function doTest()
    {
        window.setTimeout(function() {
          document.getElementById('plugin').className = 'large';
          // Need to wait for compositing layers to be updated. FIXME remove.
          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 class="container">
    <embed id="plugin" type="application/x-webkit-test-netscape" width="10" height="10" drawingmodel="coreanimation">
  </div>

  <!-- we should have layers after the resize -->
  <pre id="layers">Layer tree appears here in DRT.</pre>
</body>
</html>
