Cancel update batch input timer when gesture typing has been canceled

Bug: 7594165
Change-Id: I9dc42919bd196c249c79668570004d3f541cc9ec
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 296a45f..c3cf49f 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -749,12 +749,12 @@
             if (getActivePointerTrackerCount() == 1) {
                 sInGesture = false;
                 sTimeRecorder.onEndBatchInput(eventTime);
+                mTimerProxy.cancelAllUpdateBatchInputTimers();
                 if (!mIsTrackingCanceled) {
                     if (DEBUG_LISTENER) {
                         Log.d(TAG, String.format("[%d] onEndBatchInput   : batchPoints=%d",
                                 mPointerId, sAggregratedPointers.getPointerSize()));
                     }
-                    mTimerProxy.cancelAllUpdateBatchInputTimers();
                     mListener.onEndBatchInput(sAggregratedPointers);
                 }
             }
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 0b49659..8519ad3 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1464,7 +1464,7 @@
     private static final class BatchInputUpdater implements Handler.Callback {
         private final Handler mHandler;
         private LatinIME mLatinIme;
-        private boolean mInBatchInput; // synchornized using "this".
+        private boolean mInBatchInput; // synchronized using "this".
 
         private BatchInputUpdater() {
             final HandlerThread handlerThread = new HandlerThread(
@@ -1496,6 +1496,7 @@
 
         // Run in the UI thread.
         public synchronized void onStartBatchInput() {
+            mHandler.removeMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
             mInBatchInput = true;
         }
 
@@ -1503,7 +1504,7 @@
         private synchronized void updateBatchInput(final InputPointers batchPointers,
                 final LatinIME latinIme) {
             if (!mInBatchInput) {
-                // Batch input has ended while the message was being delivered.
+                // Batch input has ended or canceled while the message was being delivered.
                 return;
             }
             final SuggestedWords suggestedWords = getSuggestedWordsGestureLocked(
@@ -1523,7 +1524,7 @@
                     .sendToTarget();
         }
 
-        public void onCancelBatchInput(final LatinIME latinIme) {
+        public synchronized void onCancelBatchInput(final LatinIME latinIme) {
             mInBatchInput = false;
             latinIme.mHandler.showGesturePreviewAndSuggestionStrip(
                     SuggestedWords.EMPTY, true /* dismissGestureFloatingPreviewText */);