chromium/third_party/blink/web_tests/svg/custom/stroke-width-click.svg

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg">
  <script type="text/javascript">
  <![CDATA[
    if (window.testRunner)
      testRunner.dumpAsText();
    
    function log(string) {
      var newDiv = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
      newDiv.textContent = string;
      document.getElementById('log').appendChild(newDiv);
    }
    
    var lastEvent = null;
    
    function testClick(x, y, expected) {
      eventSender.mouseMoveTo(x, y);
      eventSender.mouseDown();
      eventSender.mouseUp();
      if (expected && lastEvent && lastEvent.clientX == x && lastEvent.clientY == y) {
        log("SUCCESS: click received at: " + x + ", " + y);
      } else if (!expected && !lastEvent) {
        log("SUCCESS: click at " + x + ", " + y + " was correctly ignored");
      } else if (expected && lastEvent) {
        log("FAILURE: click received at: " + lastEvent.clientX + ", " + lastEvent.clientY + " but it was expected at: " + x + ", " + y);
      } else if (!expected && lastEvent) {
        log("FAILURE: UNEXPECTED click received at: " + lastEvent.clientX + ", " + lastEvent.clientY);
      } else if (expected && !lastEvent) {
        log("FAILURE: NO click received at: " + x + ", " + y);
      } else {
        log("LOGIC ERORR");
      }
      lastEvent = null;
    }
    
    function gotClick(evt) {
      lastEvent = evt;
    }
    
    function gotMouseEvent(evt, type) {
      if (!window.testRunner)
        document.getElementById('mouseover-text').textContent = type + " at " + evt.clientX + ", " + evt.clientY;
    }
  ]]>
  </script>  
  <foreignObject y="200" width="600" height="400">
  <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
      <div id="log">
      </div>
    </body>
  </html>
  </foreignObject>
  
  <!-- Paths only seem to stroke from startX to endX - 1 pixels.  I was not aware of that before writing this test.  Firefox and Opera match our behavior -->
  <path d="M 30 100 L 301 100" stroke-width="100" stroke="yellow" onclick="gotClick(evt)" onmouseover="gotMouseEvent(evt, 'mouseover')" onmouseout="gotMouseEvent(evt, 'mouseout')" onmousemove="gotMouseEvent(evt, 'mousemove')" />
  <text id="mouseover-text" x="30" y="190"></text>
  
  <!-- The following mouse events are spaced explicity to prevent triggering double-click logic -->
  <script type="text/javascript">
  <![CDATA[
    if (window.eventSender) {
      testClick(30, 100, true);
      testClick(30, 50, true);
      testClick(30, 150, true);
      testClick(300, 100, true);
      testClick(300, 50, true);
      testClick(301, 100, true);
      testClick(300, 150, true);

      testClick(10, 10, false);
      testClick(29, 100, false);
      testClick(30, 49, false);
      testClick(30, 151, false);
      testClick(300, 49, false);
      testClick(300, 151, false);
    } else {
      log("ERROR: window.eventSender not found!  This test must be run using DumpRenderTree.  Mousing over the yellow area will log however.");
    }
  ]]>
  </script>
</svg>