<?xml version="1.0"?>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/licenses/publicdomain/
-->
<svg xmlns="http://www.w3.org/2000/svg">
  <title>Test that suspendRedraw doesn't apply after the end of a script</title>
  <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=615146 -->

  <script type="text/javascript">

    function doTest() {
      var svg = document.documentElement;
      svg.suspendRedraw(10000);
      var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
      r.setAttribute("width", "100%");
      r.setAttribute("height", "100%");
      r.setAttribute("fill", "lime");
      svg.appendChild(r);
      svg.removeAttribute("class");
      if (window.testRunner)
        testRunner.notifyDone();
    }
    if (window.testRunner)
      testRunner.waitUntilDone();

    setTimeout(doTest, 100);
    
  </script>
  <rect width="100%" height="100%" fill="red"/>
</svg>
