83 lines
3.0 KiB
XML
83 lines
3.0 KiB
XML
<?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>
|