<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg">
  <title>Testcase to check whitespace handling</title>

  <!-- From https://bugzilla.mozilla.org/show_bug.cgi?id=717870 -->

  <text id="t" x="10" y="50" font-size="50">A </text>
  <script>
    function doTest() {
      // Force frame construction
      document.documentElement.getBoundingClientRect();

      // A dynamic change
      document.getElementById("t").appendChild(document.createTextNode("B"));
      
      document.documentElement.removeAttribute("class");
      if (window.testRunner)
          testRunner.notifyDone();
    }
    
    if (window.testRunner)
      testRunner.waitUntilDone();

    setTimeout(doTest, 100);
  </script>
</svg>
