Merge "Whoops, forgot the HONEYCOMB_MR1 constant. :(" into honeycomb-mr1
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 01c73a8..96623b0 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -1672,6 +1672,7 @@
 
         mDrawHistory = true;
         mHistoryPicture = p;
+
         mScrollX = sx;
         mScrollY = sy;
         mZoomManager.restoreZoomState(b);
@@ -5473,7 +5474,6 @@
     private boolean handleTouchEventCommon(MotionEvent ev, int action, int x, int y) {
         long eventTime = ev.getEventTime();
 
-
         // Due to the touch screen edge effect, a touch closer to the edge
         // always snapped to the edge. As getViewWidth() can be different from
         // getWidth() due to the scrollbar, adjusting the point to match
@@ -5577,6 +5577,8 @@
                         ted.mIds[0] = ev.getPointerId(0);
                         ted.mPoints = new Point[1];
                         ted.mPoints[0] = new Point(contentX, contentY);
+                        ted.mPointsInView = new Point[1];
+                        ted.mPointsInView[0] = new Point(x, y);
                         ted.mMetaState = ev.getMetaState();
                         ted.mReprocess = mDeferTouchProcess;
                         ted.mNativeLayer = nativeScrollableLayer(
@@ -5624,6 +5626,8 @@
                     ted.mIds[0] = ev.getPointerId(0);
                     ted.mPoints = new Point[1];
                     ted.mPoints[0] = new Point(contentX, contentY);
+                    ted.mPointsInView = new Point[1];
+                    ted.mPointsInView[0] = new Point(x, y);
                     ted.mMetaState = ev.getMetaState();
                     ted.mReprocess = mDeferTouchProcess;
                     ted.mNativeLayer = mScrollingLayer;
@@ -5806,6 +5810,8 @@
                     ted.mAction = action;
                     ted.mPoints = new Point[1];
                     ted.mPoints[0] = new Point(contentX, contentY);
+                    ted.mPointsInView = new Point[1];
+                    ted.mPointsInView[0] = new Point(x, y);
                     ted.mMetaState = ev.getMetaState();
                     ted.mReprocess = mDeferTouchProcess;
                     ted.mNativeLayer = mScrollingLayer;
@@ -5828,6 +5834,8 @@
                             ted.mAction = WebViewCore.ACTION_DOUBLETAP;
                             ted.mPoints = new Point[1];
                             ted.mPoints[0] = new Point(contentX, contentY);
+                            ted.mPointsInView = new Point[1];
+                            ted.mPointsInView[0] = new Point(x, y);
                             ted.mMetaState = ev.getMetaState();
                             ted.mReprocess = mDeferTouchProcess;
                             ted.mNativeLayer = nativeScrollableLayer(
@@ -5964,11 +5972,13 @@
         final int count = ev.getPointerCount();
         ted.mIds = new int[count];
         ted.mPoints = new Point[count];
+        ted.mPointsInView = 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);
+            ted.mPointsInView[c] = new Point((int) ev.getX(c), (int) ev.getY(c));
         }
         if (ted.mAction == MotionEvent.ACTION_POINTER_DOWN
             || ted.mAction == MotionEvent.ACTION_POINTER_UP) {
@@ -6053,6 +6063,10 @@
             ted.mIds[0] = 0;
             ted.mPoints = new Point[1];
             ted.mPoints[0] = new Point(x, y);
+            ted.mPointsInView = new Point[1];
+            int viewX = contentToViewX(x) - mScrollX;
+            int viewY = contentToViewY(y) - mScrollY;
+            ted.mPointsInView[0] = new Point(viewX, viewY);
             ted.mAction = MotionEvent.ACTION_CANCEL;
             ted.mNativeLayer = nativeScrollableLayer(
                     x, y, ted.mNativeLayerRect, null);
@@ -7441,16 +7455,15 @@
                     // Following is for single touch.
                     switch (ted.mAction) {
                         case MotionEvent.ACTION_DOWN:
-                            mLastDeferTouchX = contentToViewX(ted.mPoints[0].x)
-                                    - mScrollX;
-                            mLastDeferTouchY = contentToViewY(ted.mPoints[0].y)
-                                    - mScrollY;
+                            mLastDeferTouchX = ted.mPointsInView[0].x;
+                            mLastDeferTouchY = ted.mPointsInView[0].y;
                             mDeferTouchMode = TOUCH_INIT_MODE;
                             break;
                         case MotionEvent.ACTION_MOVE: {
                             // no snapping in defer process
-                            int x = contentToViewX(ted.mPoints[0].x) - mScrollX;
-                            int y = contentToViewY(ted.mPoints[0].y) - mScrollY;
+                            int x = ted.mPointsInView[0].x;
+                            int y = ted.mPointsInView[0].y;
+
                             if (mDeferTouchMode != TOUCH_DRAG_MODE) {
                                 mDeferTouchMode = TOUCH_DRAG_MODE;
                                 mLastDeferTouchX = x;
@@ -7484,8 +7497,8 @@
                             break;
                         case WebViewCore.ACTION_DOUBLETAP:
                             // doDoubleTap() needs mLastTouchX/Y as anchor
-                            mLastTouchX = contentToViewX(ted.mPoints[0].x) - mScrollX;
-                            mLastTouchY = contentToViewY(ted.mPoints[0].y) - mScrollY;
+                            mLastDeferTouchX = ted.mPointsInView[0].x;
+                            mLastDeferTouchY = ted.mPointsInView[0].y;
                             mZoomManager.handleDoubleTap(mLastTouchX, mLastTouchY);
                             mDeferTouchMode = TOUCH_DONE_MODE;
                             break;
@@ -7609,6 +7622,8 @@
                         ted.mPoints = new Point[1];
                         ted.mPoints[0] = new Point(viewToContentX(mLastTouchX + mScrollX),
                                                    viewToContentY(mLastTouchY + mScrollY));
+                        ted.mPointsInView = new Point[1];
+                        ted.mPointsInView[0] = new Point(mLastTouchX, mLastTouchY);
                         // metaState for long press is tricky. Should it be the
                         // state when the press started or when the press was
                         // released? Or some intermediary key state? For
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 3b989dc..0271695 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -831,6 +831,7 @@
         int mAction;
         int[] mIds;  // Ids of the touch points
         Point[] mPoints;
+        Point[] mPointsInView;  // the point coordinates in view axis.
         int mActionIndex;  // Associated pointer index for ACTION_POINTER_DOWN/UP
         int mMetaState;
         boolean mReprocess;
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 98ab3d1..1767dd9 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -556,7 +556,7 @@
      * @hide
      */
     public int getLteDbm() {
-        log("STOPSHIP teach getLteDbm to compute dBm properly");
+        log("TODO: teach getLteDbm to compute dBm properly");
         int level = -1;
         if (DBG) log("getLteDbm=" + level);
         return level;
@@ -568,7 +568,7 @@
      * @hide
      */
     public int getLteLevel() {
-        log("STOPSHIP teach getLteLevel to compute Level properly");
+        log("TODO: teach getLteLevel to compute Level properly");
         int level = SIGNAL_STRENGTH_MODERATE;
         if (DBG) log("getLteLevel=" + level);
         return level;
@@ -580,7 +580,7 @@
      * @hide
      */
     public int getLteAsuLevel() {
-        log("STOPSHIP teach getLteAsuLevel to compute asu Level properly");
+        log("TODO: teach getLteAsuLevel to compute asu Level properly");
         int level = 4;
         if (DBG) log("getLteAsuLevel=" + level);
         return level;