<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg">
  <style>
  .foo feComposite { color-interpolation-filters:sRGB; }
  </style>

  <defs class="foo">
    <filter id="f" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" 
            x="0" y="0" width="1" height="1">
      <feFlood flood-color="#ff0000" flood-opacity="0.5" result="flood"/>
      <feComposite width="1" height="1" in="flood" operator="over" in2="SourceGraphic"/>
    </filter>
  </defs>

  <rect width="100" height="100" fill="lime" filter="url(#f)"/>

  <script>
  function doTest() {
    document.getElementById("f").setAttribute("class", "foo");
    document.documentElement.removeAttribute('class');
    if (window.testRunner)
      testRunner.notifyDone();
  }
  if (window.testRunner)
    testRunner.waitUntilDone();
  
  setTimeout(doTest, 100);
  </script>
</svg>
