<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg11.dtd"> 
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <title id="viewer_title">Mouse Over the Red Dot And Wait For the Crash</title> 
    <defs> 
        <circle id="rim" cx="0" cy="0" r="70"/> 
        <g id="loupePlus"> 
            <use id="useRim" xlink:href="#rim" fill="#e33c31"> 
                <set />
            </use> 
        </g> 
    </defs> 

    <use id="zoomplus" xlink:href="#loupePlus" x="300" y="300" >
    </use> 
    <foreignObject><pre id="console" xmlns="http://www.w3.org/1999/xhtml"/></foreignObject>
    <script>
        function makeCrash(){
            if (window.eventSender) {
                eventSender.dragMode = false;
                eventSender.mouseMoveTo(300, 300);
                eventSender.mouseDown();
                eventSender.mouseUp();
            }
        }
        // If you like, you can make a crash.
        // makeCrash();

        var console = document.getElementById("console");
        function println(string)
        {
            console.textContent += string + '\n';
        }

        function printInstanceTree( obj, indent )
        {
            indent += "     ";
            println(indent + "id = " + obj.correspondingElement.id + "  this = " + obj + "  correspondingElement = " + obj.correspondingElement);
            for (var m = obj.firstChild; m != null; m = m.nextSibling ) {
                printInstanceTree(m, indent);
            }
        }
        var useobj = document.getElementById("zoomplus").instanceRoot;
        println("The instance tree of use element zoomplus:\n");
        printInstanceTree(useobj,"");

        if (window.testRunner){
            testRunner.dumpAsText();
        }

  </script>
</svg> 
