OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 "content/browser/renderer_host/input/web_input_event_util.h" |
9 | 9 |
10 #include <cmath> | 10 #include <cmath> |
11 | 11 |
12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
13 #include "content/common/input/web_touch_event_traits.h" | 13 #include "content/common/input/web_touch_event_traits.h" |
| 14 #include "ui/events/event_constants.h" |
14 #include "ui/events/gesture_detection/gesture_event_data.h" | 15 #include "ui/events/gesture_detection/gesture_event_data.h" |
15 #include "ui/events/gesture_detection/motion_event.h" | 16 #include "ui/events/gesture_detection/motion_event.h" |
16 | 17 |
17 using blink::WebGestureEvent; | 18 using blink::WebGestureEvent; |
18 using blink::WebInputEvent; | 19 using blink::WebInputEvent; |
19 using blink::WebTouchEvent; | 20 using blink::WebTouchEvent; |
20 using blink::WebTouchPoint; | 21 using blink::WebTouchPoint; |
21 using ui::MotionEvent; | 22 using ui::MotionEvent; |
22 | 23 |
23 namespace { | 24 namespace { |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 static_cast<int>(blink::WebTouchEvent::touchesLengthCap), | 259 static_cast<int>(blink::WebTouchEvent::touchesLengthCap), |
259 inconsistent_maximum_number_of_active_touch_points); | 260 inconsistent_maximum_number_of_active_touch_points); |
260 | 261 |
261 blink::WebTouchEvent result; | 262 blink::WebTouchEvent result; |
262 | 263 |
263 WebTouchEventTraits::ResetType( | 264 WebTouchEventTraits::ResetType( |
264 ToWebInputEventType(event.GetAction()), | 265 ToWebInputEventType(event.GetAction()), |
265 (event.GetEventTime() - base::TimeTicks()).InSecondsF(), | 266 (event.GetEventTime() - base::TimeTicks()).InSecondsF(), |
266 &result); | 267 &result); |
267 | 268 |
| 269 result.modifiers = EventFlagsToWebEventModifiers(event.GetFlags()); |
268 result.touchesLength = | 270 result.touchesLength = |
269 std::min(event.GetPointerCount(), | 271 std::min(event.GetPointerCount(), |
270 static_cast<size_t>(WebTouchEvent::touchesLengthCap)); | 272 static_cast<size_t>(WebTouchEvent::touchesLengthCap)); |
271 DCHECK_GT(result.touchesLength, 0U); | 273 DCHECK_GT(result.touchesLength, 0U); |
272 | 274 |
273 for (size_t i = 0; i < result.touchesLength; ++i) | 275 for (size_t i = 0; i < result.touchesLength; ++i) |
274 result.touches[i] = CreateWebTouchPoint(event, i); | 276 result.touches[i] = CreateWebTouchPoint(event, i); |
275 | 277 |
276 return result; | 278 return result; |
277 } | 279 } |
278 | 280 |
279 WebGestureEvent CreateWebGestureEventFromGestureEventData( | 281 WebGestureEvent CreateWebGestureEventFromGestureEventData( |
280 const ui::GestureEventData& data) { | 282 const ui::GestureEventData& data) { |
281 WebGestureEvent gesture; | 283 WebGestureEvent gesture; |
| 284 gesture.modifiers = EventFlagsToWebEventModifiers(data.flags); |
282 gesture.x = data.x; | 285 gesture.x = data.x; |
283 gesture.y = data.y; | 286 gesture.y = data.y; |
284 gesture.globalX = data.raw_x; | 287 gesture.globalX = data.raw_x; |
285 gesture.globalY = data.raw_y; | 288 gesture.globalY = data.raw_y; |
286 gesture.timeStampSeconds = (data.time - base::TimeTicks()).InSecondsF(); | 289 gesture.timeStampSeconds = (data.time - base::TimeTicks()).InSecondsF(); |
287 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen; | 290 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen; |
288 | 291 |
289 switch (data.type()) { | 292 switch (data.type()) { |
290 case ui::ET_GESTURE_SHOW_PRESS: | 293 case ui::ET_GESTURE_SHOW_PRESS: |
291 gesture.type = WebInputEvent::GestureShowPress; | 294 gesture.type = WebInputEvent::GestureShowPress; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 << "in Aura, and should never end up here."; | 371 << "in Aura, and should never end up here."; |
369 break; | 372 break; |
370 default: | 373 default: |
371 NOTREACHED() << "ui::EventType provided wasn't a valid gesture event."; | 374 NOTREACHED() << "ui::EventType provided wasn't a valid gesture event."; |
372 break; | 375 break; |
373 } | 376 } |
374 | 377 |
375 return gesture; | 378 return gesture; |
376 } | 379 } |
377 | 380 |
| 381 int EventFlagsToWebEventModifiers(int flags) { |
| 382 int modifiers = 0; |
| 383 |
| 384 if (flags & ui::EF_SHIFT_DOWN) |
| 385 modifiers |= blink::WebInputEvent::ShiftKey; |
| 386 if (flags & ui::EF_CONTROL_DOWN) |
| 387 modifiers |= blink::WebInputEvent::ControlKey; |
| 388 if (flags & ui::EF_ALT_DOWN) |
| 389 modifiers |= blink::WebInputEvent::AltKey; |
| 390 if (flags & ui::EF_COMMAND_DOWN) |
| 391 modifiers |= blink::WebInputEvent::MetaKey; |
| 392 |
| 393 if (flags & ui::EF_LEFT_MOUSE_BUTTON) |
| 394 modifiers |= blink::WebInputEvent::LeftButtonDown; |
| 395 if (flags & ui::EF_MIDDLE_MOUSE_BUTTON) |
| 396 modifiers |= blink::WebInputEvent::MiddleButtonDown; |
| 397 if (flags & ui::EF_RIGHT_MOUSE_BUTTON) |
| 398 modifiers |= blink::WebInputEvent::RightButtonDown; |
| 399 if (flags & ui::EF_CAPS_LOCK_DOWN) |
| 400 modifiers |= blink::WebInputEvent::CapsLockOn; |
| 401 if (flags & ui::EF_IS_REPEAT) |
| 402 modifiers |= blink::WebInputEvent::IsAutoRepeat; |
| 403 |
| 404 return modifiers; |
| 405 } |
| 406 |
| 407 int WebEventModifiersToEventFlags(int modifiers) { |
| 408 int flags = 0; |
| 409 |
| 410 if (modifiers & blink::WebInputEvent::ShiftKey) |
| 411 flags |= ui::EF_SHIFT_DOWN; |
| 412 if (modifiers & blink::WebInputEvent::ControlKey) |
| 413 flags |= ui::EF_CONTROL_DOWN; |
| 414 if (modifiers & blink::WebInputEvent::AltKey) |
| 415 flags |= ui::EF_ALT_DOWN; |
| 416 if (modifiers & blink::WebInputEvent::MetaKey) |
| 417 flags |= ui::EF_COMMAND_DOWN; |
| 418 |
| 419 if (modifiers & blink::WebInputEvent::LeftButtonDown) |
| 420 flags |= ui::EF_LEFT_MOUSE_BUTTON; |
| 421 if (modifiers & blink::WebInputEvent::MiddleButtonDown) |
| 422 flags |= ui::EF_MIDDLE_MOUSE_BUTTON; |
| 423 if (modifiers & blink::WebInputEvent::RightButtonDown) |
| 424 flags |= ui::EF_RIGHT_MOUSE_BUTTON; |
| 425 if (modifiers & blink::WebInputEvent::CapsLockOn) |
| 426 flags |= ui::EF_CAPS_LOCK_DOWN; |
| 427 if (modifiers & blink::WebInputEvent::IsAutoRepeat) |
| 428 flags |= ui::EF_IS_REPEAT; |
| 429 |
| 430 return flags; |
| 431 } |
| 432 |
378 } // namespace content | 433 } // namespace content |
OLD | NEW |