<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">
<!--======================================================================-->
<!--=  Copyright 2000 World Wide Web Consortium, (Massachusetts          =-->
<!--=  Institute of Technology, Institut National de Recherche en        =-->
<!--=  Informatique et en Automatique, Keio University). All Rights      =-->
<!--=  Reserved. See http://www.w3.org/Consortium/Legal/.                =-->
<!--======================================================================-->
<!-- ===================================================================== -->
<!-- linking-a-03-b.svg                                             -->
<!-- Notes.  This is based on sample files by Kelvin Lawrence et al, for   -->
<!-- IBM's SVGview.  Requires supplemental file, linkingCircle-f.svg.        -->
<!-- Author : Lofton Henderson  03-April-2000                              -->
<!--======================================================================-->
<svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkSoon()">
   <script type="text/ecmascript"><![CDATA[
if (window.layoutTestController)
    window.layoutTestController.waitUntilDone();

function clickLinkSoon()
{
    window.setTimeout("clickLinkNow()", 0);
}

function clickLinkNow() {
    if (window.eventSender) {
        eventSender.mouseMoveTo(240, 180);
        eventSender.mouseDown();
        eventSender.mouseUp();
    } else {
        // in manual mode
        alert("Please use run-webkit-tests.");
    }
}
]]>
</script>
    <title id="test-title">linking-a-03-b</title>
    <desc id="test-desc">Basic in-bound link object addressing formats.</desc>
    <!--======================================================================-->
    <!--Content of Test Case follows...                  =====================-->
    <!--======================================================================-->
    <g id="test-body-content" transform="scale(2)">
        <a xlink:href="resources/linkingCircle-f.svg#svgView(viewBox(64,227,72,72);transform(rotate(5)))">
	    <path fill="aqua" stroke="blue" d="M 185,40 h -100 v -12 l -45 36 l 45 36 v -12 h 100 z"/>
        </a>
    </g>
    <text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.2 $</text>
    <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
</svg>
