diff options
12 files changed, 22 insertions, 29 deletions
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc index 9470f40..be5f845 100644 --- a/content/browser/android/content_view_core_impl.cc +++ b/content/browser/android/content_view_core_impl.cc @@ -379,12 +379,12 @@ void ContentViewCoreImpl::ConfirmTouchEvent(bool handled) { Java_ContentViewCore_confirmTouchEvent(env, j_obj.obj(), handled); } -void ContentViewCoreImpl::DidSetNeedTouchEvents(bool need_touch_events) { +void ContentViewCoreImpl::HasTouchEventHandlers(bool need_touch_events) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); if (j_obj.is_null()) return; - Java_ContentViewCore_didSetNeedTouchEvents(env, + Java_ContentViewCore_hasTouchEventHandlers(env, j_obj.obj(), need_touch_events); } diff --git a/content/browser/android/content_view_core_impl.h b/content/browser/android/content_view_core_impl.h index ba5aa7c..23cdc66 100644 --- a/content/browser/android/content_view_core_impl.h +++ b/content/browser/android/content_view_core_impl.h @@ -199,7 +199,7 @@ class ContentViewCoreImpl : public ContentViewCore, bool HasFocus(); void ConfirmTouchEvent(bool handled); - void DidSetNeedTouchEvents(bool need_touch_events); + void HasTouchEventHandlers(bool need_touch_events); void OnSelectionChanged(const std::string& text); void OnSelectionBoundsChanged( const gfx::Rect& start_rect, base::i18n::TextDirection start_dir, diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index 2f03115..1b2a20c 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc @@ -1767,6 +1767,10 @@ void RenderWidgetHostImpl::OnMsgHasTouchEventHandlers(bool has_handlers) { has_touch_handler_ = has_handlers; if (!has_touch_handler_) touch_event_queue_->FlushQueue(); +#if defined(OS_ANDROID) + if (view_) + view_->HasTouchEventHandlers(has_touch_handler_); +#endif } void RenderWidgetHostImpl::OnMsgSetCursor(const WebCursor& cursor) { diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index caea0cf..2deba2c 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc @@ -383,7 +383,8 @@ void RenderWidgetHostViewAndroid::UnhandledWheelEvent( void RenderWidgetHostViewAndroid::ProcessAckedTouchEvent( const WebKit::WebTouchEvent& touch_event, bool processed) { - // intentionally empty, like RenderWidgetHostViewViews + if (content_view_core_) + content_view_core_->ConfirmTouchEvent(processed); } void RenderWidgetHostViewAndroid::SetHasHorizontalScrollbar( @@ -483,10 +484,10 @@ void RenderWidgetHostViewAndroid::SetContentViewCore( } } -void RenderWidgetHostViewAndroid::DidSetNeedTouchEvents( +void RenderWidgetHostViewAndroid::HasTouchEventHandlers( bool need_touch_events) { if (content_view_core_) - content_view_core_->DidSetNeedTouchEvents(need_touch_events); + content_view_core_->HasTouchEventHandlers(need_touch_events); } // static diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h index a88ea65..81f0036 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.h +++ b/content/browser/renderer_host/render_widget_host_view_android.h @@ -115,7 +115,7 @@ class RenderWidgetHostViewAndroid : public RenderWidgetHostViewBase { virtual bool LockMouse() OVERRIDE; virtual void UnlockMouse() OVERRIDE; virtual void StartContentIntent(const GURL& content_url) OVERRIDE; - virtual void DidSetNeedTouchEvents(bool need_touch_events) OVERRIDE; + virtual void HasTouchEventHandlers(bool need_touch_events) OVERRIDE; virtual void SetCachedBackgroundColor(SkColor color) OVERRIDE; virtual void SetCachedPageScaleFactorLimits(float minimum_scale, float maximum_scale) OVERRIDE; diff --git a/content/browser/renderer_host/test_render_view_host.h b/content/browser/renderer_host/test_render_view_host.h index 78d9cb5..9d87ad2 100644 --- a/content/browser/renderer_host/test_render_view_host.h +++ b/content/browser/renderer_host/test_render_view_host.h @@ -148,7 +148,7 @@ class TestRenderWidgetHostView : public RenderWidgetHostViewBase { virtual void UpdateFrameInfo(const gfx::Point& scroll_offset, float page_scale_factor, const gfx::Size& content_size) OVERRIDE {} - virtual void DidSetNeedTouchEvents(bool need_touch_events) OVERRIDE {} + virtual void HasTouchEventHandlers(bool need_touch_events) OVERRIDE {} #elif defined(OS_WIN) && !defined(USE_AURA) virtual void WillWmDestroy() OVERRIDE; #endif diff --git a/content/browser/web_contents/web_contents_view_android.cc b/content/browser/web_contents/web_contents_view_android.cc index d864542..2e74b1f 100644 --- a/content/browser/web_contents/web_contents_view_android.cc +++ b/content/browser/web_contents/web_contents_view_android.cc @@ -152,11 +152,6 @@ gfx::Rect WebContentsViewAndroid::GetViewBounds() const { return gfx::Rect(); } -void WebContentsViewAndroid::ConfirmTouchEvent(bool handled) { - if (content_view_core_) - content_view_core_->ConfirmTouchEvent(handled); -} - void WebContentsViewAndroid::ShowContextMenu( const ContextMenuParams& params, content::ContextMenuSourceType type) { diff --git a/content/browser/web_contents/web_contents_view_android.h b/content/browser/web_contents/web_contents_view_android.h index 02c6152..eef26f9 100644 --- a/content/browser/web_contents/web_contents_view_android.h +++ b/content/browser/web_contents/web_contents_view_android.h @@ -50,7 +50,6 @@ class WebContentsViewAndroid : public WebContentsView, virtual bool IsEventTracking() const OVERRIDE; virtual void CloseTabAfterEventTracking() OVERRIDE; virtual gfx::Rect GetViewBounds() const OVERRIDE; - virtual void ConfirmTouchEvent(bool handled) OVERRIDE; // Backend implementation of RenderViewHostDelegateView. virtual void ShowContextMenu( diff --git a/content/port/browser/render_view_host_delegate_view.h b/content/port/browser/render_view_host_delegate_view.h index f2b02ff5..b59d6e0 100644 --- a/content/port/browser/render_view_host_delegate_view.h +++ b/content/port/browser/render_view_host_delegate_view.h @@ -67,12 +67,6 @@ class CONTENT_EXPORT RenderViewHostDelegateView { // retrieved by doing a Shift-Tab. virtual void TakeFocus(bool reverse) {} -#if defined(OS_ANDROID) - // Called when an unhandled touch event is sent back from the renderer. - // TODO(joth): This should be pure virtual. - virtual void ConfirmTouchEvent(bool handled) {} -#endif - protected: virtual ~RenderViewHostDelegateView() {} }; diff --git a/content/port/browser/render_widget_host_view_port.h b/content/port/browser/render_widget_host_view_port.h index 45c0a5d..7667066 100644 --- a/content/port/browser/render_widget_host_view_port.h +++ b/content/port/browser/render_widget_host_view_port.h @@ -232,7 +232,7 @@ class CONTENT_EXPORT RenderWidgetHostViewPort : public RenderWidgetHostView { virtual void UpdateFrameInfo(const gfx::Point& scroll_offset, float page_scale_factor, const gfx::Size& content_size) = 0; - virtual void DidSetNeedTouchEvents(bool need_touch_events) = 0; + virtual void HasTouchEventHandlers(bool need_touch_events) = 0; #endif virtual void AcceleratedSurfaceNew( diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java index 62a7c42..040baab 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java @@ -832,8 +832,8 @@ public class ContentViewCore implements MotionEventDelegate { @SuppressWarnings("unused") @CalledByNative - private void didSetNeedTouchEvents(boolean needTouchEvents) { - mContentViewGestureHandler.didSetNeedTouchEvents(needTouchEvents); + private void hasTouchEventHandlers(boolean hasTouchHandlers) { + mContentViewGestureHandler.hasTouchEventHandlers(hasTouchHandlers); } @SuppressWarnings("unused") diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java index 243c5e0..6bba091 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java @@ -67,7 +67,7 @@ class ContentViewGestureHandler implements LongPressDelegate { new ArrayDeque<Pair<MotionEvent, Boolean>>(); // Has WebKit told us the current page requires touch events. - private boolean mNeedTouchEvents = false; + private boolean mHasTouchHandlers = false; // Remember whether onShowPress() is called. If it is not, in onSingleTapConfirmed() // we will first show the press state, then trigger the click. @@ -606,19 +606,19 @@ class ContentViewGestureHandler implements LongPressDelegate { /** * Sets the flag indicating that the content has registered listeners for touch events. */ - void didSetNeedTouchEvents(boolean needTouchEvents) { - mNeedTouchEvents = needTouchEvents; + void hasTouchEventHandlers(boolean hasTouchHandlers) { + mHasTouchHandlers = hasTouchHandlers; // When mainframe is loading, FrameLoader::transitionToCommitted will - // call this method to set mNeedTouchEvents to false. We use this as + // call this method to set mHasTouchHandlers to false. We use this as // an indicator to clear the pending motion events so that events from // the previous page will not be carried over to the new page. - if (!mNeedTouchEvents) mPendingMotionEvents.clear(); + if (!mHasTouchHandlers) mPendingMotionEvents.clear(); } private boolean offerTouchEventToJavaScript(MotionEvent event) { mLongPressDetector.onOfferTouchEventToJavaScript(event); - if (!mNeedTouchEvents) return false; + if (!mHasTouchHandlers) return false; if (event.getActionMasked() == MotionEvent.ACTION_MOVE) { // Only send move events if the move has exceeded the slop threshold. |