<head>
    <style>
        .box {
          width: 200px;
          height: 200px;
          background-color: silver;
          filter: url(#filter);
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function changeFilterAndFinish()
        {
            if (window.internals)
                window.internals.startTrackingRepaints();
        
            document.getElementById('turbulence').setAttributeNS(null, 'seed', 6)
        
            if (window.internals)
                document.getElementById('log').textContent = window.internals.repaintRectsAsText();
            if (window.testRunner)
                testRunner.notifyDone();
        
        }
        window.addEventListener('load', () => {
            setTimeout(() => {
                changeFilterAndFinish()
            }, 0);
        }, false);
    </script>
</head>
<body>
   <svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" version="1.1">
    <defs>
        <filter id="filter">
            <feTurbulence id="turbulence" type="turbulence" baseFrequency="0.01" numOctaves="1" seed="5" stitchTiles="stitch"/>
            <feColorMatrix type="saturate" values="0"/>
        </filter>
    </defs>
  </svg>
  <div class="box"></div>
<pre id="log"></pre>
</body>
