<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg">
  <!--
    This tests that a style change on a <text> element within a resource
    element like <mask> will cause a reflow of the <text>.
  -->
  <style>
    svg { font: 16px sans-serif; }
    svg.a { font-size: 32px; }
  </style>
  <defs>
    <mask id="m" x="0" y="0" width="600" height="400">
      <text x="100" y="100" fill="white"><tspan>abc</tspan><tspan>def</tspan></text>
    </mask>
  </defs>
  <rect width="600" height="400" fill="blue" mask="url(#m)"/>
  <script>
    function doTest() {
      document.documentElement.setAttribute("class", "a");
      if (window.testRunner)
        testRunner.notifyDone();
    }
    if (window.testRunner)
      testRunner.waitUntilDone();

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