blob: 3ffcebc2762a5c4083506802564338be04f74104 [file] [log] [blame]
var hitRegionEventList = {
click : {
send : function(x, y) {
eventSender.mouseMoveTo(x, y);
eventSender.mouseDown();
eventSender.mouseUp();
},
getId : function(event) { return event.region; }
},
touchstart : {
send : function(x, y) {
eventSender.clearTouchPoints();
eventSender.addTouchPoint(x, y);
eventSender.touchStart();
eventSender.touchEnd();
},
getId : function(event) { return event.targetTouches[0].region; }
}
};
function clickCanvas(x, y, scaleFactor)
{
if (!window.eventSender)
return "This test requires eventSender";
var actualId = null;
var result = {};
function listener(event) {
result[event.type] = hitRegionEventList[event.type].getId(event);
canvas.removeEventListener(type, listener, false);
}
if (scaleFactor === undefined)
scaleFactor = 1;
var rect = canvas.getBoundingClientRect();
var translatedCanvasLeft = rect.left * scaleFactor * window.devicePixelRatio;
var translatedCanvasTop = rect.top * scaleFactor * window.devicePixelRatio;
for (var type in hitRegionEventList) {
canvas.addEventListener(type, listener, false);
hitRegionEventList[type].send(translatedCanvasLeft + x, translatedCanvasTop + y);
}
// single actualId guarantees that results of eventlist are same
for (var type in hitRegionEventList) {
if (result[type] === undefined)
result[type] = "no event sent to canvas";
if (actualId === null) {
actualId = result[type];
} else {
if (actualId != result[type]) {
// some results of eventlist are different, makes log
!function() {
actualId = "{";
for (var type in hitRegionEventList) {
actualId += type + ": '" + result[type] + "'; ";
}
actualId += "}";
}();
break;
}
}
}
for (var type in hitRegionEventList) {
canvas.removeEventListener(type, listener, false);
}
return actualId;
}