<?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="600" width="800" onload="runRepaintTest()">
  <script xlink:href="../../fast/repaint/resources/repaint.js"/>
  <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 repaintTest() {
    if (window.eventSender) {
        testRunner.waitUntilDone();
        eventSender.mouseMoveTo(100, 100);
        eventSender.mouseUp();
        eventSender.mouseDown();
        setTimeout("testRunner.notifyDone()", 0);
    }
  }
  </script>
</svg> 
