tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / fast / events / touch / page-scaled-touch-gesture-click.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <script src="../../js/resources/js-test-pre.js"></script>
5 <style type="text/css">
6 #touchtarget {
7   width: 100px;
8   height: 100px;
9   background: blue;
10 }
11 </style>
12 </head>
13 <body onload="runTest();">
14 <div id="touchtarget">
15
16 <p id="description"></p>
17 <div id="console"></div>
18
19 <script>
20 var clickEventsReceived = 0;
21 var expectedMouseEvents = 4;
22 var touchEventsReceived = 0;
23 var mouseEventsReceived = 0;
24 var eventTypes = [ 'mousemove', 'mousedown', 'mouseup', 'click' ];
25
26 function gestureEventCallback(event)
27 {
28     if (window.eventSender) {
29         shouldBeEqualToString('event.type', eventTypes[mouseEventsReceived]);
30         shouldBe('event.clientX', '20');
31         shouldBe('event.clientY', '24');
32         shouldBe("event.shiftKey", "true");
33         shouldBe("event.altKey", "true");
34         shouldBe("event.ctrlKey", "false");
35         shouldBe("event.metaKey", "false");
36         mouseEventsReceived++;
37     } else {
38         debug(event.type);
39         debug(event.clientX);
40         debug(event.clientY);
41     }
42 }
43
44 // Because we may not have a gesture recognizer, we send a key press
45 // event to end the test without temporal flakiness.
46 function quitKeyToEndTest(event) {
47     endTest();
48 }
49
50 // Log that we still got the touch events.
51 function touchEventCallback(event) {
52     touchEventsReceived++;
53     debug('have received: ' + touchEventsReceived + ' touch events');
54     return true;
55 }
56
57 function singleTouchSequence()
58 {
59     eventSender.clearTouchPoints();
60     // Coordinates passed to eventSender.addTouchPoint are in screen pixels,
61     // relative to the top left of the window.
62     eventSender.addTouchPoint(10, 12);
63     eventSender.touchStart();
64
65     // Insert some delay. NB: this value depends on minClickDownTime,
66     // maxClickDownTime from GestureRecognizerChromium.cpp
67     eventSender.leapForward(20);
68     eventSender.setTouchModifier("shift", true);
69     eventSender.setTouchModifier("alt", true);
70
71     eventSender.releaseTouchPoint(0);
72     eventSender.touchEnd();
73 }
74
75 function endTest()
76 {
77     if (mouseEventsReceived < expectedMouseEvents) {
78         debug('Gesture manager not implemented on this platform.');
79     }
80     // Bail.
81     isSuccessfullyParsed();
82     layoutTestController.notifyDone();
83 }
84
85 function runTest() {
86     if (window.eventSender) {
87         eventSender.scalePageBy(0.5, 0, 0);
88     }
89
90     var div = document.getElementById('touchtarget');
91     div.addEventListener("mousedown", gestureEventCallback, false);
92     div.addEventListener("click", gestureEventCallback, false);
93     div.addEventListener("mouseup", gestureEventCallback, false);
94     div.addEventListener("mousemove", gestureEventCallback, false);
95     document.addEventListener("keydown", quitKeyToEndTest, false);
96     div.addEventListener("touchstart", touchEventCallback, false);
97     div.addEventListener("touchmove", touchEventCallback, false);
98     div.addEventListener("touchend", touchEventCallback, false);
99
100     if (window.layoutTestController)
101         layoutTestController.waitUntilDone();
102
103     if (window.eventSender) {
104         description("This tests basic single touch gesture generation.");
105         if (eventSender.clearTouchPoints) {
106             singleTouchSequence();
107             eventSender.leapForward(10);
108             eventSender.keyDown(' ');
109         } else {
110             endTest();
111         }
112     } else {
113         debug("This test requires DumpRenderTree.  Tap on the blue rect to log.")
114     }
115 }
116 </script>
117 </body>
118 </html>