<!DOCTYPE html>
<html>
<head>
    <script src="../../fast/repaint/resources/repaint.js"></script>
    <script>
        function repaintTest() {
            document.getElementById('behind').setAttribute('fill', 'green');
            document.getElementById('translate').setAttribute('x', '0');
            document.getElementById('transform').setAttribute('transform', 'translate(0 0)');
            document.getElementById('scale').setAttribute('transform', 'scale(1)');
        }
    </script>
</head>
<body onload="runRepaintTest()">
Test for WK104207: This test passes if there are 4 green squares each with a smooth black circle in the top-left corner.<br/>
    <svg xmlns="http://www.w3.org/2000/svg" width="400" height="450">
        <!-- Test invalidating content behind the static content. -->
        <rect id="behind" x="40" y="10" width="20" height="80" fill="red"/>
        <image x="0" y="0" width="100" height="100" xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'><rect x='10' y='10' width='30' height='80' fill='green'/><rect x='60' y='10' width='30' height='80' fill='green'/><circle cx='25' cy='25' r='10' fill='green' stroke='black' stroke-width='1'/></svg>"/>

        <!-- Test translating static content -->
        <rect x="20" y="140" width="30" height="30" fill="red"/>
        <image id="translate" x="50" y="120" width="100" height="100" xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'><rect x='10%' y='10%' width='80%' height='80%' fill='green'/><circle cx='25' cy='25' r='10' fill='green' stroke='black' stroke-width='1'/></svg>"/>

        <!-- Test transforming static content -->
        <rect x="20" y="260" width="30" height="30" fill="red"/>
        <image id="transform" transform="skewX(30)" x="0" y="240" width="100" height="100" xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'><rect x='10%' y='10%' width='80%' height='80%' fill='green'/><circle cx='25' cy='25' r='10' fill='green' stroke='black' stroke-width='1'/></svg>"/>

        <!-- Test scaling static content -->
        <rect x="20" y="380" width="30" height="30" fill="red"/>
        <image id="scale" transform="scale(0.1)" x="0" y="360" width="100" height="100" xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'><rect x='10%' y='10%' width='80%' height='80%' fill='green'/><circle cx='25' cy='25' r='10' fill='green' stroke='black' stroke-width='1'/></svg>"/>
    </svg>
</body>
</html>
