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

Side by Side Diff: ui/events/blink/web_input_event_unittest.cc

Issue 2234023002: Refactor WebInputEventAura to ui/events/blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 4 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
« no previous file with comments | « ui/events/blink/web_input_event_traits_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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 "ui/events/blink/web_input_event.h"
6
7 #include <stddef.h>
8 #include <stdint.h>
9
10 #include "base/macros.h"
11 #include "build/build_config.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "ui/events/base_event_utils.h"
14 #include "ui/events/blink/blink_event_util.h"
15 #include "ui/events/event.h"
16 #include "ui/events/event_utils.h"
17 #include "ui/events/keycodes/dom/dom_code.h"
18 #include "ui/events/keycodes/dom/dom_key.h"
19 #include "ui/events/keycodes/dom/keycode_converter.h"
20
21 #if defined(USE_X11)
22 #include <X11/keysym.h>
23 #include <X11/Xlib.h>
24 #include "ui/events/test/events_test_utils_x11.h"
25 #include "ui/gfx/x/x11_types.h" // nogncheck
26 #endif
27
28 namespace ui {
29
30 namespace {
31
32 gfx::Point GetScreenLocationFromEvent(const LocatedEvent& event) {
33 return event.root_location();
34 }
35
36 } // namespace
37
38 // Checks that MakeWebKeyboardEvent makes a DOM3 spec compliant key event.
39 // crbug.com/127142
40 TEST(WebInputEventTest, TestMakeWebKeyboardEvent) {
41 {
42 // Press left Ctrl.
43 KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_LEFT,
44 EF_CONTROL_DOWN);
45 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
46 // However, modifier bit for Control in |webkit_event| should be set.
47 EXPECT_EQ(blink::WebInputEvent::ControlKey | blink::WebInputEvent::IsLeft,
48 webkit_event.modifiers);
49 EXPECT_EQ(static_cast<int>(DomCode::CONTROL_LEFT), webkit_event.domCode);
50 EXPECT_EQ(static_cast<int>(DomKey::CONTROL), webkit_event.domKey);
51 }
52 {
53 // Release left Ctrl.
54 KeyEvent event(ET_KEY_RELEASED, VKEY_CONTROL, DomCode::CONTROL_LEFT,
55 EF_NONE);
56 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
57 // However, modifier bit for Control in |webkit_event| shouldn't be set.
58 EXPECT_EQ(blink::WebInputEvent::IsLeft, webkit_event.modifiers);
59 EXPECT_EQ(static_cast<int>(DomCode::CONTROL_LEFT), webkit_event.domCode);
60 EXPECT_EQ(static_cast<int>(DomKey::CONTROL), webkit_event.domKey);
61 }
62 {
63 // Press right Ctrl.
64 KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_RIGHT,
65 EF_CONTROL_DOWN);
66 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
67 // However, modifier bit for Control in |webkit_event| should be set.
68 EXPECT_EQ(blink::WebInputEvent::ControlKey | blink::WebInputEvent::IsRight,
69 webkit_event.modifiers);
70 EXPECT_EQ(static_cast<int>(DomCode::CONTROL_RIGHT), webkit_event.domCode);
71 }
72 {
73 // Release right Ctrl.
74 KeyEvent event(ET_KEY_RELEASED, VKEY_CONTROL, DomCode::CONTROL_RIGHT,
75 EF_NONE);
76 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
77 // However, modifier bit for Control in |webkit_event| shouldn't be set.
78 EXPECT_EQ(blink::WebInputEvent::IsRight, webkit_event.modifiers);
79 EXPECT_EQ(static_cast<int>(DomCode::CONTROL_RIGHT), webkit_event.domCode);
80 EXPECT_EQ(static_cast<int>(DomKey::CONTROL), webkit_event.domKey);
81 }
82 #if defined(USE_X11)
83 const int kLocationModifiers =
84 blink::WebInputEvent::IsLeft | blink::WebInputEvent::IsRight;
85 ScopedXI2Event xev;
86 {
87 // Press Ctrl.
88 xev.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, 0);
89 KeyEvent event(xev);
90 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
91 // However, modifier bit for Control in |webkit_event| should be set.
92 EXPECT_EQ(blink::WebInputEvent::ControlKey,
93 webkit_event.modifiers & ~kLocationModifiers);
94 }
95 {
96 // Release Ctrl.
97 xev.InitKeyEvent(ET_KEY_RELEASED, VKEY_CONTROL, ControlMask);
98 KeyEvent event(xev);
99 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
100 // However, modifier bit for Control in |webkit_event| shouldn't be set.
101 EXPECT_EQ(0, webkit_event.modifiers & ~kLocationModifiers);
102 }
103 #endif
104 }
105
106 TEST(WebInputEventTest, TestMakeWebKeyboardEventWindowsKeyCode) {
107 #if defined(USE_X11)
108 ScopedXI2Event xev;
109 {
110 // Press left Ctrl.
111 xev.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, 0);
112 XEvent* xevent = xev;
113 xevent->xkey.keycode =
114 KeycodeConverter::DomCodeToNativeKeycode(DomCode::CONTROL_LEFT);
115 KeyEvent event(xev);
116 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
117 EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
118 }
119 {
120 // Press right Ctrl.
121 xev.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, 0);
122 XEvent* xevent = xev;
123 xevent->xkey.keycode =
124 KeycodeConverter::DomCodeToNativeKeycode(DomCode::CONTROL_RIGHT);
125 KeyEvent event(xev);
126 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
127 EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
128 }
129 #elif defined(OS_WIN)
130 // TODO(yusukes): Add tests for win_aura once keyboardEvent() in
131 // third_party/WebKit/Source/web/win/WebInputEventFactory.cpp is modified
132 // to return VKEY_[LR]XXX instead of VKEY_XXX.
133 // https://bugs.webkit.org/show_bug.cgi?id=86694
134 #endif
135 {
136 // Press left Ctrl.
137 KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_LEFT,
138 EF_CONTROL_DOWN, DomKey::CONTROL, EventTimeForNow());
139 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
140 EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
141 }
142 {
143 // Press right Ctrl.
144 KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_RIGHT,
145 EF_CONTROL_DOWN, DomKey::CONTROL, EventTimeForNow());
146 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
147 EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
148 }
149 }
150
151 // Checks that MakeWebKeyboardEvent fills a correct keypad modifier.
152 TEST(WebInputEventTest, TestMakeWebKeyboardEventKeyPadKeyCode) {
153 #if defined(USE_X11)
154 #define XK(x) XK_##x
155 #else
156 #define XK(x) 0
157 #endif
158 struct TestCase {
159 DomCode dom_code; // The physical key (location).
160 KeyboardCode ui_keycode; // The virtual key code.
161 uint32_t x_keysym; // The X11 keysym.
162 bool expected_result; // true if the event has "isKeyPad" modifier.
163 } kTesCases[] = {
164 {DomCode::DIGIT0, VKEY_0, XK(0), false},
165 {DomCode::DIGIT1, VKEY_1, XK(1), false},
166 {DomCode::DIGIT2, VKEY_2, XK(2), false},
167 {DomCode::DIGIT3, VKEY_3, XK(3), false},
168 {DomCode::DIGIT4, VKEY_4, XK(4), false},
169 {DomCode::DIGIT5, VKEY_5, XK(5), false},
170 {DomCode::DIGIT6, VKEY_6, XK(6), false},
171 {DomCode::DIGIT7, VKEY_7, XK(7), false},
172 {DomCode::DIGIT8, VKEY_8, XK(8), false},
173 {DomCode::DIGIT9, VKEY_9, XK(9), false},
174
175 {DomCode::NUMPAD0, VKEY_NUMPAD0, XK(KP_0), true},
176 {DomCode::NUMPAD1, VKEY_NUMPAD1, XK(KP_1), true},
177 {DomCode::NUMPAD2, VKEY_NUMPAD2, XK(KP_2), true},
178 {DomCode::NUMPAD3, VKEY_NUMPAD3, XK(KP_3), true},
179 {DomCode::NUMPAD4, VKEY_NUMPAD4, XK(KP_4), true},
180 {DomCode::NUMPAD5, VKEY_NUMPAD5, XK(KP_5), true},
181 {DomCode::NUMPAD6, VKEY_NUMPAD6, XK(KP_6), true},
182 {DomCode::NUMPAD7, VKEY_NUMPAD7, XK(KP_7), true},
183 {DomCode::NUMPAD8, VKEY_NUMPAD8, XK(KP_8), true},
184 {DomCode::NUMPAD9, VKEY_NUMPAD9, XK(KP_9), true},
185
186 {DomCode::NUMPAD_MULTIPLY, VKEY_MULTIPLY, XK(KP_Multiply), true},
187 {DomCode::NUMPAD_SUBTRACT, VKEY_SUBTRACT, XK(KP_Subtract), true},
188 {DomCode::NUMPAD_ADD, VKEY_ADD, XK(KP_Add), true},
189 {DomCode::NUMPAD_DIVIDE, VKEY_DIVIDE, XK(KP_Divide), true},
190 {DomCode::NUMPAD_DECIMAL, VKEY_DECIMAL, XK(KP_Decimal), true},
191 {DomCode::NUMPAD_DECIMAL, VKEY_DELETE, XK(KP_Delete), true},
192 {DomCode::NUMPAD0, VKEY_INSERT, XK(KP_Insert), true},
193 {DomCode::NUMPAD1, VKEY_END, XK(KP_End), true},
194 {DomCode::NUMPAD2, VKEY_DOWN, XK(KP_Down), true},
195 {DomCode::NUMPAD3, VKEY_NEXT, XK(KP_Page_Down), true},
196 {DomCode::NUMPAD4, VKEY_LEFT, XK(KP_Left), true},
197 {DomCode::NUMPAD5, VKEY_CLEAR, XK(KP_Begin), true},
198 {DomCode::NUMPAD6, VKEY_RIGHT, XK(KP_Right), true},
199 {DomCode::NUMPAD7, VKEY_HOME, XK(KP_Home), true},
200 {DomCode::NUMPAD8, VKEY_UP, XK(KP_Up), true},
201 {DomCode::NUMPAD9, VKEY_PRIOR, XK(KP_Page_Up), true},
202 };
203 for (const auto& test_case : kTesCases) {
204 KeyEvent event(ET_KEY_PRESSED, test_case.ui_keycode, test_case.dom_code,
205 EF_NONE);
206 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
207 EXPECT_EQ(test_case.expected_result,
208 (webkit_event.modifiers & blink::WebInputEvent::IsKeyPad) != 0)
209 << "Failed in "
210 << "{dom_code:"
211 << KeycodeConverter::DomCodeToCodeString(test_case.dom_code)
212 << ", ui_keycode:" << test_case.ui_keycode
213 << "}, expect: " << test_case.expected_result;
214 }
215 #if defined(USE_X11)
216 ScopedXI2Event xev;
217 for (size_t i = 0; i < arraysize(kTesCases); ++i) {
218 const TestCase& test_case = kTesCases[i];
219
220 // TODO: re-enable the two cases excluded here once all trybots
221 // are sufficiently up to date to round-trip the associated keys.
222 if ((test_case.x_keysym == XK_KP_Divide) ||
223 (test_case.x_keysym == XK_KP_Decimal))
224 continue;
225
226 xev.InitKeyEvent(ET_KEY_PRESSED, test_case.ui_keycode, EF_NONE);
227 XEvent* xevent = xev;
228 xevent->xkey.keycode =
229 XKeysymToKeycode(gfx::GetXDisplay(), test_case.x_keysym);
230 if (!xevent->xkey.keycode)
231 continue;
232 KeyEvent event(xev);
233 blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
234 EXPECT_EQ(test_case.expected_result,
235 (webkit_event.modifiers & blink::WebInputEvent::IsKeyPad) != 0)
236 << "Failed in " << i << "th test case: "
237 << "{dom_code:"
238 << KeycodeConverter::DomCodeToCodeString(test_case.dom_code)
239 << ", ui_keycode:" << test_case.ui_keycode
240 << ", x_keysym:" << test_case.x_keysym
241 << "}, expect: " << test_case.expected_result;
242 }
243 #endif
244 }
245
246 TEST(WebInputEventTest, TestMakeWebMouseEvent) {
247 {
248 // Left pressed.
249 base::TimeTicks timestamp = EventTimeForNow();
250 MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
251 gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
252 EF_LEFT_MOUSE_BUTTON);
253 blink::WebMouseEvent webkit_event =
254 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
255 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
256 webkit_event.modifiers);
257 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
258 webkit_event.timeStampSeconds);
259 EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
260 EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
261 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
262 EXPECT_EQ(123, webkit_event.x);
263 EXPECT_EQ(123, webkit_event.windowX);
264 EXPECT_EQ(321, webkit_event.y);
265 EXPECT_EQ(321, webkit_event.windowY);
266 }
267 {
268 // Left released.
269 base::TimeTicks timestamp = EventTimeForNow();
270 MouseEvent ui_event(ET_MOUSE_RELEASED, gfx::Point(123, 321),
271 gfx::Point(123, 321), timestamp, 0,
272 EF_LEFT_MOUSE_BUTTON);
273 blink::WebMouseEvent webkit_event =
274 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
275 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
276 webkit_event.modifiers);
277 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
278 webkit_event.timeStampSeconds);
279 EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
280 EXPECT_EQ(blink::WebInputEvent::MouseUp, webkit_event.type);
281 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
282 EXPECT_EQ(123, webkit_event.x);
283 EXPECT_EQ(123, webkit_event.windowX);
284 EXPECT_EQ(321, webkit_event.y);
285 EXPECT_EQ(321, webkit_event.windowY);
286 }
287 {
288 // Middle pressed.
289 base::TimeTicks timestamp = EventTimeForNow();
290 MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
291 gfx::Point(123, 321), timestamp, EF_MIDDLE_MOUSE_BUTTON,
292 EF_MIDDLE_MOUSE_BUTTON);
293 blink::WebMouseEvent webkit_event =
294 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
295 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
296 webkit_event.modifiers);
297 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
298 webkit_event.timeStampSeconds);
299 EXPECT_EQ(blink::WebMouseEvent::ButtonMiddle, webkit_event.button);
300 EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
301 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
302 EXPECT_EQ(123, webkit_event.x);
303 EXPECT_EQ(123, webkit_event.windowX);
304 EXPECT_EQ(321, webkit_event.y);
305 EXPECT_EQ(321, webkit_event.windowY);
306 }
307 {
308 // Middle released.
309 base::TimeTicks timestamp = EventTimeForNow();
310 MouseEvent ui_event(ET_MOUSE_RELEASED, gfx::Point(123, 321),
311 gfx::Point(123, 321), timestamp, 0,
312 EF_MIDDLE_MOUSE_BUTTON);
313 blink::WebMouseEvent webkit_event =
314 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
315 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
316 webkit_event.modifiers);
317 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
318 webkit_event.timeStampSeconds);
319 EXPECT_EQ(blink::WebMouseEvent::ButtonMiddle, webkit_event.button);
320 EXPECT_EQ(blink::WebInputEvent::MouseUp, webkit_event.type);
321 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
322 EXPECT_EQ(123, webkit_event.x);
323 EXPECT_EQ(123, webkit_event.windowX);
324 EXPECT_EQ(321, webkit_event.y);
325 EXPECT_EQ(321, webkit_event.windowY);
326 }
327 {
328 // Right pressed.
329 base::TimeTicks timestamp = EventTimeForNow();
330 MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
331 gfx::Point(123, 321), timestamp, EF_RIGHT_MOUSE_BUTTON,
332 EF_RIGHT_MOUSE_BUTTON);
333 blink::WebMouseEvent webkit_event =
334 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
335 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
336 webkit_event.modifiers);
337 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
338 webkit_event.timeStampSeconds);
339 EXPECT_EQ(blink::WebMouseEvent::ButtonRight, webkit_event.button);
340 EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
341 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
342 EXPECT_EQ(123, webkit_event.x);
343 EXPECT_EQ(123, webkit_event.windowX);
344 EXPECT_EQ(321, webkit_event.y);
345 EXPECT_EQ(321, webkit_event.windowY);
346 }
347 {
348 // Right released.
349 base::TimeTicks timestamp = EventTimeForNow();
350 MouseEvent ui_event(ET_MOUSE_RELEASED, gfx::Point(123, 321),
351 gfx::Point(123, 321), timestamp, 0,
352 EF_RIGHT_MOUSE_BUTTON);
353 blink::WebMouseEvent webkit_event =
354 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
355 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
356 webkit_event.modifiers);
357 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
358 webkit_event.timeStampSeconds);
359 EXPECT_EQ(blink::WebMouseEvent::ButtonRight, webkit_event.button);
360 EXPECT_EQ(blink::WebInputEvent::MouseUp, webkit_event.type);
361 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
362 EXPECT_EQ(123, webkit_event.x);
363 EXPECT_EQ(123, webkit_event.windowX);
364 EXPECT_EQ(321, webkit_event.y);
365 EXPECT_EQ(321, webkit_event.windowY);
366 }
367 {
368 // Moved
369 base::TimeTicks timestamp = EventTimeForNow();
370 MouseEvent ui_event(ET_MOUSE_MOVED, gfx::Point(123, 321),
371 gfx::Point(123, 321), timestamp, 0, 0);
372 blink::WebMouseEvent webkit_event =
373 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
374 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
375 webkit_event.modifiers);
376 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
377 webkit_event.timeStampSeconds);
378 EXPECT_EQ(blink::WebMouseEvent::ButtonNone, webkit_event.button);
379 EXPECT_EQ(blink::WebInputEvent::MouseMove, webkit_event.type);
380 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
381 EXPECT_EQ(123, webkit_event.x);
382 EXPECT_EQ(123, webkit_event.windowX);
383 EXPECT_EQ(321, webkit_event.y);
384 EXPECT_EQ(321, webkit_event.windowY);
385 }
386 {
387 // Moved with left down
388 base::TimeTicks timestamp = EventTimeForNow();
389 MouseEvent ui_event(ET_MOUSE_MOVED, gfx::Point(123, 321),
390 gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
391 0);
392 blink::WebMouseEvent webkit_event =
393 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
394 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
395 webkit_event.modifiers);
396 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
397 webkit_event.timeStampSeconds);
398 EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
399 EXPECT_EQ(blink::WebInputEvent::MouseMove, webkit_event.type);
400 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
401 EXPECT_EQ(123, webkit_event.x);
402 EXPECT_EQ(123, webkit_event.windowX);
403 EXPECT_EQ(321, webkit_event.y);
404 EXPECT_EQ(321, webkit_event.windowY);
405 }
406 {
407 // Left with shift pressed.
408 base::TimeTicks timestamp = EventTimeForNow();
409 MouseEvent ui_event(
410 ET_MOUSE_PRESSED, gfx::Point(123, 321), gfx::Point(123, 321), timestamp,
411 EF_LEFT_MOUSE_BUTTON | EF_SHIFT_DOWN, EF_LEFT_MOUSE_BUTTON);
412 blink::WebMouseEvent webkit_event =
413 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
414 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
415 webkit_event.modifiers);
416 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
417 webkit_event.timeStampSeconds);
418 EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
419 EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
420 EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
421 EXPECT_EQ(123, webkit_event.x);
422 EXPECT_EQ(123, webkit_event.windowX);
423 EXPECT_EQ(321, webkit_event.y);
424 EXPECT_EQ(321, webkit_event.windowY);
425 }
426 {
427 // Default values for PointerDetails.
428 base::TimeTicks timestamp = EventTimeForNow();
429 MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
430 gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
431 EF_LEFT_MOUSE_BUTTON);
432 blink::WebMouseEvent webkit_event =
433 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
434
435 EXPECT_EQ(blink::WebPointerProperties::PointerType::Mouse,
436 webkit_event.pointerType);
437 EXPECT_EQ(0, webkit_event.tiltX);
438 EXPECT_EQ(0, webkit_event.tiltY);
439 EXPECT_TRUE(std::isnan(webkit_event.force));
440 EXPECT_EQ(123, webkit_event.x);
441 EXPECT_EQ(123, webkit_event.windowX);
442 EXPECT_EQ(321, webkit_event.y);
443 EXPECT_EQ(321, webkit_event.windowY);
444 }
445 {
446 // Stylus values for PointerDetails.
447 base::TimeTicks timestamp = EventTimeForNow();
448 MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
449 gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
450 EF_LEFT_MOUSE_BUTTON);
451 ui_event.set_pointer_details(
452 PointerDetails(EventPointerType::POINTER_TYPE_PEN,
453 /* radius_x */ 0.0f,
454 /* radius_y */ 0.0f,
455 /* force */ 0.8f,
456 /* tilt_x */ 89.5f,
457 /* tilt_y */ -89.5f));
458 blink::WebMouseEvent webkit_event =
459 MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
460
461 EXPECT_EQ(blink::WebPointerProperties::PointerType::Pen,
462 webkit_event.pointerType);
463 EXPECT_EQ(90, webkit_event.tiltX);
464 EXPECT_EQ(-90, webkit_event.tiltY);
465 EXPECT_FLOAT_EQ(0.8f, webkit_event.force);
466 EXPECT_EQ(123, webkit_event.x);
467 EXPECT_EQ(123, webkit_event.windowX);
468 EXPECT_EQ(321, webkit_event.y);
469 EXPECT_EQ(321, webkit_event.windowY);
470 }
471 }
472
473 TEST(WebInputEventTest, TestMakeWebMouseWheelEvent) {
474 {
475 // Mouse wheel.
476 base::TimeTicks timestamp = EventTimeForNow();
477 MouseWheelEvent ui_event(gfx::Vector2d(MouseWheelEvent::kWheelDelta * 2,
478 -MouseWheelEvent::kWheelDelta * 2),
479 gfx::Point(123, 321), gfx::Point(123, 321),
480 timestamp, 0, 0);
481 blink::WebMouseWheelEvent webkit_event = MakeWebMouseWheelEvent(
482 ui_event, base::Bind(&GetScreenLocationFromEvent));
483 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
484 webkit_event.modifiers);
485 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
486 webkit_event.timeStampSeconds);
487 EXPECT_EQ(blink::WebMouseEvent::ButtonNone, webkit_event.button);
488 EXPECT_EQ(blink::WebInputEvent::MouseWheel, webkit_event.type);
489 EXPECT_FLOAT_EQ(ui_event.x_offset() / 53.0f, webkit_event.wheelTicksX);
490 EXPECT_FLOAT_EQ(ui_event.y_offset() / 53.0f, webkit_event.wheelTicksY);
491 EXPECT_EQ(blink::WebPointerProperties::PointerType::Mouse,
492 webkit_event.pointerType);
493 EXPECT_EQ(0, webkit_event.tiltX);
494 EXPECT_EQ(0, webkit_event.tiltY);
495 EXPECT_TRUE(std::isnan(webkit_event.force));
496 EXPECT_EQ(123, webkit_event.x);
497 EXPECT_EQ(123, webkit_event.windowX);
498 EXPECT_EQ(321, webkit_event.y);
499 EXPECT_EQ(321, webkit_event.windowY);
500 }
501 {
502 // Mouse wheel with shift and no x offset.
503 base::TimeTicks timestamp = EventTimeForNow();
504 MouseWheelEvent ui_event(
505 gfx::Vector2d(0, -MouseWheelEvent::kWheelDelta * 2),
506 gfx::Point(123, 321), gfx::Point(123, 321), timestamp, EF_SHIFT_DOWN,
507 0);
508 blink::WebMouseWheelEvent webkit_event = MakeWebMouseWheelEvent(
509 ui_event, base::Bind(&GetScreenLocationFromEvent));
510 EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
511 webkit_event.modifiers);
512 EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
513 webkit_event.timeStampSeconds);
514 EXPECT_EQ(blink::WebMouseEvent::ButtonNone, webkit_event.button);
515 EXPECT_EQ(blink::WebInputEvent::MouseWheel, webkit_event.type);
516 EXPECT_FLOAT_EQ(ui_event.y_offset() / 53.0f, webkit_event.wheelTicksX);
517 EXPECT_FLOAT_EQ(0, webkit_event.wheelTicksY);
518 EXPECT_EQ(blink::WebPointerProperties::PointerType::Mouse,
519 webkit_event.pointerType);
520 EXPECT_EQ(0, webkit_event.tiltX);
521 EXPECT_EQ(0, webkit_event.tiltY);
522 EXPECT_TRUE(std::isnan(webkit_event.force));
523 EXPECT_EQ(123, webkit_event.x);
524 EXPECT_EQ(123, webkit_event.windowX);
525 EXPECT_EQ(321, webkit_event.y);
526 EXPECT_EQ(321, webkit_event.windowY);
527 }
528 }
529
530 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/blink/web_input_event_traits_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698