Index: content/browser/android/content_view_core_impl.cc |
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc |
index 00b3442010290dafd518dcdc525b0d1ad4100529..c1390c596010df7028dbd602a3d2b3876b78dbee 100644 |
--- a/content/browser/android/content_view_core_impl.cc |
+++ b/content/browser/android/content_view_core_impl.cc |
@@ -196,6 +196,8 @@ ContentViewCoreImpl::ContentViewCoreImpl(JNIEnv* env, jobject obj, |
webkit_glue::BuildUserAgentFromOSAndProduct(kLinuxInfoStr, product); |
web_contents->SetUserAgentOverride(spoofed_ua); |
+ touch_to_gesture_queue_.reset(new TouchToGestureQueue(this)); |
+ |
InitWebContents(); |
} |
@@ -304,6 +306,32 @@ void ContentViewCoreImpl::RenderViewReady() { |
SendOrientationChangeEventInternal(); |
} |
+void ContentViewCoreImpl::ForwardTouchEvent( |
+ const blink::WebTouchEvent& event) { |
+ RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); |
+ if (!rwhv) |
+ return; |
+ rwhv->SendTouchEvent(event); |
+} |
+ |
+void ContentViewCoreImpl::ForwardGestureEvent( |
+ const blink::WebGestureEvent& event) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); |
+ if (j_obj.is_null()) |
+ return; |
+ |
+ if (Java_ContentViewCore_filterGesture( |
+ env, j_obj.obj(), event.type, event.x, event.y)) |
+ return; |
+ |
+ RenderWidgetHostViewAndroid* rwhva = GetRenderWidgetHostViewAndroid(); |
+ if (!rwhva) |
+ return; |
+ |
+ rwhva->SendGestureEvent(event); |
+} |
+ |
RenderWidgetHostViewAndroid* |
ContentViewCoreImpl::GetRenderWidgetHostViewAndroid() { |
RenderWidgetHostView* rwhv = NULL; |
@@ -497,20 +525,15 @@ void ContentViewCoreImpl::ShowSelectPopupMenu( |
} |
void ContentViewCoreImpl::ConfirmTouchEvent(InputEventAckState ack_result) { |
- JNIEnv* env = AttachCurrentThread(); |
- ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); |
- if (j_obj.is_null()) |
- return; |
- Java_ContentViewCore_confirmTouchEvent(env, j_obj.obj(), |
- static_cast<jint>(ack_result)); |
+ touch_to_gesture_queue_->OnTouchEventAck(ack_result); |
} |
-void ContentViewCoreImpl::UnhandledFlingStartEvent() { |
+void ContentViewCoreImpl::UnhandledFlingStartEvent(float vx, float vy) { |
JNIEnv* env = AttachCurrentThread(); |
ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); |
if (j_obj.is_null()) |
return; |
- Java_ContentViewCore_unhandledFlingStartEvent(env, j_obj.obj()); |
+ Java_ContentViewCore_unhandledFlingStartEvent(env, j_obj.obj(), vx, vy); |
} |
void ContentViewCoreImpl::OnScrollUpdateGestureConsumed() { |
@@ -521,16 +544,6 @@ void ContentViewCoreImpl::OnScrollUpdateGestureConsumed() { |
Java_ContentViewCore_onScrollUpdateGestureConsumed(env, j_obj.obj()); |
} |
-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_hasTouchEventHandlers(env, |
- j_obj.obj(), |
- need_touch_events); |
-} |
- |
bool ContentViewCoreImpl::HasFocus() { |
JNIEnv* env = AttachCurrentThread(); |
ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
@@ -896,21 +909,18 @@ void ContentViewCoreImpl::SendOrientationChangeEvent(JNIEnv* env, |
} |
} |
-jboolean ContentViewCoreImpl::SendTouchEvent(JNIEnv* env, |
- jobject obj, |
- jlong time_ms, |
- jint type, |
- jobjectArray pts) { |
- RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); |
- if (rwhv) { |
- using blink::WebTouchEvent; |
- blink::WebTouchEvent event; |
- TouchPoint::BuildWebTouchEvent(env, type, time_ms, GetDpiScale(), pts, |
- event); |
- rwhv->SendTouchEvent(event); |
- return true; |
- } |
- return false; |
+void ContentViewCoreImpl::OnTouchEventHandlingBegin(JNIEnv* env, |
+ jobject obj, |
+ jlong time_ms, |
+ jint type, |
+ jobjectArray pts) { |
+ blink::WebTouchEvent event; |
+ TouchPoint::BuildWebTouchEvent(env, type, time_ms, GetDpiScale(), pts, event); |
+ touch_to_gesture_queue_->OnTouchEventHandlingBegin(event); |
+} |
+ |
+void ContentViewCoreImpl::OnTouchEventHandlingEnd(JNIEnv* env, jobject obj) { |
+ touch_to_gesture_queue_->OnTouchEventHandlingEnd(); |
} |
float ContentViewCoreImpl::GetTouchPaddingDip() { |
@@ -980,9 +990,7 @@ WebGestureEvent ContentViewCoreImpl::MakeGestureEvent( |
void ContentViewCoreImpl::SendGestureEvent( |
const blink::WebGestureEvent& event) { |
- RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); |
- if (rwhv) |
- rwhv->SendGestureEvent(event); |
+ touch_to_gesture_queue_->OnGestureEvent(event); |
} |
void ContentViewCoreImpl::ScrollBegin(JNIEnv* env, |