<!DOCTYPE HTML>
<html>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();
        function addIsolation() {
            var isolator = document.getElementById('isolator');
            isolator.setAttribute('mask', 'url(#Mask)');
            if (window.testRunner)
                testRunner.notifyDone();
        }
        window.addEventListener('load', function () {
            window.setTimeout(addIsolation, 10);
        }, false);
    </script>
    <body>
        <p>The test passes if you see a green square.</p>
        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="200px" height="200px">
            <defs>
                <mask id="Mask">
                  <rect x="0" y="0" width="100" height="100" fill="white"  />
                </mask>
            </defs>
            <g id="isolator">
                <rect x="0" y="0" width="200" height="200" style="fill: green; mix-blend-mode: difference;"/>
            </g>
        </svg>
    </body>
</html>
