diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 78b23b023926ffcc43ad06d665e952f8008dce46..ab9b2e598ba88623950d7ae736a07cd4af16bba7 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -2222,40 +2222,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         mHandler.showSuggestionStripWithTypedWord(suggestedWords, typedWord);
     }
 
-    /**
-     * Check if the cursor is actually at the end of a word. If so, restart suggestions on this
-     * word, else do nothing.
-     */
-    // TODO[IL]: Move this to InputLogic and make it private.
-    public void restartSuggestionsOnWordBeforeCursorIfAtEndOfWord() {
-        final CharSequence word =
-                mInputLogic.mConnection.getWordBeforeCursorIfAtEndOfWord(mSettings.getCurrent());
-        if (null != word) {
-            final String wordString = word.toString();
-            restartSuggestionsOnWordBeforeCursor(wordString);
-            // TODO: Handle the case where the user manually moves the cursor and then backs up over
-            // a separator.  In that case, the current log unit should not be uncommitted.
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.getInstance().uncommitCurrentLogUnit(wordString,
-                        true /* dumpCurrentLogUnit */);
-            }
-        }
-    }
-
-    // TODO[IL]: Move this to InputLogic
-    private void restartSuggestionsOnWordBeforeCursor(final String word) {
-        mInputLogic.mWordComposer.setComposingWord(word,
-                // Previous word is the 2nd word before cursor because we are restarting on the
-                // 1st word before cursor.
-                mInputLogic.getNthPreviousWordForSuggestion(mSettings.getCurrent(),
-                        2 /* nthPreviousWord */),
-                mKeyboardSwitcher.getKeyboard());
-        final int length = word.length();
-        mInputLogic.mConnection.deleteSurroundingText(length, 0);
-        mInputLogic.mConnection.setComposingText(word, 1);
-        mHandler.postUpdateSuggestionStrip();
-    }
-
     /**
      * Retry resetting caches in the rich input connection.
      *
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 72e9dd22c10104beea1246fcb816b53b0c62469f..f44ee8b9a85f2a2f79d3db20154c0b1058159357 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -632,7 +632,8 @@ public final class InputLogic {
             // TODO: move mDisplayOrientation to CurrentSettings.
             if (settingsValues.isSuggestionsRequested(mLatinIME.mDisplayOrientation)
                     && settingsValues.mCurrentLanguageHasSpaces) {
-                mLatinIME.restartSuggestionsOnWordBeforeCursorIfAtEndOfWord();
+                restartSuggestionsOnWordBeforeCursorIfAtEndOfWord(settingsValues, keyboardSwitcher,
+                        handler);
             }
             // We just removed a character. We need to update the auto-caps state.
             keyboardSwitcher.updateShiftState();
@@ -810,6 +811,48 @@ public final class InputLogic {
         keyboardSwitcher.updateShiftState();
     }
 
+    /**
+     * Check if the cursor is actually at the end of a word. If so, restart suggestions on this
+     * word, otherwise do nothing.
+     * @param settingsValues the current values of the settings.
+     */
+    private void restartSuggestionsOnWordBeforeCursorIfAtEndOfWord(
+            final SettingsValues settingsValues,
+            // TODO: remove these two arguments
+            final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) {
+        final CharSequence word = mConnection.getWordBeforeCursorIfAtEndOfWord(settingsValues);
+        if (null != word) {
+            final String wordString = word.toString();
+            restartSuggestionsOnWordBeforeCursor(settingsValues, wordString, keyboardSwitcher,
+                    handler);
+            // TODO: Handle the case where the user manually moves the cursor and then backs up over
+            // a separator.  In that case, the current log unit should not be uncommitted.
+            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
+                ResearchLogger.getInstance().uncommitCurrentLogUnit(wordString,
+                        true /* dumpCurrentLogUnit */);
+            }
+        }
+    }
+
+    /**
+     * Restart suggestions on the word passed as an argument, assuming it is before the cursor.
+     * @param settingsValues the current settings values.
+     */
+    private void restartSuggestionsOnWordBeforeCursor(final SettingsValues settingsValues,
+            final String word,
+            // TODO: remove these two arguments
+            final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) {
+        mWordComposer.setComposingWord(word,
+                // Previous word is the 2nd word before cursor because we are restarting on the
+                // 1st word before cursor.
+                getNthPreviousWordForSuggestion(settingsValues, 2 /* nthPreviousWord */),
+                keyboardSwitcher.getKeyboard());
+        final int length = word.length();
+        mConnection.deleteSurroundingText(length, 0);
+        mConnection.setComposingText(word, 1);
+        handler.postUpdateSuggestionStrip();
+    }
+
     /**
      * Reverts a previous commit with auto-correction.
      *