<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />

  <!-- To run this test: Open this page, close the window, and (hopefully) don't crash.-->

  <script>    
    function gc()
    {
        if (window.GCController)
            GCController.collect();
        else
            for (var i = 0; i < 10000; ++i) // Allocate a sufficient number of objects to force a GC.
                ({});
    }
    window.onload = init;
    
    function init() {
      var iframe = document.getElementById("iframe");
      var thesvgdiv = document.getElementById('thediv');
      var theclone = thesvgdiv.cloneNode(true);
      iframe.contentDocument.body.appendChild(theclone);
      setTimeout(function() {
        iframe.style.display = 'none';
        iframe.parentNode.removeChild(iframe);
        gc();
        window.close();
      }, 500);
    }
  </script>
</head>

<body>
  <div>
    <div id="thediv">
      <svg id="thesvg" width="12cm" height="3.6cm" viewBox="0 0 1000 300">  
          <defs>
            <lineargradient id="orange_red" x2="0" y2="1" >
              <stop stop-color="yellow" />
              <stop offset="1" stop-color="red" />
            </lineargradient>
          </defs>
          <path id="MyPath" d="M 100 200  C 200 100 300   0 400 100   C 500 200 600 300 700 200  C 800 100 900 100 900 100" fill="none" stroke="red" />  
          <text font-family="Verdana" font-size="72.5" fill="url(#orange_red)" >    
            <textpath xlink:href="#MyPath"> Look mom, SVG in HTML! </textpath>  
          </text>
          (If you had an HTML5 compliant browser, the previous text would be colored and on a path.)
      </svg>
    </div>
    <div>
      <iframe id="iframe" width="50%" height="50%"></iframe>
    </div>
  </div>
</body>
</html>