Index: sky/shell/ui/input_event_converter.cc |
diff --git a/sky/shell/ui/input_event_converter.cc b/sky/shell/ui/input_event_converter.cc |
index 9fcf49c3d23dfcec6b3ee8cebb75321924ad23dd..baa0ee5acb8ee5966d854b21403a5fce2dd1db88 100644 |
--- a/sky/shell/ui/input_event_converter.cc |
+++ b/sky/shell/ui/input_event_converter.cc |
@@ -15,8 +15,7 @@ scoped_ptr<blink::WebInputEvent> BuildWebPointerEvent( |
const InputEventPtr& event, float device_pixel_ratio) { |
scoped_ptr<blink::WebPointerEvent> web_event(new blink::WebPointerEvent); |
- web_event->timeStampMS = |
- base::TimeDelta::FromInternalValue(event->time_stamp).InMillisecondsF(); |
+ web_event->timeStampMS = event->time_stamp; |
switch (event->type) { |
case EVENT_TYPE_POINTER_DOWN: |
@@ -47,15 +46,66 @@ scoped_ptr<blink::WebInputEvent> BuildWebPointerEvent( |
return web_event.Pass(); |
} |
+scoped_ptr<blink::WebInputEvent> BuildWebGestureEvent( |
+ const InputEventPtr& event, float device_pixel_ratio) { |
+ scoped_ptr<blink::WebGestureEvent> web_event(new blink::WebGestureEvent); |
+ |
+ web_event->timeStampMS = event->time_stamp; |
+ |
+ switch (event->type) { |
+ case EVENT_TYPE_GESTURE_SCROLL_BEGIN: |
+ web_event->type = blink::WebInputEvent::GestureScrollBegin; |
+ break; |
+ case EVENT_TYPE_GESTURE_SCROLL_END: |
+ web_event->type = blink::WebInputEvent::GestureScrollEnd; |
+ break; |
+ case EVENT_TYPE_GESTURE_SCROLL_UPDATE: |
+ web_event->type = blink::WebInputEvent::GestureScrollUpdate; |
+ web_event->data.scrollUpdate.deltaX = |
+ event->gesture_data->dx / device_pixel_ratio; |
+ web_event->data.scrollUpdate.deltaY = |
+ event->gesture_data->dy / device_pixel_ratio; |
+ break; |
+ case EVENT_TYPE_GESTURE_FLING_START: |
+ web_event->type = blink::WebInputEvent::GestureFlingStart; |
+ web_event->data.flingStart.velocityX = |
+ event->gesture_data->velocityX / device_pixel_ratio; |
+ web_event->data.flingStart.velocityY = |
+ event->gesture_data->velocityY / device_pixel_ratio; |
+ break; |
+ case EVENT_TYPE_GESTURE_FLING_CANCEL: |
+ web_event->type = blink::WebInputEvent::GestureFlingCancel; |
+ break; |
+ default: |
+ break; |
+ } |
+ |
+ if (event->gesture_data) { |
+ web_event->x = event->gesture_data->x / device_pixel_ratio; |
+ web_event->y = event->gesture_data->y / device_pixel_ratio; |
+ } |
+ |
+ return web_event.Pass(); |
+} |
+ |
} // namespace |
scoped_ptr<blink::WebInputEvent> ConvertEvent(const InputEventPtr& event, |
float device_pixel_ratio) { |
- if (event->type == EVENT_TYPE_POINTER_DOWN || |
- event->type == EVENT_TYPE_POINTER_UP || |
- event->type == EVENT_TYPE_POINTER_MOVE || |
- event->type == EVENT_TYPE_POINTER_CANCEL) { |
- return BuildWebPointerEvent(event, device_pixel_ratio); |
+ switch (event->type) { |
+ case EVENT_TYPE_POINTER_DOWN: |
+ case EVENT_TYPE_POINTER_UP: |
+ case EVENT_TYPE_POINTER_MOVE: |
+ case EVENT_TYPE_POINTER_CANCEL: |
+ return BuildWebPointerEvent(event, device_pixel_ratio); |
+ case EVENT_TYPE_GESTURE_SCROLL_BEGIN: |
+ case EVENT_TYPE_GESTURE_SCROLL_UPDATE: |
+ case EVENT_TYPE_GESTURE_SCROLL_END: |
+ case EVENT_TYPE_GESTURE_FLING_START: |
+ case EVENT_TYPE_GESTURE_FLING_CANCEL: |
+ return BuildWebGestureEvent(event, device_pixel_ratio); |
+ case EVENT_TYPE_UNKNOWN: |
+ NOTIMPLEMENTED() << "ConvertEvent received unexpected EVENT_TYPE_UNKNOWN"; |
} |
return scoped_ptr<blink::WebInputEvent>(); |