Merge "Make SuggestedWords partially immutable"
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index c453084..f8f17bd 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -722,13 +722,6 @@
         final int[] codes = mKeyDetector.newCodeArray();
         mKeyDetector.getKeyAndNearbyCodes(x, y, codes);
 
-        // Swap the first and second values in the codes array if the primary code is not the
-        // first value but the second value in the array. This happens when key debouncing is
-        // in effect.
-        if (codes.length >= 2 && codes[0] != code && codes[1] == code) {
-            codes[1] = codes[0];
-            codes[0] = code;
-        }
         callListenerOnCodeInput(key, code, codes, x, y);
         callListenerOnRelease(key, code, false);
     }
diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index 41e7ef4..f96f71e 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -119,38 +119,37 @@
             sweetSpotCenterYs = new float[keyCount];
             sweetSpotRadii = new float[keyCount];
             calculateSweetSpotParams = true;
+            int i = 0;
+            for (final Key key : keys) {
+                keyXCoordinates[i] = key.mX;
+                keyYCoordinates[i] = key.mY;
+                keyWidths[i] = key.mWidth;
+                keyHeights[i] = key.mHeight;
+                keyCharCodes[i] = key.mCode;
+                if (calculateSweetSpotParams) {
+                    final Rect hitBox = key.mHitBox;
+                    final int row = hitBox.top / mKeyHeight;
+                    if (row < touchPositionCorrection.mRadii.length) {
+                        final float hitBoxCenterX = (hitBox.left + hitBox.right) * 0.5f;
+                        final float hitBoxCenterY = (hitBox.top + hitBox.bottom) * 0.5f;
+                        final float hitBoxWidth = hitBox.right - hitBox.left;
+                        final float hitBoxHeight = hitBox.bottom - hitBox.top;
+                        final float x = touchPositionCorrection.mXs[row];
+                        final float y = touchPositionCorrection.mYs[row];
+                        final float radius = touchPositionCorrection.mRadii[row];
+                        sweetSpotCenterXs[i] = hitBoxCenterX + x * hitBoxWidth;
+                        sweetSpotCenterYs[i] = hitBoxCenterY + y * hitBoxHeight;
+                        sweetSpotRadii[i] = radius * (float) Math.sqrt(
+                                hitBoxWidth * hitBoxWidth + hitBoxHeight * hitBoxHeight);
+                    }
+                }
+                i++;
+            }
         } else {
             sweetSpotCenterXs = sweetSpotCenterYs = sweetSpotRadii = null;
             calculateSweetSpotParams = false;
         }
 
-        int i = 0;
-        for (final Key key : keys) {
-            keyXCoordinates[i] = key.mX;
-            keyYCoordinates[i] = key.mY;
-            keyWidths[i] = key.mWidth;
-            keyHeights[i] = key.mHeight;
-            keyCharCodes[i] = key.mCode;
-            if (calculateSweetSpotParams) {
-                final Rect hitBox = key.mHitBox;
-                final int row = hitBox.top / mKeyHeight;
-                if (row < touchPositionCorrection.mRadii.length) {
-                    final float hitBoxCenterX = (hitBox.left + hitBox.right) * 0.5f;
-                    final float hitBoxCenterY = (hitBox.top + hitBox.bottom) * 0.5f;
-                    final float hitBoxWidth = hitBox.right - hitBox.left;
-                    final float hitBoxHeight = hitBox.bottom - hitBox.top;
-                    final float x = touchPositionCorrection.mXs[row];
-                    final float y = touchPositionCorrection.mYs[row];
-                    final float radius = touchPositionCorrection.mRadii[row];
-                    sweetSpotCenterXs[i] = hitBoxCenterX + x * hitBoxWidth;
-                    sweetSpotCenterYs[i] = hitBoxCenterY + y * hitBoxHeight;
-                    sweetSpotRadii[i] = radius * (float) Math.sqrt(
-                            hitBoxWidth * hitBoxWidth + hitBoxHeight * hitBoxHeight);
-                }
-            }
-            i++;
-        }
-
         mNativeProximityInfo = setProximityInfoNative(MAX_PROXIMITY_CHARS_SIZE,
                 keyboardWidth, keyboardHeight, mGridWidth, mGridHeight, proximityCharsArray,
                 keyCount, keyXCoordinates, keyYCoordinates, keyWidths, keyHeights, keyCharCodes,