From bbe40835a983e2e627a0e4664cbd4a1654597841 Mon Sep 17 00:00:00 2001
From: Jean Chalard <jchalard@google.com>
Date: Thu, 19 Dec 2013 20:30:41 +0900
Subject: [PATCH] [IL12] move restartSuggestions* to InputLogic

Bug: 8636060
Change-Id: I99474248e8fa35eb3053b5520abc8716805fdfb4
---
 .../android/inputmethod/latin/LatinIME.java   | 34 --------------
 .../latin/inputlogic/InputLogic.java          | 45 ++++++++++++++++++-
 2 files changed, 44 insertions(+), 35 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 78b23b0239..ab9b2e598b 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 72e9dd22c1..f44ee8b9a8 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.
      *
-- 
GitLab