<!DOCTYPE html>

<html>
<head>
  <meta name="viewport" content="initial-scale=1.0">
  <style>
    .overflow {
      overflow: scroll;
      height: 200px;
      width: 200px;
      border: 1px solid black;
    }
  </style>
  <script>
    if (window.testRunner)
      testRunner.waitUntilDone();

    function doTest()
    {
      var overflow = document.getElementById('overflow');

      window.setTimeout(function() {
        overflow.parentNode.removeChild(overflow);
        if (window.GCController)
          GCController.collect();

        window.setTimeout(function() {
          if (window.GCController)
            GCController.collect();

          document.getElementById('overflow2').style.width = "101px";

          window.setTimeout(function() {
            if (window.testRunner)
              testRunner.notifyDone();
          }, 10);
        }, 10);

      }, 10);


    }
    window.addEventListener('load', doTest, false);
  </script>
</head>
<body>

  <div id="overflow" class="overflow">
    Lorem ipsum dolor ssit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </div>

  <div id="overflow2" class="overflow">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </div>
</body>
</html>
