OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "sky/shell/ui/input_event_converter.h" | 5 #include "sky/shell/ui/input_event_converter.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
9 #include "sky/engine/public/platform/WebInputEvent.h" | 9 #include "sky/engine/public/platform/WebInputEvent.h" |
10 | 10 |
11 namespace sky { | 11 namespace sky { |
12 namespace { | 12 namespace { |
13 | 13 |
14 scoped_ptr<blink::WebInputEvent> BuildWebPointerEvent( | 14 scoped_ptr<blink::WebInputEvent> BuildWebPointerEvent( |
15 const InputEventPtr& event, float device_pixel_ratio) { | 15 const InputEventPtr& event, float device_pixel_ratio) { |
16 scoped_ptr<blink::WebPointerEvent> web_event(new blink::WebPointerEvent); | 16 scoped_ptr<blink::WebPointerEvent> web_event(new blink::WebPointerEvent); |
17 | 17 |
18 web_event->timeStampMS = | 18 web_event->timeStampMS = event->time_stamp; |
19 base::TimeDelta::FromInternalValue(event->time_stamp).InMillisecondsF(); | |
20 | 19 |
21 switch (event->type) { | 20 switch (event->type) { |
22 case EVENT_TYPE_POINTER_DOWN: | 21 case EVENT_TYPE_POINTER_DOWN: |
23 web_event->type = blink::WebInputEvent::PointerDown; | 22 web_event->type = blink::WebInputEvent::PointerDown; |
24 break; | 23 break; |
25 case EVENT_TYPE_POINTER_UP: | 24 case EVENT_TYPE_POINTER_UP: |
26 web_event->type = blink::WebInputEvent::PointerUp; | 25 web_event->type = blink::WebInputEvent::PointerUp; |
27 break; | 26 break; |
28 case EVENT_TYPE_POINTER_MOVE: | 27 case EVENT_TYPE_POINTER_MOVE: |
29 web_event->type = blink::WebInputEvent::PointerMove; | 28 web_event->type = blink::WebInputEvent::PointerMove; |
(...skipping 10 matching lines...) Expand all Loading... |
40 if (event->pointer_data->kind == POINTER_KIND_TOUCH) | 39 if (event->pointer_data->kind == POINTER_KIND_TOUCH) |
41 web_event->kind = blink::WebPointerEvent::Touch; | 40 web_event->kind = blink::WebPointerEvent::Touch; |
42 web_event->pointer = event->pointer_data->pointer; | 41 web_event->pointer = event->pointer_data->pointer; |
43 web_event->x = event->pointer_data->x / device_pixel_ratio; | 42 web_event->x = event->pointer_data->x / device_pixel_ratio; |
44 web_event->y = event->pointer_data->y / device_pixel_ratio; | 43 web_event->y = event->pointer_data->y / device_pixel_ratio; |
45 } | 44 } |
46 | 45 |
47 return web_event.Pass(); | 46 return web_event.Pass(); |
48 } | 47 } |
49 | 48 |
| 49 scoped_ptr<blink::WebInputEvent> BuildWebGestureEvent( |
| 50 const InputEventPtr& event, float device_pixel_ratio) { |
| 51 scoped_ptr<blink::WebGestureEvent> web_event(new blink::WebGestureEvent); |
| 52 |
| 53 web_event->timeStampMS = event->time_stamp; |
| 54 |
| 55 switch (event->type) { |
| 56 case EVENT_TYPE_GESTURE_SCROLL_BEGIN: |
| 57 web_event->type = blink::WebInputEvent::GestureScrollBegin; |
| 58 break; |
| 59 case EVENT_TYPE_GESTURE_SCROLL_END: |
| 60 web_event->type = blink::WebInputEvent::GestureScrollEnd; |
| 61 break; |
| 62 case EVENT_TYPE_GESTURE_SCROLL_UPDATE: |
| 63 web_event->type = blink::WebInputEvent::GestureScrollUpdate; |
| 64 web_event->data.scrollUpdate.deltaX = |
| 65 event->gesture_data->dx / device_pixel_ratio; |
| 66 web_event->data.scrollUpdate.deltaY = |
| 67 event->gesture_data->dy / device_pixel_ratio; |
| 68 break; |
| 69 case EVENT_TYPE_GESTURE_FLING_START: |
| 70 web_event->type = blink::WebInputEvent::GestureFlingStart; |
| 71 web_event->data.flingStart.velocityX = |
| 72 event->gesture_data->velocityX / device_pixel_ratio; |
| 73 web_event->data.flingStart.velocityY = |
| 74 event->gesture_data->velocityY / device_pixel_ratio; |
| 75 break; |
| 76 case EVENT_TYPE_GESTURE_FLING_CANCEL: |
| 77 web_event->type = blink::WebInputEvent::GestureFlingCancel; |
| 78 break; |
| 79 default: |
| 80 break; |
| 81 } |
| 82 |
| 83 if (event->gesture_data) { |
| 84 web_event->x = event->gesture_data->x / device_pixel_ratio; |
| 85 web_event->y = event->gesture_data->y / device_pixel_ratio; |
| 86 } |
| 87 |
| 88 return web_event.Pass(); |
| 89 } |
| 90 |
50 } // namespace | 91 } // namespace |
51 | 92 |
52 scoped_ptr<blink::WebInputEvent> ConvertEvent(const InputEventPtr& event, | 93 scoped_ptr<blink::WebInputEvent> ConvertEvent(const InputEventPtr& event, |
53 float device_pixel_ratio) { | 94 float device_pixel_ratio) { |
54 if (event->type == EVENT_TYPE_POINTER_DOWN || | 95 switch (event->type) { |
55 event->type == EVENT_TYPE_POINTER_UP || | 96 case EVENT_TYPE_POINTER_DOWN: |
56 event->type == EVENT_TYPE_POINTER_MOVE || | 97 case EVENT_TYPE_POINTER_UP: |
57 event->type == EVENT_TYPE_POINTER_CANCEL) { | 98 case EVENT_TYPE_POINTER_MOVE: |
58 return BuildWebPointerEvent(event, device_pixel_ratio); | 99 case EVENT_TYPE_POINTER_CANCEL: |
| 100 return BuildWebPointerEvent(event, device_pixel_ratio); |
| 101 case EVENT_TYPE_GESTURE_SCROLL_BEGIN: |
| 102 case EVENT_TYPE_GESTURE_SCROLL_UPDATE: |
| 103 case EVENT_TYPE_GESTURE_SCROLL_END: |
| 104 case EVENT_TYPE_GESTURE_FLING_START: |
| 105 case EVENT_TYPE_GESTURE_FLING_CANCEL: |
| 106 return BuildWebGestureEvent(event, device_pixel_ratio); |
| 107 case EVENT_TYPE_UNKNOWN: |
| 108 NOTIMPLEMENTED() << "ConvertEvent received unexpected EVENT_TYPE_UNKNOWN"; |
59 } | 109 } |
60 | 110 |
61 return scoped_ptr<blink::WebInputEvent>(); | 111 return scoped_ptr<blink::WebInputEvent>(); |
62 } | 112 } |
63 | 113 |
64 } // namespace mojo | 114 } // namespace mojo |
OLD | NEW |