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

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

Issue 2270953002: Merge the mojo blink type converter into ui/events/blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase apparently restored deleted files Created 4 years, 3 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.h ('k') | ui/events/blink/web_input_event_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/events/blink/web_input_event.h" 5 #include "ui/events/blink/web_input_event.h"
6 6
7 #include "ui/events/base_event_utils.h" 7 #include "ui/events/base_event_utils.h"
8 #include "ui/events/blink/blink_event_util.h" 8 #include "ui/events/blink/blink_event_util.h"
9 #include "ui/events/event.h" 9 #include "ui/events/event.h"
10 #include "ui/events/event_utils.h" 10 #include "ui/events/event_utils.h"
11 #include "ui/events/keycodes/dom/keycode_converter.h" 11 #include "ui/events/keycodes/dom/keycode_converter.h"
12 #include "ui/events/keycodes/keyboard_code_conversion.h" 12 #include "ui/events/keycodes/keyboard_code_conversion.h"
13 13
14 #if defined(OS_WIN) 14 #if defined(OS_WIN)
15 #include "ui/events/blink/web_input_event_builders_win.h" 15 #include "ui/events/blink/web_input_event_builders_win.h"
16 #endif 16 #endif
17 17
18 namespace ui { 18 namespace ui {
19 19
20 namespace { 20 namespace {
21 // Used for scrolling. This matches Firefox behavior.
22 const int kPixelsPerTick = 53;
23 21
24 gfx::Point GetScreenLocationFromEvent( 22 gfx::Point GetScreenLocationFromEvent(
25 const LocatedEvent& event, 23 const LocatedEvent& event,
26 const base::Callback<gfx::Point(const LocatedEvent& event)>& 24 const base::Callback<gfx::Point(const LocatedEvent& event)>&
27 screen_location_callback) { 25 screen_location_callback) {
28 DCHECK(!screen_location_callback.is_null()); 26 DCHECK(!screen_location_callback.is_null());
29 return event.target() ? screen_location_callback.Run(event) 27 return event.target() ? screen_location_callback.Run(event)
30 : event.root_location(); 28 : event.root_location();
31 } 29 }
32 30
(...skipping 27 matching lines...) Expand all
60 } // namespace 58 } // namespace
61 59
62 #if defined(OS_WIN) 60 #if defined(OS_WIN)
63 // On Windows, we can just use the builtin WebKit factory methods to fully 61 // On Windows, we can just use the builtin WebKit factory methods to fully
64 // construct our pre-translated events. 62 // construct our pre-translated events.
65 63
66 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( 64 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent(
67 const base::NativeEvent& native_event, 65 const base::NativeEvent& native_event,
68 const base::TimeTicks& time_stamp, 66 const base::TimeTicks& time_stamp,
69 blink::WebPointerProperties::PointerType pointer_type) { 67 blink::WebPointerProperties::PointerType pointer_type) {
70 return WebMouseEventBuilder::Build(native_event.hwnd, native_event.message, 68 return WebMouseEventBuilder::Build(
71 native_event.wParam, native_event.lParam, 69 native_event.hwnd, native_event.message, native_event.wParam,
72 ui::EventTimeStampToSeconds(time_stamp), 70 native_event.lParam, EventTimeStampToSeconds(time_stamp), pointer_type);
73 pointer_type);
74 } 71 }
75 72
76 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( 73 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent(
77 const base::NativeEvent& native_event, 74 const base::NativeEvent& native_event,
78 const base::TimeTicks& time_stamp, 75 const base::TimeTicks& time_stamp,
79 blink::WebPointerProperties::PointerType pointer_type) { 76 blink::WebPointerProperties::PointerType pointer_type) {
80 return WebMouseWheelEventBuilder::Build( 77 return WebMouseWheelEventBuilder::Build(
81 native_event.hwnd, native_event.message, native_event.wParam, 78 native_event.hwnd, native_event.message, native_event.wParam,
82 native_event.lParam, ui::EventTimeStampToSeconds(time_stamp), 79 native_event.lParam, EventTimeStampToSeconds(time_stamp), pointer_type);
83 pointer_type);
84 } 80 }
85 81
86 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( 82 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent(
87 const base::NativeEvent& native_event, 83 const base::NativeEvent& native_event,
88 const base::TimeTicks& time_stamp) { 84 const base::TimeTicks& time_stamp) {
89 return WebKeyboardEventBuilder::Build( 85 return WebKeyboardEventBuilder::Build(
90 native_event.hwnd, native_event.message, native_event.wParam, 86 native_event.hwnd, native_event.message, native_event.wParam,
91 native_event.lParam, ui::EventTimeStampToSeconds(time_stamp)); 87 native_event.lParam, EventTimeStampToSeconds(time_stamp));
92 } 88 }
93 #endif // defined(OS_WIN) 89 #endif // defined(OS_WIN)
94 90
95 blink::WebKeyboardEvent MakeWebKeyboardEventFromUiEvent(const KeyEvent& event) { 91 blink::WebKeyboardEvent MakeWebKeyboardEventFromUiEvent(const KeyEvent& event) {
96 blink::WebKeyboardEvent webkit_event; 92 blink::WebKeyboardEvent webkit_event;
97 93
98 webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp()); 94 webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp());
99 webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()) | 95 webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()) |
100 DomCodeToWebInputEventModifiers(event.code()); 96 DomCodeToWebInputEventModifiers(event.code());
101 97
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 offset_ordinal_y = event.x_offset_ordinal(); 144 offset_ordinal_y = event.x_offset_ordinal();
149 } else { 145 } else {
150 webkit_event.deltaX = event.x_offset(); 146 webkit_event.deltaX = event.x_offset();
151 webkit_event.deltaY = event.y_offset(); 147 webkit_event.deltaY = event.y_offset();
152 offset_ordinal_x = event.x_offset_ordinal(); 148 offset_ordinal_x = event.x_offset_ordinal();
153 offset_ordinal_y = event.y_offset_ordinal(); 149 offset_ordinal_y = event.y_offset_ordinal();
154 } 150 }
155 151
156 if (offset_ordinal_x != 0.f && webkit_event.deltaX != 0.f) 152 if (offset_ordinal_x != 0.f && webkit_event.deltaX != 0.f)
157 webkit_event.accelerationRatioX = offset_ordinal_x / webkit_event.deltaX; 153 webkit_event.accelerationRatioX = offset_ordinal_x / webkit_event.deltaX;
158 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; 154 webkit_event.wheelTicksX = webkit_event.deltaX / MouseWheelEvent::kWheelDelta;
159 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; 155 webkit_event.wheelTicksY = webkit_event.deltaY / MouseWheelEvent::kWheelDelta;
160 if (offset_ordinal_y != 0.f && webkit_event.deltaY != 0.f) 156 if (offset_ordinal_y != 0.f && webkit_event.deltaY != 0.f)
161 webkit_event.accelerationRatioY = offset_ordinal_y / webkit_event.deltaY; 157 webkit_event.accelerationRatioY = offset_ordinal_y / webkit_event.deltaY;
162 158
163 webkit_event.pointerType = 159 webkit_event.pointerType =
164 EventPointerTypeToWebPointerType(event.pointer_details().pointer_type); 160 EventPointerTypeToWebPointerType(event.pointer_details().pointer_type);
165 return webkit_event; 161 return webkit_event;
166 } 162 }
167 163
168 blink::WebGestureEvent MakeWebGestureEventFromUiEvent( 164 blink::WebGestureEvent MakeWebGestureEventFromUiEvent(
169 const ScrollEvent& event) { 165 const ScrollEvent& event) {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 // 210 //
215 // The exception is mouse events on linux. The MouseEvent contains enough 211 // The exception is mouse events on linux. The MouseEvent contains enough
216 // necessary information to construct a WebMouseEvent. So instead of extracting 212 // necessary information to construct a WebMouseEvent. So instead of extracting
217 // the information from the XEvent, which can be tricky when supporting both 213 // the information from the XEvent, which can be tricky when supporting both
218 // XInput2 and XInput, the WebMouseEvent is constructed from the 214 // XInput2 and XInput, the WebMouseEvent is constructed from the
219 // MouseEvent. This will not be necessary once only XInput2 is supported. 215 // MouseEvent. This will not be necessary once only XInput2 is supported.
220 // 216 //
221 217
222 blink::WebMouseEvent MakeWebMouseEvent( 218 blink::WebMouseEvent MakeWebMouseEvent(
223 const MouseEvent& event, 219 const MouseEvent& event,
224 const base::Callback<gfx::Point(const ui::LocatedEvent& event)>& 220 const base::Callback<gfx::Point(const LocatedEvent& event)>&
225 screen_location_callback) { 221 screen_location_callback) {
226 // Construct an untranslated event from the platform event data. 222 // Construct an untranslated event from the platform event data.
227 blink::WebMouseEvent webkit_event = 223 blink::WebMouseEvent webkit_event =
228 #if defined(OS_WIN) 224 #if defined(OS_WIN)
229 // On Windows we have WM_ events comming from desktop and pure ui::Events 225 // On Windows we have WM_ events comming from desktop and pure Events
230 // comming from metro mode. 226 // comming from metro mode.
231 event.native_event().message && (event.type() != ET_MOUSE_EXITED) 227 event.native_event().message && (event.type() != ET_MOUSE_EXITED)
232 ? MakeUntranslatedWebMouseEventFromNativeEvent( 228 ? MakeUntranslatedWebMouseEventFromNativeEvent(
233 event.native_event(), event.time_stamp(), 229 event.native_event(), event.time_stamp(),
234 EventPointerTypeToWebPointerType( 230 EventPointerTypeToWebPointerType(
235 event.pointer_details().pointer_type)) 231 event.pointer_details().pointer_type))
236 : MakeWebMouseEventFromUiEvent(event); 232 : MakeWebMouseEventFromUiEvent(event);
237 #else 233 #else
238 MakeWebMouseEventFromUiEvent(event); 234 MakeWebMouseEventFromUiEvent(event);
239 #endif 235 #endif
(...skipping 10 matching lines...) Expand all
250 const gfx::Point screen_point = 246 const gfx::Point screen_point =
251 GetScreenLocationFromEvent(event, screen_location_callback); 247 GetScreenLocationFromEvent(event, screen_location_callback);
252 webkit_event.globalX = screen_point.x(); 248 webkit_event.globalX = screen_point.x();
253 webkit_event.globalY = screen_point.y(); 249 webkit_event.globalY = screen_point.y();
254 250
255 return webkit_event; 251 return webkit_event;
256 } 252 }
257 253
258 blink::WebMouseWheelEvent MakeWebMouseWheelEvent( 254 blink::WebMouseWheelEvent MakeWebMouseWheelEvent(
259 const MouseWheelEvent& event, 255 const MouseWheelEvent& event,
260 const base::Callback<gfx::Point(const ui::LocatedEvent& event)>& 256 const base::Callback<gfx::Point(const LocatedEvent& event)>&
261 screen_location_callback) { 257 screen_location_callback) {
262 #if defined(OS_WIN) 258 #if defined(OS_WIN)
263 // Construct an untranslated event from the platform event data. 259 // Construct an untranslated event from the platform event data.
264 blink::WebMouseWheelEvent webkit_event = 260 blink::WebMouseWheelEvent webkit_event =
265 event.native_event().message 261 event.native_event().message
266 ? MakeUntranslatedWebMouseWheelEventFromNativeEvent( 262 ? MakeUntranslatedWebMouseWheelEventFromNativeEvent(
267 event.native_event(), event.time_stamp(), 263 event.native_event(), event.time_stamp(),
268 EventPointerTypeToWebPointerType( 264 EventPointerTypeToWebPointerType(
269 event.pointer_details().pointer_type)) 265 event.pointer_details().pointer_type))
270 : MakeWebMouseWheelEventFromUiEvent(event); 266 : MakeWebMouseWheelEventFromUiEvent(event);
(...skipping 10 matching lines...) Expand all
281 const gfx::Point screen_point = 277 const gfx::Point screen_point =
282 GetScreenLocationFromEvent(event, screen_location_callback); 278 GetScreenLocationFromEvent(event, screen_location_callback);
283 webkit_event.globalX = screen_point.x(); 279 webkit_event.globalX = screen_point.x();
284 webkit_event.globalY = screen_point.y(); 280 webkit_event.globalY = screen_point.y();
285 281
286 return webkit_event; 282 return webkit_event;
287 } 283 }
288 284
289 blink::WebMouseWheelEvent MakeWebMouseWheelEvent( 285 blink::WebMouseWheelEvent MakeWebMouseWheelEvent(
290 const ScrollEvent& event, 286 const ScrollEvent& event,
291 const base::Callback<gfx::Point(const ui::LocatedEvent& event)>& 287 const base::Callback<gfx::Point(const LocatedEvent& event)>&
292 screen_location_callback) { 288 screen_location_callback) {
293 #if defined(OS_WIN) 289 #if defined(OS_WIN)
294 // Construct an untranslated event from the platform event data. 290 // Construct an untranslated event from the platform event data.
295 blink::WebMouseWheelEvent webkit_event = 291 blink::WebMouseWheelEvent webkit_event =
296 event.native_event().message 292 event.native_event().message
297 ? MakeUntranslatedWebMouseWheelEventFromNativeEvent( 293 ? MakeUntranslatedWebMouseWheelEventFromNativeEvent(
298 event.native_event(), event.time_stamp(), 294 event.native_event(), event.time_stamp(),
299 EventPointerTypeToWebPointerType( 295 EventPointerTypeToWebPointerType(
300 event.pointer_details().pointer_type)) 296 event.pointer_details().pointer_type))
301 : MakeWebMouseWheelEventFromUiEvent(event); 297 : MakeWebMouseWheelEventFromUiEvent(event);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 webkit_event.domCode = static_cast<int>(event.code()); 329 webkit_event.domCode = static_cast<int>(event.code());
334 webkit_event.domKey = static_cast<int>(event.GetDomKey()); 330 webkit_event.domKey = static_cast<int>(event.GetDomKey());
335 return webkit_event; 331 return webkit_event;
336 } 332 }
337 #endif 333 #endif
338 return MakeWebKeyboardEventFromUiEvent(event); 334 return MakeWebKeyboardEventFromUiEvent(event);
339 } 335 }
340 336
341 blink::WebGestureEvent MakeWebGestureEvent( 337 blink::WebGestureEvent MakeWebGestureEvent(
342 const GestureEvent& event, 338 const GestureEvent& event,
343 const base::Callback<gfx::Point(const ui::LocatedEvent& event)>& 339 const base::Callback<gfx::Point(const LocatedEvent& event)>&
344 screen_location_callback) { 340 screen_location_callback) {
345 blink::WebGestureEvent gesture_event = MakeWebGestureEventFromUIEvent(event); 341 blink::WebGestureEvent gesture_event = MakeWebGestureEventFromUIEvent(event);
346 342
347 gesture_event.x = event.x(); 343 gesture_event.x = event.x();
348 gesture_event.y = event.y(); 344 gesture_event.y = event.y();
349 345
350 const gfx::Point screen_point = 346 const gfx::Point screen_point =
351 GetScreenLocationFromEvent(event, screen_location_callback); 347 GetScreenLocationFromEvent(event, screen_location_callback);
352 gesture_event.globalX = screen_point.x(); 348 gesture_event.globalX = screen_point.x();
353 gesture_event.globalY = screen_point.y(); 349 gesture_event.globalY = screen_point.y();
354 350
355 return gesture_event; 351 return gesture_event;
356 } 352 }
357 353
358 blink::WebGestureEvent MakeWebGestureEvent( 354 blink::WebGestureEvent MakeWebGestureEvent(
359 const ScrollEvent& event, 355 const ScrollEvent& event,
360 const base::Callback<gfx::Point(const ui::LocatedEvent& event)>& 356 const base::Callback<gfx::Point(const LocatedEvent& event)>&
361 screen_location_callback) { 357 screen_location_callback) {
362 blink::WebGestureEvent gesture_event = MakeWebGestureEventFromUiEvent(event); 358 blink::WebGestureEvent gesture_event = MakeWebGestureEventFromUiEvent(event);
363 gesture_event.x = event.x(); 359 gesture_event.x = event.x();
364 gesture_event.y = event.y(); 360 gesture_event.y = event.y();
365 361
366 const gfx::Point screen_point = 362 const gfx::Point screen_point =
367 GetScreenLocationFromEvent(event, screen_location_callback); 363 GetScreenLocationFromEvent(event, screen_location_callback);
368 gesture_event.globalX = screen_point.x(); 364 gesture_event.globalX = screen_point.x();
369 gesture_event.globalY = screen_point.y(); 365 gesture_event.globalY = screen_point.y();
370 366
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp()); 437 webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp());
442 438
443 if ((event.flags() & EF_SHIFT_DOWN) != 0 && event.x_offset() == 0) { 439 if ((event.flags() & EF_SHIFT_DOWN) != 0 && event.x_offset() == 0) {
444 webkit_event.deltaX = event.y_offset(); 440 webkit_event.deltaX = event.y_offset();
445 webkit_event.deltaY = 0; 441 webkit_event.deltaY = 0;
446 } else { 442 } else {
447 webkit_event.deltaX = event.x_offset(); 443 webkit_event.deltaX = event.x_offset();
448 webkit_event.deltaY = event.y_offset(); 444 webkit_event.deltaY = event.y_offset();
449 } 445 }
450 446
451 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; 447 webkit_event.wheelTicksX = webkit_event.deltaX / MouseWheelEvent::kWheelDelta;
452 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; 448 webkit_event.wheelTicksY = webkit_event.deltaY / MouseWheelEvent::kWheelDelta;
453 449
454 webkit_event.tiltX = roundf(event.pointer_details().tilt_x); 450 webkit_event.tiltX = roundf(event.pointer_details().tilt_x);
455 webkit_event.tiltY = roundf(event.pointer_details().tilt_y); 451 webkit_event.tiltY = roundf(event.pointer_details().tilt_y);
456 webkit_event.force = event.pointer_details().force; 452 webkit_event.force = event.pointer_details().force;
457 webkit_event.pointerType = 453 webkit_event.pointerType =
458 EventPointerTypeToWebPointerType(event.pointer_details().pointer_type); 454 EventPointerTypeToWebPointerType(event.pointer_details().pointer_type);
459 455
460 return webkit_event; 456 return webkit_event;
461 } 457 }
462 458
463 } // namespace ui 459 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/blink/web_input_event.h ('k') | ui/events/blink/web_input_event_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698