diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-20 02:47:24 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-20 02:47:24 +0000 |
commit | 91e20036b8f64ca6fdf5f5c039f7e44f5aa39cbf (patch) | |
tree | 4d9be997f9719c3175cb0fd1a633238b8794723d /content | |
parent | a3b9f461cc5696349276e09c4c396a030ecab1e0 (diff) | |
download | chromium_src-91e20036b8f64ca6fdf5f5c039f7e44f5aa39cbf.zip chromium_src-91e20036b8f64ca6fdf5f5c039f7e44f5aa39cbf.tar.gz chromium_src-91e20036b8f64ca6fdf5f5c039f7e44f5aa39cbf.tar.bz2 |
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
Diffstat (limited to 'content')
4 files changed, 54 insertions, 2 deletions
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<aura::ScrollEvent*>(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<aura::ScrollEvent*>(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(); |