<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

window.onload = function()
{
    try {
        document.getElementById('d').xChannelSelector.baseVal=0x80000000;
        document.getElementById('d').yChannelSelector.baseVal=0x40000000;
    } catch(e) {
        alert (e);
    }

    setTimeout(function () {
            document.body.innerHTML = "PASS";
            testRunner.notifyDone();
        }, 0);
}
</script>
<defs><filter id="f"><feDisplacementMap id="d"/></filter></defs>
<rect width="128" height="128" style="fill:rgb(0,255,0)" filter="url(#f)"/> 
</svg>
</body>
</html>
