diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 53e6232b668891046cda67f4d2b7fa308c37b26c..b4807b01a257f7bea19ece8566cf7bcb567e64e5 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -156,7 +156,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         private static final int MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP = 3;
         private static final int MSG_RESUME_SUGGESTIONS = 4;
         private static final int MSG_REOPEN_DICTIONARIES = 5;
-        private static final int MSG_ON_END_BATCH_INPUT = 6;
+        private static final int MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED = 6;
         private static final int MSG_RESET_CACHES = 7;
         // Update this when adding new messages
         private static final int MSG_LAST = MSG_RESET_CACHES;
@@ -220,8 +220,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                 // get any suggestions. Wait one frame.
                 postUpdateSuggestionStrip();
                 break;
-            case MSG_ON_END_BATCH_INPUT:
-                latinIme.mInputLogic.endBatchInputInternal(latinIme.mSettings.getCurrent(),
+            case MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED:
+                latinIme.mInputLogic.onUpdateTailBatchInputCompleted(
+                        latinIme.mSettings.getCurrent(),
                         (SuggestedWords) msg.obj, latinIme.mKeyboardSwitcher);
                 break;
             case MSG_RESET_CACHES:
@@ -304,8 +305,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                     ARG1_NOT_GESTURE_INPUT, ARG2_UNUSED, suggestedWords).sendToTarget();
         }
 
-        public void onEndBatchInput(final SuggestedWords suggestedWords) {
-            obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget();
+        public void showTailBatchInputResult(final SuggestedWords suggestedWords) {
+            obtainMessage(MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED, suggestedWords).sendToTarget();
         }
 
         // Working variables for the following methods.
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index ec6bd289a4f4bcdea1a8a6e5b620472f46fc55a0..8a07f2df355f3fb6c347aec03ffbb5fda808e35e 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -601,7 +601,7 @@ public final class InputLogic {
     }
 
     public void onEndBatchInput(final InputPointers batchPointers) {
-        mInputLogicHandler.onEndBatchInput(batchPointers, mAutoCommitSequenceNumber);
+        mInputLogicHandler.updateTailBatchInput(batchPointers, mAutoCommitSequenceNumber);
         ++mAutoCommitSequenceNumber;
     }
 
@@ -1794,7 +1794,7 @@ public final class InputLogic {
      * @param settingsValues the current values of the settings.
      * @param suggestedWords suggestedWords to use.
      */
-    public void endBatchInputInternal(final SettingsValues settingsValues,
+    public void onUpdateTailBatchInputCompleted(final SettingsValues settingsValues,
             final SuggestedWords suggestedWords,
             // TODO: remove this argument
             final KeyboardSwitcher keyboardSwitcher) {
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java
index 42f0d7c00e9be7bcc5c86dea20fdc2d8b5f71094..e3b8ab46585bb4daa06d46237ee933929b7f9922 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java
@@ -54,7 +54,8 @@ class InputLogicHandler implements Handler.Callback {
         @Override
         public void onCancelBatchInput() {}
         @Override
-        public void onEndBatchInput(final InputPointers batchPointers, final int sequenceNumber) {}
+        public void updateTailBatchInput(final InputPointers batchPointers,
+                final int sequenceNumber) {}
         @Override
         public void getSuggestedWords(final int sessionId, final int sequenceNumber,
                 final OnGetSuggestedWordsCallback callback) {}
@@ -106,7 +107,7 @@ class InputLogicHandler implements Handler.Callback {
      * Fetch suggestions corresponding to an update of a batch input.
      * @param batchPointers the updated pointers, including the part that was passed last time.
      * @param sequenceNumber the sequence number associated with this batch input.
-     * @param forEnd true if this is the end of a batch input, false if it's an update.
+     * @param isTailBatchInput true if this is the end of a batch input, false if it's an update.
      */
     // This method can be called from any thread and will see to it that the correct threads
     // are used for parts that require it. This method will send a message to the Non-UI handler
@@ -115,7 +116,7 @@ class InputLogicHandler implements Handler.Callback {
     // send a message to the UI handler in LatinIME so that showing suggestions can be done on
     // the UI thread.
     private void updateBatchInput(final InputPointers batchPointers,
-            final int sequenceNumber, final boolean forEnd) {
+            final int sequenceNumber, final boolean isTailBatchInput) {
         synchronized (mLock) {
             if (!mInBatchInput) {
                 // Batch input has ended or canceled while the message was being delivered.
@@ -136,12 +137,12 @@ class InputLogicHandler implements Handler.Callback {
                                 suggestedWords = mInputLogic.mSuggestedWords;
                             }
                             mLatinIME.mHandler.showGesturePreviewAndSuggestionStrip(suggestedWords,
-                                    forEnd /* dismissGestureFloatingPreviewText */);
-                            if (forEnd) {
+                                    isTailBatchInput /* dismissGestureFloatingPreviewText */);
+                            if (isTailBatchInput) {
                                 mInBatchInput = false;
                                 // The following call schedules onEndBatchInputInternal
                                 // to be called on the UI thread.
-                                mLatinIME.mHandler.onEndBatchInput(suggestedWords);
+                                mLatinIME.mHandler.showTailBatchInputResult(suggestedWords);
                             }
                         }
                     });
@@ -159,13 +160,13 @@ class InputLogicHandler implements Handler.Callback {
     // Called on the UI thread by InputLogic.
     public void onUpdateBatchInput(final InputPointers batchPointers,
             final int sequenceNumber) {
-        updateBatchInput(batchPointers, sequenceNumber, false /* forEnd */);
+        updateBatchInput(batchPointers, sequenceNumber, false /* isTailBatchInput */);
     }
 
     /**
      * Cancel a batch input.
      *
-     * Note that as opposed to onEndBatchInput, we do the UI side of this immediately on the
+     * Note that as opposed to updateTailBatchInput, we do the UI side of this immediately on the
      * same thread, rather than get this to call a method in LatinIME. This is because
      * canceling a batch input does not necessitate the long operation of pulling suggestions.
      */
@@ -177,17 +178,20 @@ class InputLogicHandler implements Handler.Callback {
     }
 
     /**
-     * Finish a batch input.
+     * Trigger an update for a tail batch input.
      *
-     * This fetches suggestions, updates the suggestion strip and commits the first suggestion.
-     * It also dismisses the floating text preview.
+     * A tail batch input is the last update for a gesture, the one that is triggered after the
+     * user lifts their finger. This method schedules fetching suggestions on the non-UI thread,
+     * then when the suggestions are computed it comes back on the UI thread to update the
+     * suggestion strip, commit the first suggestion, and dismiss the floating text preview.
      *
      * @param batchPointers the updated batch pointers.
      * @param sequenceNumber the sequence number associated with this batch input.
      */
     // Called on the UI thread by InputLogic.
-    public void onEndBatchInput(final InputPointers batchPointers, final int sequenceNumber) {
-        updateBatchInput(batchPointers, sequenceNumber, true /* forEnd */);
+    public void updateTailBatchInput(final InputPointers batchPointers,
+            final int sequenceNumber) {
+        updateBatchInput(batchPointers, sequenceNumber, true /* isTailBatchInput */);
     }
 
     public void getSuggestedWords(final int sessionId, final int sequenceNumber,