| <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> |
| <defs> |
| <g id="reference"> |
| <rect x="240" y="1" width="239" height="358" /> |
| <circle cx="240" cy="1" width="39" height="58" /> |
| </g> |
| |
| <script type="text/ecmascript"> |
| <![CDATA[ |
| if (window.layoutTestController) |
| layoutTestController.waitUntilDone(); |
| |
| window.setTimeout("clickNow()", 0); |
| |
| function clickNow() { |
| if (window.eventSender) { |
| eventSender.mouseMoveTo(250, 50); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| } |
| |
| if (window.layoutTestController) { |
| layoutTestController.notifyDone(); |
| } |
| } |
| |
| function test (event) { |
| // get pointers to use and referenced elements |
| var container = document.getElementById('reference'); |
| var rect = container.firstChild.nextSibling; |
| var circle = rect.nextSibling.nextSibling; |
| var use = document.getElementById('use'); |
| |
| // test all SVGElementInstance methods (except childNodes) |
| var rectInstance = event.target; |
| var gInstance = rectInstance.parentNode; |
| var circleInstance = rectInstance.nextSibling; |
| |
| // Check wheter correspdoningElement is the <rect>, and wheter <use> is set correctly. |
| if (rectInstance.correspondingElement != rect) return; |
| if (rectInstance.correspondingUseElement != use) return; |
| |
| // Our <rect> doesn't have children. |
| if (rectInstance.firstChild) return; |
| if (rectInstance.lastChild) return; |
| |
| // Our <rect> SVGElementInstance has the <g> SVGElementInstance as parent node |
| if (!gInstance) return; |
| if (gInstance.correspondingElement != container) return; |
| |
| // Our <rect> SVGElementInstance has no previous sibling |
| if (rectInstance.previousSibling) return; |
| |
| // Our <rect> SVGElementInstance has the <circle> SVGElementInstance as next sibling |
| if (!circleInstance) return; |
| if (circleInstance.correspondingElement != circle) return; |
| if (rectInstance.nextSibling != circleInstance) return; |
| |
| // Our <g> SVGElementInstance has no parent node, and <rect> as firstChild, <circle> as lastChild |
| if (gInstance.parentNode) return; |
| if (gInstance.firstChild != rectInstance) return; |
| if (gInstance.lastChild != circleInstance) return; |
| |
| // Hopefully we pass :-) |
| document.getElementById("status").firstChild.nodeValue = "Test passed."; |
| } |
| ]]> |
| </script> |
| </defs> |
| |
| <text x="100" y="50" id="status">Test failed.</text> |
| <use id="use" xlink:href="#reference" onclick="test(evt)" fill="grey" /> |
| <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/> |
| </svg> |