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); |