<!--
     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 dynamic changes to the parent element are reflected in gradients</title>
  <defs id="d">
    <linearGradient id="g1" gradientUnits="objectBoundingBox" x2="0" y2="1">
      <stop stop-color="red" offset="0"/>
      <stop stop-color="red" offset="1"/>
    </linearGradient>
    <linearGradient id="g2" gradientUnits="objectBoundingBox" x2="0" y2="1">
      <stop stop-color="lime" offset="0"/>
      <stop stop-color="lime" offset="1"/>
    </linearGradient>
  </defs>

  <g id="g" fill="url(#g1)">
    <rect id="u1" width="100%" height="100%" />
  </g>

  <script>
  function doTest() {
    document.getElementById("g").setAttribute("fill", "url(#g2)");
    document.documentElement.removeAttribute("class");
    if (window.testRunner)
      testRunner.notifyDone();
  }

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

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