<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
         "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:html="http://www.w3.org/1999/xhtml"
     height="800" width="800">
  <g transform="translate(50,50)">
    <polygon points="0,0 300,0 300,300 0,300" style="fill:lightblue; stroke:red;"/>
    <!-- switch -->
    <foreignObject x="10" y="10" width="280" height="280">
      <html:b>Absolute Lineto</html:b><html:br/>
       &lt;path d="M50,80 L250,80 150,280 z" 
                style="fill:red; stroke:blue;"/&gt;
    </foreignObject>
    <!-- /switch -->
    <path d="M50,80 L250,80 150,280 z" 
          style="fill:red; stroke:blue;"/>
  </g>
  <script>
  function done() {
      if (window.layoutTestController)
          window.layoutTestController.notifyDone();
  }

  if (window.layoutTestController)
      window.layoutTestController.waitUntilDone();

  if (window.eventSender) {
      eventSender.mouseMoveTo(100, 100);
      eventSender.mouseUp();
      eventSender.mouseDown();
  }

  window.setTimeout("done()", 50);
  </script>
</svg> 
