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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java

Issue 2054193002: Android mouse events shouldn't appear as TouchEvents (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added meta_state plumbing. Created 4 years, 3 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/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
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 982cd1bc3a1148c0a6304c88442b3e26b99a9d53..3c04ecb558bdfcc0bf597aea06203e0b4f8db103 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
@@ -999,8 +999,33 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
* @see View#onTouchEvent(MotionEvent)
*/
public boolean onTouchEvent(MotionEvent event) {
+ // TODO(mustaq): Should we include MotionEvent.TOOL_TYPE_STYLUS here?
+ // crbug.com/592082
+ if (event.getToolType(0) == MotionEvent.TOOL_TYPE_MOUSE) {
+ return sendMouseEvent(event);
+ }
final boolean isTouchHandleEvent = false;
- return onTouchEventImpl(event, isTouchHandleEvent);
+ return sendTouchEvent(event, isTouchHandleEvent);
+ }
+
+ private boolean sendMouseEvent(MotionEvent event) {
+ TraceEvent.begin("sendMouseEvent");
+
+ MotionEvent offsetEvent = createOffsetMotionEvent(event);
+ try {
+ mContainerView.removeCallbacks(mFakeMouseMoveRunnable);
+ if (mNativeContentViewCore != 0) {
+ nativeSendMouseEvent(mNativeContentViewCore, offsetEvent.getEventTime(),
+ offsetEvent.getActionMasked(), offsetEvent.getX(), offsetEvent.getY(),
+ event.getPointerId(0), event.getPressure(0), event.getOrientation(0),
+ event.getAxisValue(MotionEvent.AXIS_TILT, 0), event.getButtonState(),
+ event.getMetaState(), event.getToolType(0));
+ }
+ return true;
+ } finally {
+ offsetEvent.recycle();
+ TraceEvent.end("sendMouseEvent");
+ }
}
/**
@@ -1009,11 +1034,11 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
*/
public boolean onTouchHandleEvent(MotionEvent event) {
final boolean isTouchHandleEvent = true;
- return onTouchEventImpl(event, isTouchHandleEvent);
+ return sendTouchEvent(event, isTouchHandleEvent);
}
- private boolean onTouchEventImpl(MotionEvent event, boolean isTouchHandleEvent) {
- TraceEvent.begin("onTouchEvent");
+ private boolean sendTouchEvent(MotionEvent event, boolean isTouchHandleEvent) {
+ TraceEvent.begin("sendTouchEvent");
try {
int eventAction = event.getActionMasked();
@@ -1072,7 +1097,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
if (offset != null) offset.recycle();
return consumed;
} finally {
- TraceEvent.end("onTouchEvent");
+ TraceEvent.end("sendTouchEvent");
}
}
@@ -1576,8 +1601,11 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
mContainerView.removeCallbacks(mFakeMouseMoveRunnable);
if (mNativeContentViewCore != 0) {
- nativeSendMouseMoveEvent(mNativeContentViewCore, offset.getEventTime(),
- offset.getX(), offset.getY(), event.getToolType(0));
+ nativeSendMouseEvent(mNativeContentViewCore, offset.getEventTime(),
+ MotionEvent.ACTION_MOVE, offset.getX(), offset.getY(),
+ event.getPointerId(0), event.getPressure(0), event.getOrientation(0),
+ event.getAxisValue(MotionEvent.AXIS_TILT, 0), event.getButtonState(),
+ event.getMetaState(), event.getToolType(0));
}
return true;
} finally {
@@ -3314,8 +3342,9 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
int androidButtonState, int androidMetaState,
boolean isTouchHandleEvent);
- private native int nativeSendMouseMoveEvent(
- long nativeContentViewCoreImpl, long timeMs, float x, float y, int toolType);
+ private native int nativeSendMouseEvent(long nativeContentViewCoreImpl, long timeMs, int action,
+ float x, float y, int pointerId, float pressure, float orientaton, float tilt,
+ int buttonState, int metaState, int toolType);
private native int nativeSendMouseWheelEvent(long nativeContentViewCoreImpl, long timeMs,
float x, float y, float ticksX, float ticksY, float pixelsPerTick);

Powered by Google App Engine
This is Rietveld 408576698