tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / fast / events / touch / 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', '10');
31         shouldBe('event.clientY', '12');
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     eventSender.addTouchPoint(10, 12);
61     eventSender.touchStart();
62
63     // Insert some delay. NB: this value depends on minClickDownTime,
64     // maxClickDownTime from GestureRecognizerChromium.cpp
65     eventSender.leapForward(20);
66     eventSender.setTouchModifier("shift", true);
67     eventSender.setTouchModifier("alt", true);
68
69     eventSender.releaseTouchPoint(0);
70     eventSender.touchEnd();
71 }
72
73 function endTest()
74 {
75     if (mouseEventsReceived < expectedMouseEvents) {
76         debug('Gesture manager not implemented on this platform.');
77     }
78     // Bail.
79     isSuccessfullyParsed();
80     layoutTestController.notifyDone();
81 }
82
83 function runTest() {
84     var div = document.getElementById('touchtarget');
85     div.addEventListener("mousedown", gestureEventCallback, false);
86     div.addEventListener("click", gestureEventCallback, false);
87     div.addEventListener("mouseup", gestureEventCallback, false);
88     div.addEventListener("mousemove", gestureEventCallback, false);
89     document.addEventListener("keydown", quitKeyToEndTest, false);
90     div.addEventListener("touchstart", touchEventCallback, false);
91     div.addEventListener("touchmove", touchEventCallback, false);
92     div.addEventListener("touchend", touchEventCallback, false);
93
94     if (window.layoutTestController)
95         layoutTestController.waitUntilDone();
96
97     if (window.eventSender) {
98         description("This tests basic single touch gesture generation.");
99         if (eventSender.clearTouchPoints) {
100             singleTouchSequence();
101             eventSender.leapForward(10);
102             eventSender.keyDown(' ');
103         } else {
104             endTest();
105         }
106     } else {
107         debug("This test requires DumpRenderTree.  Tap on the blue rect to log.")
108     }
109 }
110 </script>
111 </body>
112 </html>