Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: content/browser/renderer_host/input/web_input_event_builders_gtk_unittest.cc

Issue 231733005: Delete the GTK+ port of Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remerge to ToT Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/renderer_host/input/web_input_event_builders_gtk.h"
6
7 #include <gdk/gdk.h>
8 #include <gdk/gdkkeysyms.h>
9
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "third_party/WebKit/public/web/WebInputEvent.h"
12 #include "ui/events/keycodes/keyboard_code_conversion_gtk.h"
13
14 using blink::WebInputEvent;
15 using blink::WebKeyboardEvent;
16 using blink::WebMouseEvent;
17 using content::WebMouseEventBuilder;
18 using content::WebKeyboardEventBuilder;
19
20 namespace {
21
22 TEST(WebMouseEventBuilderTest, DoubleClick) {
23 GdkEventButton first_click;
24 first_click.type = GDK_BUTTON_PRESS;
25 first_click.window = static_cast<GdkWindow*>(GINT_TO_POINTER(1));
26 first_click.x = first_click.y = first_click.x_root = first_click.y_root = 100;
27 first_click.state = 0;
28 first_click.time = 0;
29 first_click.button = 1;
30
31 // Single click works.
32 WebMouseEvent first_click_events =
33 WebMouseEventBuilder::Build(&first_click);
34 EXPECT_EQ(1, first_click_events.clickCount);
35
36 // Make sure double click works.
37 GdkEventButton second_click = first_click;
38 second_click.time = first_click.time + 100;
39 WebMouseEvent second_click_events =
40 WebMouseEventBuilder::Build(&second_click);
41 EXPECT_EQ(2, second_click_events.clickCount);
42
43 // Reset the click count.
44 first_click.time += 10000;
45 first_click_events = WebMouseEventBuilder::Build(&first_click);
46 EXPECT_EQ(1, first_click_events.clickCount);
47
48 // Two clicks with a long gap in between aren't counted as a double click.
49 second_click = first_click;
50 second_click.time = first_click.time + 1000;
51 second_click_events = WebMouseEventBuilder::Build(&second_click);
52 EXPECT_EQ(1, second_click_events.clickCount);
53
54 // Reset the click count.
55 first_click.time += 10000;
56 first_click_events = WebMouseEventBuilder::Build(&first_click);
57 EXPECT_EQ(1, first_click_events.clickCount);
58
59 // Two clicks far apart (horizontally) aren't counted as a double click.
60 second_click = first_click;
61 second_click.time = first_click.time + 1;
62 second_click.x = first_click.x + 100;
63 second_click_events = WebMouseEventBuilder::Build(&second_click);
64 EXPECT_EQ(1, second_click_events.clickCount);
65
66 // Reset the click count.
67 first_click.time += 10000;
68 first_click_events = WebMouseEventBuilder::Build(&first_click);
69 EXPECT_EQ(1, first_click_events.clickCount);
70
71 // Two clicks far apart (vertically) aren't counted as a double click.
72 second_click = first_click;
73 second_click.time = first_click.time + 1;
74 second_click.x = first_click.y + 100;
75 second_click_events = WebMouseEventBuilder::Build(&second_click);
76 EXPECT_EQ(1, second_click_events.clickCount);
77
78 // Reset the click count.
79 first_click.time += 10000;
80 first_click_events = WebMouseEventBuilder::Build(&first_click);
81 EXPECT_EQ(1, first_click_events.clickCount);
82
83 // Two clicks on different windows aren't a double click.
84 second_click = first_click;
85 second_click.time = first_click.time + 1;
86 second_click.window = static_cast<GdkWindow*>(GINT_TO_POINTER(2));
87 second_click_events = WebMouseEventBuilder::Build(&second_click);
88 EXPECT_EQ(1, second_click_events.clickCount);
89 }
90
91 TEST(WebMouseEventBuilderTest, MouseUpClickCount) {
92 GdkEventButton mouse_down;
93 memset(&mouse_down, 0, sizeof(mouse_down));
94 mouse_down.type = GDK_BUTTON_PRESS;
95 mouse_down.window = static_cast<GdkWindow*>(GINT_TO_POINTER(1));
96 mouse_down.x = mouse_down.y = mouse_down.x_root = mouse_down.y_root = 100;
97 mouse_down.time = 0;
98 mouse_down.button = 1;
99
100 // Properly set the last click time, so that the internal state won't be
101 // affected by previous tests.
102 WebMouseEventBuilder::Build(&mouse_down);
103
104 mouse_down.time += 10000;
105 GdkEventButton mouse_up = mouse_down;
106 mouse_up.type = GDK_BUTTON_RELEASE;
107 WebMouseEvent mouse_down_event;
108 WebMouseEvent mouse_up_event;
109
110 // Click for three times.
111 for (int i = 1; i < 4; ++i) {
112 mouse_down.time += 100;
113 mouse_down_event = WebMouseEventBuilder::Build(&mouse_down);
114 EXPECT_EQ(i, mouse_down_event.clickCount);
115
116 mouse_up.time = mouse_down.time + 50;
117 mouse_up_event = WebMouseEventBuilder::Build(&mouse_up);
118 EXPECT_EQ(i, mouse_up_event.clickCount);
119 }
120
121 // Reset the click count.
122 mouse_down.time += 10000;
123 mouse_down_event = WebMouseEventBuilder::Build(&mouse_down);
124 EXPECT_EQ(1, mouse_down_event.clickCount);
125
126 // Moving the cursor for a significant distance will reset the click count to
127 // 0.
128 GdkEventMotion mouse_move;
129 memset(&mouse_move, 0, sizeof(mouse_move));
130 mouse_move.type = GDK_MOTION_NOTIFY;
131 mouse_move.window = mouse_down.window;
132 mouse_move.time = mouse_down.time;
133 mouse_move.x = mouse_move.y = mouse_move.x_root = mouse_move.y_root =
134 mouse_down.x + 100;
135 WebMouseEventBuilder::Build(&mouse_move);
136
137 mouse_up.time = mouse_down.time + 50;
138 mouse_up_event = WebMouseEventBuilder::Build(&mouse_up);
139 EXPECT_EQ(0, mouse_up_event.clickCount);
140
141 // Reset the click count.
142 mouse_down.time += 10000;
143 mouse_down_event = WebMouseEventBuilder::Build(&mouse_down);
144 EXPECT_EQ(1, mouse_down_event.clickCount);
145
146 // Moving the cursor with a significant delay will reset the click count to 0.
147 mouse_move.time = mouse_down.time + 1000;
148 mouse_move.x = mouse_move.y = mouse_move.x_root = mouse_move.y_root =
149 mouse_down.x;
150 WebMouseEventBuilder::Build(&mouse_move);
151
152 mouse_up.time = mouse_move.time + 50;
153 mouse_up_event = WebMouseEventBuilder::Build(&mouse_up);
154 EXPECT_EQ(0, mouse_up_event.clickCount);
155 }
156
157 TEST(WebKeyboardEventBuilderTest, NumPadConversion) {
158 // Construct a GDK input event for the numpad "5" key.
159 char five[] = "5";
160 GdkEventKey gdk_event;
161 memset(&gdk_event, 0, sizeof(GdkEventKey));
162 gdk_event.type = GDK_KEY_PRESS;
163 gdk_event.keyval = GDK_KP_5;
164 gdk_event.string = five;
165
166 // Numpad flag should be set on the WebKeyboardEvent.
167 WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(&gdk_event);
168 EXPECT_TRUE(web_event.modifiers & WebInputEvent::IsKeyPad);
169 }
170
171 } // anonymous namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698