| <?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> |