OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 // MSVC++ requires this to be set before any other includes to get M_PI. | 5 // MSVC++ requires this to be set before any other includes to get M_PI. |
6 #define _USE_MATH_DEFINES | 6 #define _USE_MATH_DEFINES |
7 | 7 |
8 #include "content/browser/renderer_host/input/web_input_event_util.h" | 8 #include "ui/events/blink/blink_event_util.h" |
9 | 9 |
10 #include <cmath> | 10 #include <cmath> |
11 | 11 |
12 #include "base/strings/string_util.h" | 12 #include "base/time/time.h" |
13 #include "content/common/input/web_touch_event_traits.h" | 13 #include "third_party/WebKit/public/web/WebInputEvent.h" |
14 #include "ui/events/event_constants.h" | 14 #include "ui/events/event_constants.h" |
15 #include "ui/events/gesture_detection/gesture_event_data.h" | 15 #include "ui/events/gesture_detection/gesture_event_data.h" |
16 #include "ui/events/gesture_detection/motion_event.h" | 16 #include "ui/events/gesture_detection/motion_event.h" |
| 17 #include "ui/events/gesture_event_details.h" |
17 #include "ui/gfx/geometry/safe_integer_conversions.h" | 18 #include "ui/gfx/geometry/safe_integer_conversions.h" |
18 | 19 |
19 using blink::WebGestureEvent; | 20 using blink::WebGestureEvent; |
20 using blink::WebInputEvent; | 21 using blink::WebInputEvent; |
21 using blink::WebTouchEvent; | 22 using blink::WebTouchEvent; |
22 using blink::WebTouchPoint; | 23 using blink::WebTouchPoint; |
23 using ui::MotionEvent; | |
24 | 24 |
| 25 namespace ui { |
25 namespace { | 26 namespace { |
26 | 27 |
27 const char* GetKeyIdentifier(ui::KeyboardCode key_code) { | |
28 switch (key_code) { | |
29 case ui::VKEY_MENU: | |
30 return "Alt"; | |
31 case ui::VKEY_CONTROL: | |
32 return "Control"; | |
33 case ui::VKEY_SHIFT: | |
34 return "Shift"; | |
35 case ui::VKEY_CAPITAL: | |
36 return "CapsLock"; | |
37 case ui::VKEY_LWIN: | |
38 case ui::VKEY_RWIN: | |
39 return "Win"; | |
40 case ui::VKEY_CLEAR: | |
41 return "Clear"; | |
42 case ui::VKEY_DOWN: | |
43 return "Down"; | |
44 case ui::VKEY_END: | |
45 return "End"; | |
46 case ui::VKEY_RETURN: | |
47 return "Enter"; | |
48 case ui::VKEY_EXECUTE: | |
49 return "Execute"; | |
50 case ui::VKEY_F1: | |
51 return "F1"; | |
52 case ui::VKEY_F2: | |
53 return "F2"; | |
54 case ui::VKEY_F3: | |
55 return "F3"; | |
56 case ui::VKEY_F4: | |
57 return "F4"; | |
58 case ui::VKEY_F5: | |
59 return "F5"; | |
60 case ui::VKEY_F6: | |
61 return "F6"; | |
62 case ui::VKEY_F7: | |
63 return "F7"; | |
64 case ui::VKEY_F8: | |
65 return "F8"; | |
66 case ui::VKEY_F9: | |
67 return "F9"; | |
68 case ui::VKEY_F10: | |
69 return "F10"; | |
70 case ui::VKEY_F11: | |
71 return "F11"; | |
72 case ui::VKEY_F12: | |
73 return "F12"; | |
74 case ui::VKEY_F13: | |
75 return "F13"; | |
76 case ui::VKEY_F14: | |
77 return "F14"; | |
78 case ui::VKEY_F15: | |
79 return "F15"; | |
80 case ui::VKEY_F16: | |
81 return "F16"; | |
82 case ui::VKEY_F17: | |
83 return "F17"; | |
84 case ui::VKEY_F18: | |
85 return "F18"; | |
86 case ui::VKEY_F19: | |
87 return "F19"; | |
88 case ui::VKEY_F20: | |
89 return "F20"; | |
90 case ui::VKEY_F21: | |
91 return "F21"; | |
92 case ui::VKEY_F22: | |
93 return "F22"; | |
94 case ui::VKEY_F23: | |
95 return "F23"; | |
96 case ui::VKEY_F24: | |
97 return "F24"; | |
98 case ui::VKEY_HELP: | |
99 return "Help"; | |
100 case ui::VKEY_HOME: | |
101 return "Home"; | |
102 case ui::VKEY_INSERT: | |
103 return "Insert"; | |
104 case ui::VKEY_LEFT: | |
105 return "Left"; | |
106 case ui::VKEY_NEXT: | |
107 return "PageDown"; | |
108 case ui::VKEY_PRIOR: | |
109 return "PageUp"; | |
110 case ui::VKEY_PAUSE: | |
111 return "Pause"; | |
112 case ui::VKEY_SNAPSHOT: | |
113 return "PrintScreen"; | |
114 case ui::VKEY_RIGHT: | |
115 return "Right"; | |
116 case ui::VKEY_SCROLL: | |
117 return "Scroll"; | |
118 case ui::VKEY_SELECT: | |
119 return "Select"; | |
120 case ui::VKEY_UP: | |
121 return "Up"; | |
122 case ui::VKEY_DELETE: | |
123 return "U+007F"; // Standard says that DEL becomes U+007F. | |
124 case ui::VKEY_MEDIA_NEXT_TRACK: | |
125 return "MediaNextTrack"; | |
126 case ui::VKEY_MEDIA_PREV_TRACK: | |
127 return "MediaPreviousTrack"; | |
128 case ui::VKEY_MEDIA_STOP: | |
129 return "MediaStop"; | |
130 case ui::VKEY_MEDIA_PLAY_PAUSE: | |
131 return "MediaPlayPause"; | |
132 case ui::VKEY_VOLUME_MUTE: | |
133 return "VolumeMute"; | |
134 case ui::VKEY_VOLUME_DOWN: | |
135 return "VolumeDown"; | |
136 case ui::VKEY_VOLUME_UP: | |
137 return "VolumeUp"; | |
138 default: | |
139 return NULL; | |
140 }; | |
141 } | |
142 | |
143 WebInputEvent::Type ToWebInputEventType(MotionEvent::Action action) { | 28 WebInputEvent::Type ToWebInputEventType(MotionEvent::Action action) { |
144 switch (action) { | 29 switch (action) { |
145 case MotionEvent::ACTION_DOWN: | 30 case MotionEvent::ACTION_DOWN: |
146 return WebInputEvent::TouchStart; | 31 return WebInputEvent::TouchStart; |
147 case MotionEvent::ACTION_MOVE: | 32 case MotionEvent::ACTION_MOVE: |
148 return WebInputEvent::TouchMove; | 33 return WebInputEvent::TouchMove; |
149 case MotionEvent::ACTION_UP: | 34 case MotionEvent::ACTION_UP: |
150 return WebInputEvent::TouchEnd; | 35 return WebInputEvent::TouchEnd; |
151 case MotionEvent::ACTION_CANCEL: | 36 case MotionEvent::ACTION_CANCEL: |
152 return WebInputEvent::TouchCancel; | 37 return WebInputEvent::TouchCancel; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 touch.rotationAngle = orientation_deg + 90; | 120 touch.rotationAngle = orientation_deg + 90; |
236 } | 121 } |
237 | 122 |
238 touch.force = event.GetPressure(pointer_index); | 123 touch.force = event.GetPressure(pointer_index); |
239 | 124 |
240 return touch; | 125 return touch; |
241 } | 126 } |
242 | 127 |
243 } // namespace | 128 } // namespace |
244 | 129 |
245 namespace content { | |
246 | |
247 void UpdateWindowsKeyCodeAndKeyIdentifier(blink::WebKeyboardEvent* event, | |
248 ui::KeyboardCode windows_key_code) { | |
249 event->windowsKeyCode = windows_key_code; | |
250 | |
251 const char* id = GetKeyIdentifier(windows_key_code); | |
252 if (id) { | |
253 base::strlcpy(event->keyIdentifier, id, sizeof(event->keyIdentifier) - 1); | |
254 } else { | |
255 base::snprintf(event->keyIdentifier, | |
256 sizeof(event->keyIdentifier), | |
257 "U+%04X", | |
258 base::ToUpperASCII(static_cast<int>(windows_key_code))); | |
259 } | |
260 } | |
261 | |
262 blink::WebTouchEvent CreateWebTouchEventFromMotionEvent( | 130 blink::WebTouchEvent CreateWebTouchEventFromMotionEvent( |
263 const ui::MotionEvent& event, | 131 const MotionEvent& event, |
264 bool may_cause_scrolling) { | 132 bool may_cause_scrolling) { |
265 static_assert(static_cast<int>(MotionEvent::MAX_TOUCH_POINT_COUNT) == | 133 static_assert(static_cast<int>(MotionEvent::MAX_TOUCH_POINT_COUNT) == |
266 static_cast<int>(blink::WebTouchEvent::touchesLengthCap), | 134 static_cast<int>(blink::WebTouchEvent::touchesLengthCap), |
267 "inconsistent maximum number of active touch points"); | 135 "inconsistent maximum number of active touch points"); |
268 | 136 |
269 blink::WebTouchEvent result; | 137 blink::WebTouchEvent result; |
270 | 138 |
271 WebTouchEventTraits::ResetType( | 139 result.type = ToWebInputEventType(event.GetAction()); |
272 ToWebInputEventType(event.GetAction()), | 140 result.cancelable = (result.type != WebInputEvent::TouchCancel); |
| 141 result.timeStampSeconds = |
273 (event.GetEventTime() - base::TimeTicks()).InSecondsF(), | 142 (event.GetEventTime() - base::TimeTicks()).InSecondsF(), |
274 &result); | |
275 result.causesScrollingIfUncanceled = may_cause_scrolling; | 143 result.causesScrollingIfUncanceled = may_cause_scrolling; |
276 | |
277 result.modifiers = EventFlagsToWebEventModifiers(event.GetFlags()); | 144 result.modifiers = EventFlagsToWebEventModifiers(event.GetFlags()); |
278 result.touchesLength = | 145 result.touchesLength = |
279 std::min(event.GetPointerCount(), | 146 std::min(static_cast<unsigned>(event.GetPointerCount()), |
280 static_cast<size_t>(WebTouchEvent::touchesLengthCap)); | 147 static_cast<unsigned>(WebTouchEvent::touchesLengthCap)); |
281 DCHECK_GT(result.touchesLength, 0U); | 148 DCHECK_GT(result.touchesLength, 0U); |
282 | 149 |
283 for (size_t i = 0; i < result.touchesLength; ++i) | 150 for (size_t i = 0; i < result.touchesLength; ++i) |
284 result.touches[i] = CreateWebTouchPoint(event, i); | 151 result.touches[i] = CreateWebTouchPoint(event, i); |
285 | 152 |
286 return result; | 153 return result; |
287 } | 154 } |
288 | 155 |
289 WebGestureEvent CreateWebGestureEvent(const ui::GestureEventDetails& details, | 156 int EventFlagsToWebEventModifiers(int flags) { |
| 157 int modifiers = 0; |
| 158 |
| 159 if (flags & EF_SHIFT_DOWN) |
| 160 modifiers |= blink::WebInputEvent::ShiftKey; |
| 161 if (flags & EF_CONTROL_DOWN) |
| 162 modifiers |= blink::WebInputEvent::ControlKey; |
| 163 if (flags & EF_ALT_DOWN) |
| 164 modifiers |= blink::WebInputEvent::AltKey; |
| 165 if (flags & EF_COMMAND_DOWN) |
| 166 modifiers |= blink::WebInputEvent::MetaKey; |
| 167 |
| 168 if (flags & EF_LEFT_MOUSE_BUTTON) |
| 169 modifiers |= blink::WebInputEvent::LeftButtonDown; |
| 170 if (flags & EF_MIDDLE_MOUSE_BUTTON) |
| 171 modifiers |= blink::WebInputEvent::MiddleButtonDown; |
| 172 if (flags & EF_RIGHT_MOUSE_BUTTON) |
| 173 modifiers |= blink::WebInputEvent::RightButtonDown; |
| 174 if (flags & EF_CAPS_LOCK_DOWN) |
| 175 modifiers |= blink::WebInputEvent::CapsLockOn; |
| 176 if (flags & EF_IS_REPEAT) |
| 177 modifiers |= blink::WebInputEvent::IsAutoRepeat; |
| 178 if (flags & EF_NUMPAD_KEY) |
| 179 modifiers |= blink::WebInputEvent::IsKeyPad; |
| 180 |
| 181 return modifiers; |
| 182 } |
| 183 |
| 184 WebGestureEvent CreateWebGestureEvent(const GestureEventDetails& details, |
290 base::TimeDelta timestamp, | 185 base::TimeDelta timestamp, |
291 const gfx::PointF& location, | 186 const gfx::PointF& location, |
292 const gfx::PointF& raw_location, | 187 const gfx::PointF& raw_location, |
293 int flags) { | 188 int flags) { |
294 WebGestureEvent gesture; | 189 WebGestureEvent gesture; |
295 gesture.timeStampSeconds = timestamp.InSecondsF(); | 190 gesture.timeStampSeconds = timestamp.InSecondsF(); |
296 gesture.x = gfx::ToFlooredInt(location.x()); | 191 gesture.x = gfx::ToFlooredInt(location.x()); |
297 gesture.y = gfx::ToFlooredInt(location.y()); | 192 gesture.y = gfx::ToFlooredInt(location.y()); |
298 gesture.globalX = gfx::ToFlooredInt(raw_location.x()); | 193 gesture.globalX = gfx::ToFlooredInt(raw_location.x()); |
299 gesture.globalY = gfx::ToFlooredInt(raw_location.y()); | 194 gesture.globalY = gfx::ToFlooredInt(raw_location.y()); |
300 gesture.modifiers = EventFlagsToWebEventModifiers(flags); | 195 gesture.modifiers = EventFlagsToWebEventModifiers(flags); |
301 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen; | 196 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen; |
302 | 197 |
303 switch (details.type()) { | 198 switch (details.type()) { |
304 case ui::ET_GESTURE_SHOW_PRESS: | 199 case ET_GESTURE_SHOW_PRESS: |
305 gesture.type = WebInputEvent::GestureShowPress; | 200 gesture.type = WebInputEvent::GestureShowPress; |
306 gesture.data.showPress.width = details.bounding_box_f().width(); | 201 gesture.data.showPress.width = details.bounding_box_f().width(); |
307 gesture.data.showPress.height = details.bounding_box_f().height(); | 202 gesture.data.showPress.height = details.bounding_box_f().height(); |
308 break; | 203 break; |
309 case ui::ET_GESTURE_DOUBLE_TAP: | 204 case ET_GESTURE_DOUBLE_TAP: |
310 gesture.type = WebInputEvent::GestureDoubleTap; | 205 gesture.type = WebInputEvent::GestureDoubleTap; |
311 DCHECK_EQ(1, details.tap_count()); | 206 DCHECK_EQ(1, details.tap_count()); |
312 gesture.data.tap.tapCount = details.tap_count(); | 207 gesture.data.tap.tapCount = details.tap_count(); |
313 gesture.data.tap.width = details.bounding_box_f().width(); | 208 gesture.data.tap.width = details.bounding_box_f().width(); |
314 gesture.data.tap.height = details.bounding_box_f().height(); | 209 gesture.data.tap.height = details.bounding_box_f().height(); |
315 break; | 210 break; |
316 case ui::ET_GESTURE_TAP: | 211 case ET_GESTURE_TAP: |
317 gesture.type = WebInputEvent::GestureTap; | 212 gesture.type = WebInputEvent::GestureTap; |
318 DCHECK_GE(details.tap_count(), 1); | 213 DCHECK_GE(details.tap_count(), 1); |
319 gesture.data.tap.tapCount = details.tap_count(); | 214 gesture.data.tap.tapCount = details.tap_count(); |
320 gesture.data.tap.width = details.bounding_box_f().width(); | 215 gesture.data.tap.width = details.bounding_box_f().width(); |
321 gesture.data.tap.height = details.bounding_box_f().height(); | 216 gesture.data.tap.height = details.bounding_box_f().height(); |
322 break; | 217 break; |
323 case ui::ET_GESTURE_TAP_UNCONFIRMED: | 218 case ET_GESTURE_TAP_UNCONFIRMED: |
324 gesture.type = WebInputEvent::GestureTapUnconfirmed; | 219 gesture.type = WebInputEvent::GestureTapUnconfirmed; |
325 DCHECK_EQ(1, details.tap_count()); | 220 DCHECK_EQ(1, details.tap_count()); |
326 gesture.data.tap.tapCount = details.tap_count(); | 221 gesture.data.tap.tapCount = details.tap_count(); |
327 gesture.data.tap.width = details.bounding_box_f().width(); | 222 gesture.data.tap.width = details.bounding_box_f().width(); |
328 gesture.data.tap.height = details.bounding_box_f().height(); | 223 gesture.data.tap.height = details.bounding_box_f().height(); |
329 break; | 224 break; |
330 case ui::ET_GESTURE_LONG_PRESS: | 225 case ET_GESTURE_LONG_PRESS: |
331 gesture.type = WebInputEvent::GestureLongPress; | 226 gesture.type = WebInputEvent::GestureLongPress; |
332 gesture.data.longPress.width = details.bounding_box_f().width(); | 227 gesture.data.longPress.width = details.bounding_box_f().width(); |
333 gesture.data.longPress.height = details.bounding_box_f().height(); | 228 gesture.data.longPress.height = details.bounding_box_f().height(); |
334 break; | 229 break; |
335 case ui::ET_GESTURE_LONG_TAP: | 230 case ET_GESTURE_LONG_TAP: |
336 gesture.type = WebInputEvent::GestureLongTap; | 231 gesture.type = WebInputEvent::GestureLongTap; |
337 gesture.data.longPress.width = details.bounding_box_f().width(); | 232 gesture.data.longPress.width = details.bounding_box_f().width(); |
338 gesture.data.longPress.height = details.bounding_box_f().height(); | 233 gesture.data.longPress.height = details.bounding_box_f().height(); |
339 break; | 234 break; |
340 case ui::ET_GESTURE_TWO_FINGER_TAP: | 235 case ET_GESTURE_TWO_FINGER_TAP: |
341 gesture.type = blink::WebInputEvent::GestureTwoFingerTap; | 236 gesture.type = blink::WebInputEvent::GestureTwoFingerTap; |
342 gesture.data.twoFingerTap.firstFingerWidth = details.first_finger_width(); | 237 gesture.data.twoFingerTap.firstFingerWidth = details.first_finger_width(); |
343 gesture.data.twoFingerTap.firstFingerHeight = | 238 gesture.data.twoFingerTap.firstFingerHeight = |
344 details.first_finger_height(); | 239 details.first_finger_height(); |
345 break; | 240 break; |
346 case ui::ET_GESTURE_SCROLL_BEGIN: | 241 case ET_GESTURE_SCROLL_BEGIN: |
347 gesture.type = WebInputEvent::GestureScrollBegin; | 242 gesture.type = WebInputEvent::GestureScrollBegin; |
348 gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint(); | 243 gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint(); |
349 gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint(); | 244 gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint(); |
350 break; | 245 break; |
351 case ui::ET_GESTURE_SCROLL_UPDATE: | 246 case ET_GESTURE_SCROLL_UPDATE: |
352 gesture.type = WebInputEvent::GestureScrollUpdate; | 247 gesture.type = WebInputEvent::GestureScrollUpdate; |
353 gesture.data.scrollUpdate.deltaX = details.scroll_x(); | 248 gesture.data.scrollUpdate.deltaX = details.scroll_x(); |
354 gesture.data.scrollUpdate.deltaY = details.scroll_y(); | 249 gesture.data.scrollUpdate.deltaY = details.scroll_y(); |
355 gesture.data.scrollUpdate.previousUpdateInSequencePrevented = | 250 gesture.data.scrollUpdate.previousUpdateInSequencePrevented = |
356 details.previous_scroll_update_in_sequence_prevented(); | 251 details.previous_scroll_update_in_sequence_prevented(); |
357 break; | 252 break; |
358 case ui::ET_GESTURE_SCROLL_END: | 253 case ET_GESTURE_SCROLL_END: |
359 gesture.type = WebInputEvent::GestureScrollEnd; | 254 gesture.type = WebInputEvent::GestureScrollEnd; |
360 break; | 255 break; |
361 case ui::ET_SCROLL_FLING_START: | 256 case ET_SCROLL_FLING_START: |
362 gesture.type = WebInputEvent::GestureFlingStart; | 257 gesture.type = WebInputEvent::GestureFlingStart; |
363 gesture.data.flingStart.velocityX = details.velocity_x(); | 258 gesture.data.flingStart.velocityX = details.velocity_x(); |
364 gesture.data.flingStart.velocityY = details.velocity_y(); | 259 gesture.data.flingStart.velocityY = details.velocity_y(); |
365 break; | 260 break; |
366 case ui::ET_SCROLL_FLING_CANCEL: | 261 case ET_SCROLL_FLING_CANCEL: |
367 gesture.type = WebInputEvent::GestureFlingCancel; | 262 gesture.type = WebInputEvent::GestureFlingCancel; |
368 break; | 263 break; |
369 case ui::ET_GESTURE_PINCH_BEGIN: | 264 case ET_GESTURE_PINCH_BEGIN: |
370 gesture.type = WebInputEvent::GesturePinchBegin; | 265 gesture.type = WebInputEvent::GesturePinchBegin; |
371 break; | 266 break; |
372 case ui::ET_GESTURE_PINCH_UPDATE: | 267 case ET_GESTURE_PINCH_UPDATE: |
373 gesture.type = WebInputEvent::GesturePinchUpdate; | 268 gesture.type = WebInputEvent::GesturePinchUpdate; |
374 gesture.data.pinchUpdate.scale = details.scale(); | 269 gesture.data.pinchUpdate.scale = details.scale(); |
375 break; | 270 break; |
376 case ui::ET_GESTURE_PINCH_END: | 271 case ET_GESTURE_PINCH_END: |
377 gesture.type = WebInputEvent::GesturePinchEnd; | 272 gesture.type = WebInputEvent::GesturePinchEnd; |
378 break; | 273 break; |
379 case ui::ET_GESTURE_TAP_CANCEL: | 274 case ET_GESTURE_TAP_CANCEL: |
380 gesture.type = WebInputEvent::GestureTapCancel; | 275 gesture.type = WebInputEvent::GestureTapCancel; |
381 break; | 276 break; |
382 case ui::ET_GESTURE_TAP_DOWN: | 277 case ET_GESTURE_TAP_DOWN: |
383 gesture.type = WebInputEvent::GestureTapDown; | 278 gesture.type = WebInputEvent::GestureTapDown; |
384 gesture.data.tapDown.width = details.bounding_box_f().width(); | 279 gesture.data.tapDown.width = details.bounding_box_f().width(); |
385 gesture.data.tapDown.height = details.bounding_box_f().height(); | 280 gesture.data.tapDown.height = details.bounding_box_f().height(); |
386 break; | 281 break; |
387 case ui::ET_GESTURE_BEGIN: | 282 case ET_GESTURE_BEGIN: |
388 case ui::ET_GESTURE_END: | 283 case ET_GESTURE_END: |
389 case ui::ET_GESTURE_SWIPE: | 284 case ET_GESTURE_SWIPE: |
390 // The caller is responsible for discarding these gestures appropriately. | 285 // The caller is responsible for discarding these gestures appropriately. |
391 gesture.type = WebInputEvent::Undefined; | 286 gesture.type = WebInputEvent::Undefined; |
392 break; | 287 break; |
393 default: | 288 default: |
394 NOTREACHED() << "ui::EventType provided wasn't a valid gesture event: " | 289 NOTREACHED() << "EventType provided wasn't a valid gesture event: " |
395 << details.type(); | 290 << details.type(); |
396 } | 291 } |
397 | 292 |
398 return gesture; | 293 return gesture; |
399 } | 294 } |
400 | 295 |
401 WebGestureEvent CreateWebGestureEventFromGestureEventData( | 296 WebGestureEvent CreateWebGestureEventFromGestureEventData( |
402 const ui::GestureEventData& data) { | 297 const GestureEventData& data) { |
403 return CreateWebGestureEvent(data.details, | 298 return CreateWebGestureEvent(data.details, data.time - base::TimeTicks(), |
404 data.time - base::TimeTicks(), | |
405 gfx::PointF(data.x, data.y), | 299 gfx::PointF(data.x, data.y), |
406 gfx::PointF(data.raw_x, data.raw_y), | 300 gfx::PointF(data.raw_x, data.raw_y), data.flags); |
407 data.flags); | |
408 } | 301 } |
409 | 302 |
410 int EventFlagsToWebEventModifiers(int flags) { | 303 } // namespace ui |
411 int modifiers = 0; | |
412 | |
413 if (flags & ui::EF_SHIFT_DOWN) | |
414 modifiers |= blink::WebInputEvent::ShiftKey; | |
415 if (flags & ui::EF_CONTROL_DOWN) | |
416 modifiers |= blink::WebInputEvent::ControlKey; | |
417 if (flags & ui::EF_ALT_DOWN) | |
418 modifiers |= blink::WebInputEvent::AltKey; | |
419 if (flags & ui::EF_COMMAND_DOWN) | |
420 modifiers |= blink::WebInputEvent::MetaKey; | |
421 | |
422 if (flags & ui::EF_LEFT_MOUSE_BUTTON) | |
423 modifiers |= blink::WebInputEvent::LeftButtonDown; | |
424 if (flags & ui::EF_MIDDLE_MOUSE_BUTTON) | |
425 modifiers |= blink::WebInputEvent::MiddleButtonDown; | |
426 if (flags & ui::EF_RIGHT_MOUSE_BUTTON) | |
427 modifiers |= blink::WebInputEvent::RightButtonDown; | |
428 if (flags & ui::EF_CAPS_LOCK_DOWN) | |
429 modifiers |= blink::WebInputEvent::CapsLockOn; | |
430 if (flags & ui::EF_IS_REPEAT) | |
431 modifiers |= blink::WebInputEvent::IsAutoRepeat; | |
432 if (flags & ui::EF_NUMPAD_KEY) | |
433 modifiers |= blink::WebInputEvent::IsKeyPad; | |
434 | |
435 return modifiers; | |
436 } | |
437 | |
438 int WebEventModifiersToEventFlags(int modifiers) { | |
439 int flags = 0; | |
440 | |
441 if (modifiers & blink::WebInputEvent::ShiftKey) | |
442 flags |= ui::EF_SHIFT_DOWN; | |
443 if (modifiers & blink::WebInputEvent::ControlKey) | |
444 flags |= ui::EF_CONTROL_DOWN; | |
445 if (modifiers & blink::WebInputEvent::AltKey) | |
446 flags |= ui::EF_ALT_DOWN; | |
447 if (modifiers & blink::WebInputEvent::MetaKey) | |
448 flags |= ui::EF_COMMAND_DOWN; | |
449 | |
450 if (modifiers & blink::WebInputEvent::LeftButtonDown) | |
451 flags |= ui::EF_LEFT_MOUSE_BUTTON; | |
452 if (modifiers & blink::WebInputEvent::MiddleButtonDown) | |
453 flags |= ui::EF_MIDDLE_MOUSE_BUTTON; | |
454 if (modifiers & blink::WebInputEvent::RightButtonDown) | |
455 flags |= ui::EF_RIGHT_MOUSE_BUTTON; | |
456 if (modifiers & blink::WebInputEvent::CapsLockOn) | |
457 flags |= ui::EF_CAPS_LOCK_DOWN; | |
458 if (modifiers & blink::WebInputEvent::IsAutoRepeat) | |
459 flags |= ui::EF_IS_REPEAT; | |
460 if (modifiers & blink::WebInputEvent::IsKeyPad) | |
461 flags |= ui::EF_NUMPAD_KEY; | |
462 | |
463 return flags; | |
464 } | |
465 | |
466 } // namespace content | |
OLD | NEW |