Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / canvas / resources / canvas-hit-region-event.js
blob3ffcebc2762a5c4083506802564338be04f74104
1 var hitRegionEventList = {
2   click : {
3     send : function(x, y) {
4              eventSender.mouseMoveTo(x, y);
5              eventSender.mouseDown();
6              eventSender.mouseUp();
7            },
8     getId : function(event) { return event.region; }
9   },
10   touchstart : {
11     send : function(x, y) {
12              eventSender.clearTouchPoints();
13              eventSender.addTouchPoint(x, y);
14              eventSender.touchStart();
15              eventSender.touchEnd();
16            },
17     getId : function(event) { return event.targetTouches[0].region; }
18   }
21 function clickCanvas(x, y, scaleFactor)
23   if (!window.eventSender)
24     return "This test requires eventSender";
26   var actualId = null;
27   var result = {};
29   function listener(event) {
30     result[event.type] = hitRegionEventList[event.type].getId(event);
31     canvas.removeEventListener(type, listener, false);
32   }
34   if (scaleFactor === undefined)
35     scaleFactor = 1;
36   var rect = canvas.getBoundingClientRect();
37   var translatedCanvasLeft = rect.left * scaleFactor * window.devicePixelRatio;
38   var translatedCanvasTop = rect.top * scaleFactor * window.devicePixelRatio;
39   for (var type in hitRegionEventList) {
40     canvas.addEventListener(type, listener, false);
41     hitRegionEventList[type].send(translatedCanvasLeft + x, translatedCanvasTop + y);
42   }
44   // single actualId guarantees that results of eventlist are same
45   for (var type in hitRegionEventList) {
46     if (result[type] === undefined)
47       result[type] = "no event sent to canvas";
48     if (actualId === null) {
49       actualId = result[type];
50     } else {
51       if (actualId != result[type]) {
52         // some results of eventlist are different, makes log
53         !function() {
54           actualId = "{";
55           for (var type in hitRegionEventList) {
56              actualId += type + ": '" + result[type] + "'; ";
57           }
58           actualId += "}";
59         }();
60         break;
61       }
62     }
63   }
65   for (var type in hitRegionEventList) {
66     canvas.removeEventListener(type, listener, false);
67   }
69   return actualId;