<?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 unsuspendRedrawAll works</title>
  <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=615146 -->

  <script>
    function doTest() {
      var svg = document.documentElement;
      svg.suspendRedraw(10000);
      setTimeout(function() {
        svg.unsuspendRedrawAll();
        svg.removeAttribute("class");
        if (window.testRunner)
            testRunner.notifyDone();
      }, 1);
    }
    
    if (window.testRunner)
      testRunner.waitUntilDone();

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