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

Unified Diff: content/browser/android/content_view_core_impl.cc

Issue 120513005: [Android] Perform eager gesture recognition on MotionEvents (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove LongPressDetector entirely (happiness) Created 6 years, 11 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
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,

Powered by Google App Engine
This is Rietveld 408576698