<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" onload="click()">
  <script type="text/javascript">
  <![CDATA[
    
    if (window.testRunner)
        testRunner.waitUntilDone();
 
   function changeFill(evt) { 
       var poly = evt.target;
       poly.setAttribute("fill", "green");
   }

   function click() { 
        if (window.eventSender) {
            // Fill click
            eventSender.mouseMoveTo(25, 25);
            eventSender.mouseDown();
            eventSender.mouseUp();
        }
    }
      
    if (window.testRunner)
      testRunner.notifyDone();
  ]]>
  </script>

  <polyline onclick="changeFill(evt);" points="0 0 100 0 100 100 0 100" fill="red"/>  
</svg>
