<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     xmlns:xlink="http://www.w3.org/1999/xlink">
  <title>Testing that style changes are reflected in patterns</title>
  <style>
    .foo { fill:lime; }
  </style>
  <defs>
    <pattern id="r1" width="100%" height="100%" patternUnits="userSpaceOnUse" xlink:href="#r2">
    </pattern>
  </defs>
  <defs id="d">
    <pattern id="r2">
      <rect width="100%" height="100%"/>
    </pattern>
  </defs>
 
  <rect id="u1" width="100%" height="100%" fill="url(#r1)"/>

  <script>
  function doTest() {
    document.getElementById("d").setAttribute("class", "foo");
    document.documentElement.removeAttribute("class");
    if (window.testRunner)
      testRunner.notifyDone();
  }

  if (window.testRunner)
    testRunner.waitUntilDone();

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