blob: 759ea84a1216894535b157ec784809e511e06b3c [file] [log] [blame]
<?xml version="1.0"?>
<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);
img.setAttribute('y', yOffset);
img.setAttribute('width', 50);
img.setAttribute('height', 50);
img.setAttribute('visibility', attributes.visibility);
img.setAttribute('fill', attributes.fill);
img.setAttribute('stroke', attributes.stroke);
img.setAttribute('pointer-events', attributes.pointerEvents);
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 + 25, yOffset + 25);
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>