<html>
    <body onload="runSMILTest()">
        <svg>
            <animAttributeAttrs>
                <feImage id="test"></feImage>
            </animAttributeAttrs>
            <set id="set1" xlink:href="#test"></set>
        </svg>
        <script>
            if (window.layoutTestController) {
                layoutTestController.dumpAsText();
                layoutTestController.waitUntilDone();
                gc = function() { window.GCController.collect() };
            } else if (!window.gc)
                gc = function(){};

            window.onload = function() {
                if (location.hash != "#2") {
                    if (location.hash)
                        location.hash = "#" + (parseInt(location.hash.slice(1)) + 1).toString();
                    else
                        location.hash = "#1";
                    
                    gc();
                    setTimeout(function(){location.reload()}, 0);
                } else {
                    document.body.innerHTML = "PASS";
                    if (window.layoutTestController)
                        layoutTestController.notifyDone();
                }
            }
        </script>
    </body>
</html>

