summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHuahui Wu <hwu@google.com>2011-01-13 17:02:33 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-13 17:02:33 -0800
commitbfbb089c7fcb2bc74f55fe3c171ef1b6df78b2da (patch)
treed9a74cc13d0c79f3878f877f777632ab42f39556
parent402438bb40795a3608509f40bcff6245698185ad (diff)
parente838a427786f136155b618962bd18781be8e012d (diff)
Merge "b/3133123 Pass touch point ids to WebKit." into honeycomb
-rw-r--r--core/java/android/view/MotionEvent.java3
-rw-r--r--core/java/android/webkit/WebView.java14
-rw-r--r--core/java/android/webkit/WebViewCore.java9
3 files changed, 22 insertions, 4 deletions
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index e81aa982f167..db2cd5056252 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1550,6 +1550,7 @@ public final class MotionEvent extends InputEvent implements Parcelable {
@Override
public String toString() {
return "MotionEvent{" + Integer.toHexString(System.identityHashCode(this))
+ + " pointerId=" + getPointerId(0)
+ " action=" + actionToString(mAction)
+ " x=" + getX()
+ " y=" + getY()
@@ -1567,6 +1568,8 @@ public final class MotionEvent extends InputEvent implements Parcelable {
+ " edgeFlags=0x" + Integer.toHexString(mEdgeFlags)
+ " device=" + mDeviceId
+ " source=0x" + Integer.toHexString(mSource)
+ + (getPointerCount() > 1 ?
+ " pointerId2=" + getPointerId(1) + " x2=" + getX(2) + " y2=" + getY(2) : "")
+ "}";
}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index b893af8148cc..43e7ef656dac 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -5471,6 +5471,8 @@ public class WebView extends AbsoluteLayout
if (shouldForwardTouchEvent()) {
TouchEventData ted = new TouchEventData();
ted.mAction = action;
+ ted.mIds = new int[1];
+ ted.mIds[0] = ev.getPointerId(0);
ted.mPoints = new Point[1];
ted.mPoints[0] = new Point(contentX, contentY);
ted.mMetaState = ev.getMetaState();
@@ -5513,6 +5515,8 @@ public class WebView extends AbsoluteLayout
|| eventTime - mLastSentTouchTime > mCurrentTouchInterval)) {
TouchEventData ted = new TouchEventData();
ted.mAction = action;
+ ted.mIds = new int[1];
+ ted.mIds[0] = ev.getPointerId(0);
ted.mPoints = new Point[1];
ted.mPoints[0] = new Point(contentX, contentY);
ted.mMetaState = ev.getMetaState();
@@ -5682,6 +5686,8 @@ public class WebView extends AbsoluteLayout
// pass the touch events from UI thread to WebCore thread
if (shouldForwardTouchEvent()) {
TouchEventData ted = new TouchEventData();
+ ted.mIds = new int[1];
+ ted.mIds[0] = ev.getPointerId(0);
ted.mAction = action;
ted.mPoints = new Point[1];
ted.mPoints[0] = new Point(contentX, contentY);
@@ -5699,6 +5705,8 @@ public class WebView extends AbsoluteLayout
mPrivateHandler.removeMessages(SWITCH_TO_LONGPRESS);
if (inFullScreenMode() || mDeferTouchProcess) {
TouchEventData ted = new TouchEventData();
+ ted.mIds = new int[1];
+ ted.mIds[0] = ev.getPointerId(0);
ted.mAction = WebViewCore.ACTION_DOUBLETAP;
ted.mPoints = new Point[1];
ted.mPoints[0] = new Point(contentX, contentY);
@@ -5832,8 +5840,10 @@ public class WebView extends AbsoluteLayout
TouchEventData ted = new TouchEventData();
ted.mAction = ev.getAction() & MotionEvent.ACTION_MASK;
final int count = ev.getPointerCount();
+ ted.mIds = new int[count];
ted.mPoints = new Point[count];
for (int c = 0; c < count; c++) {
+ ted.mIds[c] = ev.getPointerId(c);
int x = viewToContentX((int) ev.getX(c) + mScrollX);
int y = viewToContentY((int) ev.getY(c) + mScrollY);
ted.mPoints[c] = new Point(x, y);
@@ -5927,6 +5937,8 @@ public class WebView extends AbsoluteLayout
mWebViewCore.removeMessages(EventHub.TOUCH_EVENT);
}
TouchEventData ted = new TouchEventData();
+ ted.mIds = new int[1];
+ ted.mIds[0] = 0;
ted.mPoints = new Point[1];
ted.mPoints[0] = new Point(x, y);
ted.mAction = MotionEvent.ACTION_CANCEL;
@@ -7054,6 +7066,8 @@ public class WebView extends AbsoluteLayout
if (inFullScreenMode() || mDeferTouchProcess) {
TouchEventData ted = new TouchEventData();
ted.mAction = WebViewCore.ACTION_LONGPRESS;
+ ted.mIds = new int[1];
+ ted.mIds[0] = 0;
ted.mPoints = new Point[1];
ted.mPoints[0] = new Point(viewToContentX((int) mLastTouchX + mScrollX),
viewToContentY((int) mLastTouchY + mScrollY));
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 2ea20eeb1186..c56f25270c6c 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -562,8 +562,8 @@ final class WebViewCore {
private native void nativeTouchUp(int touchGeneration,
int framePtr, int nodePtr, int x, int y);
- private native boolean nativeHandleTouchEvent(int action, int[] x, int[] y,
- int count, int metaState);
+ private native boolean nativeHandleTouchEvent(int action, int[] idArray,
+ int[] xArray, int[] yArray, int count, int metaState);
private native void nativeUpdateFrameCache();
@@ -828,6 +828,7 @@ final class WebViewCore {
static class TouchEventData {
int mAction;
+ int[] mIds; // Ids of the touch points
Point[] mPoints;
int mMetaState;
boolean mReprocess;
@@ -1336,8 +1337,8 @@ final class WebViewCore {
mWebView.mPrivateHandler,
WebView.PREVENT_TOUCH_ID,
ted.mAction,
- nativeHandleTouchEvent(ted.mAction, xArray,
- yArray, count, ted.mMetaState) ? 1 : 0,
+ nativeHandleTouchEvent(ted.mAction, ted.mIds,
+ xArray, yArray, count, ted.mMetaState) ? 1 : 0,
ted.mReprocess ? ted : null).sendToTarget();
break;
}