chromium/third_party/blink/web_tests/svg/custom/pointer-events-image-css-transform.svg

<?xml version="1.0"?>
<!-- This a 1-1 copy of pointer-events-image.svg tests with the addition of 'transform' -->
<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink" onload="fillTestContent()">
  <script type="text/javascript">
  <![CDATA[
    if (window.testRunner)
      testRunner.waitUntilDone();

    var visibleValues = [ 'visible', 'hidden' ];
    var fillValues = ['none', 'orange' ];
    var strokeValues = ['none', 'blue' ];

    var pointerEventsValues = ['auto', 'visiblePainted', 'visibleFill', 'visibleStroke', 'visible', 'painted', 'fill', 'stroke', 'all', 'none'];

    var pendingClicks = [];
    function queueClick(x, y) {
      pendingClicks.push({ x: x, y: y });
    }

    function performClick(x, y) {
      if (!window.eventSender)
        return;
      eventSender.mouseMoveTo(x, y);
      eventSender.mouseDown();
      eventSender.mouseUp();
    }

    var totalImages = visibleValues.length * fillValues.length * strokeValues.length * pointerEventsValues.length;
    var imagesLoaded = 0;

    function imageLoaded() {
      // Wait for all images to load, then issue all pending clicks.
      if (++imagesLoaded < totalImages)
        return;
      for (let point of pendingClicks)
        performClick(point.x, point.y);
      if (window.testRunner)
        testRunner.notifyDone();
    }

    var svgNS = "http://www.w3.org/2000/svg";

    function attachTestImage(container, xOffset, yOffset, attributes) {
      var fillText = document.createElementNS(svgNS, 'text');
      fillText.setAttribute('x', xOffset + 5);
      fillText.setAttribute('y', yOffset + 20);
      fillText.textContent = "miss";
      fillText.setAttribute('pointer-events', 'none');

      var img = document.createElementNS(svgNS, 'image');
      img.setAttributeNS("http://www.w3.org/1999/xlink", 'href', 'resources/red-checker.png');
      img.setAttribute('x', xOffset / 2);
      img.setAttribute('y', yOffset / 2);
      img.setAttribute('width', 25);
      img.setAttribute('height', 25);
      img.setAttribute('visibility', attributes.visibility);
      img.setAttribute('fill', attributes.fill);
      img.setAttribute('stroke', attributes.stroke);
      img.setAttribute('pointer-events', attributes.pointerEvents);
      img.setAttribute('style', "transform: scale(2)");
      img.onload = imageLoaded;
      img.onclick = function() { fillText.textContent = 'HIT'; };

      container.appendChild(img);
      container.appendChild(fillText);
    }

    var leftEdge = 100;
    var topEdge = 30;

    var rectSpacing = 57;

    function fillTestContent() {
      var xOffset = leftEdge;
      var yOffset = topEdge;

      var testContent = document.getElementById("test-content");

      for (var pi = 0; pi < pointerEventsValues.length; pi++) {
        var eventLabel = document.createElementNS(svgNS, 'text');
        eventLabel.setAttribute('x', 0);
        eventLabel.setAttribute('y', yOffset + 30);
        eventLabel.textContent = pointerEventsValues[pi];
        testContent.appendChild(eventLabel);

        for (var vi = 0; vi < visibleValues.length; vi++) {
          for (var fi = 0; fi < fillValues.length; fi++) {
            for (var si = 0; si < strokeValues.length; si++) {
              attachTestImage(testContent, xOffset, yOffset, {
                visibility: visibleValues[vi],
                fill: fillValues[fi],
                stroke: strokeValues[si],
                pointerEvents: pointerEventsValues[pi]
              });
              queueClick(xOffset + 30, yOffset + 30);
              xOffset += rectSpacing;
            }
          }
        }
        xOffset = leftEdge;
        yOffset += rectSpacing;
      }
    }
  ]]>
  </script>
  
  <text x="110" y="20">Visibility: visible</text>
  <text x="340" y="20">Visibility: hidden</text>
  <g id="test-content"/>
</svg>