<!DOCTYPE html>
<html>
  <head>
    <title>Self painting layers</title>

    <style type="text/css" media="screen">

    #container {
      width: 300px;
      margin: 10px;
      border: 1px solid black;
    }
    
    #details {
     width: 300px;
     height: 150px;
     margin: 10px;
     overflow: auto;
     border: 1px solid black;
    }

    #details > div {
      width: 100%;
      height: 500px;
      font-size: 24pt;
      line-height: 150%;
    }
    
    </style>
    <script type="text/javascript" charset="utf-8">
      if (window.layoutTestController)
        layoutTestController.waitUntilDone();

      function testOnLoad()
      {
        window.setTimeout(function() {
          document.getElementById('details').scrollTop = 24;
          if (window.layoutTestController)
            layoutTestController.notifyDone();
        }, 0);
      }
      
      window.addEventListener('load', function() {
        document.getElementById('video').src = "resources/video.mp4";
      }, false);
    </script>
  </head>
  <body>
      <p>You should not see double text when the div scrolls</p>
        <div id="container">
          <video id="video" width="300" height="200" onload="testOnLoad()"></video>
        </div>

        <div id="details">
            <div>
              Scrolled<br>text<br>here.
            </div>
        </div>

  </body>
</html>
