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

Unified Diff: sky/shell/ui/input_event_converter.cc

Issue 969493002: Add support for scroll and fling gestures to SkyShell. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: updated Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/shell/org/domokit/sky/shell/PlatformView.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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>();
« no previous file with comments | « sky/shell/org/domokit/sky/shell/PlatformView.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698