From 91e20036b8f64ca6fdf5f5c039f7e44f5aa39cbf Mon Sep 17 00:00:00 2001 From: "davemoore@chromium.org" Date: Tue, 20 Mar 2012 02:47:24 +0000 Subject: Send GestureFlingStart and GestureFlingCancel when cmt sends them BUG=114818 TEST=None Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=127606 Review URL: https://chromiumcodereview.appspot.com/9601022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127629 0039d316-1c4b-4281-b951-d872f2087c98 --- .../renderer_host/render_widget_host_view_aura.cc | 8 +++++-- .../browser/renderer_host/web_input_event_aura.cc | 21 +++++++++++++++++ .../browser/renderer_host/web_input_event_aura.h | 1 + .../renderer_host/web_input_event_aurax11.cc | 26 ++++++++++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) (limited to 'content') diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index cf9f28b..7f462cf 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -925,8 +925,12 @@ bool RenderWidgetHostViewAura::OnMouseEvent(aura::MouseEvent* event) { } else if (event->type() == ui::ET_SCROLL) { WebKit::WebMouseWheelEvent mouse_wheel_event = content::MakeWebMouseWheelEvent(static_cast(event)); - if (mouse_wheel_event.deltaX != 0 || mouse_wheel_event.deltaY != 0) - host_->ForwardWheelEvent(mouse_wheel_event); + host_->ForwardWheelEvent(mouse_wheel_event); + } else if (event->type() == ui::ET_SCROLL_FLING_START || + event->type() == ui::ET_SCROLL_FLING_CANCEL) { + WebKit::WebGestureEvent gesture_event = + content::MakeWebGestureEvent(static_cast(event)); + host_->ForwardGestureEvent(gesture_event); } else if (CanRendererHandleEvent(event)) { WebKit::WebMouseEvent mouse_event = content::MakeWebMouseEvent(event); ModifyEventMovementAndCoords(&mouse_event); diff --git a/content/browser/renderer_host/web_input_event_aura.cc b/content/browser/renderer_host/web_input_event_aura.cc index a395fed..f9bd2ba 100644 --- a/content/browser/renderer_host/web_input_event_aura.cc +++ b/content/browser/renderer_host/web_input_event_aura.cc @@ -30,6 +30,8 @@ WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( aura::KeyEvent* event); WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( aura::GestureEvent* event); +WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( + aura::ScrollEvent* event); WebKit::WebTouchPoint* UpdateWebTouchEventFromAuraEvent( aura::TouchEvent* event, WebKit::WebTouchEvent* web_event); #endif @@ -155,6 +157,25 @@ WebKit::WebGestureEvent MakeWebGestureEvent(aura::GestureEvent* event) { return gesture_event; } +WebKit::WebGestureEvent MakeWebGestureEvent(aura::ScrollEvent* event) { + WebKit::WebGestureEvent gesture_event; + +#if defined(OS_WIN) + gesture_event = MakeWebGestureEventFromNativeEvent(event->native_event()); +#else + gesture_event = MakeWebGestureEventFromAuraEvent(event); +#endif + + gesture_event.x = event->x(); + gesture_event.y = event->y(); + + const gfx::Point root_point = event->root_location(); + gesture_event.globalX = root_point.x(); + gesture_event.globalY = root_point.y(); + + return gesture_event; +} + WebKit::WebTouchPoint* UpdateWebTouchEvent(aura::TouchEvent* event, WebKit::WebTouchEvent* web_event) { #if defined(OS_WIN) diff --git a/content/browser/renderer_host/web_input_event_aura.h b/content/browser/renderer_host/web_input_event_aura.h index 40599ea..839c51d 100644 --- a/content/browser/renderer_host/web_input_event_aura.h +++ b/content/browser/renderer_host/web_input_event_aura.h @@ -23,6 +23,7 @@ WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(aura::MouseEvent* event); WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(aura::ScrollEvent* event); WebKit::WebKeyboardEvent MakeWebKeyboardEvent(aura::KeyEvent* event); WebKit::WebGestureEvent MakeWebGestureEvent(aura::GestureEvent* event); +WebKit::WebGestureEvent MakeWebGestureEvent(aura::ScrollEvent* event); // Updates the WebTouchEvent based on the TouchEvent. It returns the updated // WebTouchPoint contained in the WebTouchEvent, or NULL if no point was diff --git a/content/browser/renderer_host/web_input_event_aurax11.cc b/content/browser/renderer_host/web_input_event_aurax11.cc index 0729c28..63af7c8 100644 --- a/content/browser/renderer_host/web_input_event_aurax11.cc +++ b/content/browser/renderer_host/web_input_event_aurax11.cc @@ -250,6 +250,32 @@ WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( return webkit_event; } +WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( + aura::ScrollEvent* event) { + WebKit::WebGestureEvent webkit_event; + + switch (event->type()) { + case ui::ET_SCROLL: + webkit_event.type = WebKit::WebInputEvent::GestureScrollUpdate; + break; + case ui::ET_SCROLL_FLING_START: + webkit_event.type = WebKit::WebInputEvent::GestureFlingStart; + break; + case ui::ET_SCROLL_FLING_CANCEL: + webkit_event.type = WebKit::WebInputEvent::GestureFlingCancel; + break; + default: + NOTREACHED() << "Unknown gesture type: " << event->type(); + } + + webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); + webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); + webkit_event.deltaX = event->x_offset(); + webkit_event.deltaY = event->y_offset(); + + return webkit_event; +} + WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( aura::KeyEvent* event) { base::NativeEvent native_event = event->native_event(); -- cgit v1.1