Export some more logic out of Latin IME

Change-Id: Ib264533a05e9e09347bf254789e6ab5beec92400
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index e4961d6..94aff3f 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1831,7 +1831,7 @@
         // length == 1).
         if (builder.size() > 1 || typedWord.length() == 1 || !builder.allowsToBeAutoCorrected()
                 || mSuggestionsView.isShowingAddToDictionaryHint()) {
-            boolean autoCorrectionAvailable = mSuggest.hasAutoCorrection();
+            boolean autoCorrectionAvailable = builder.hasAutoCorrection();
             if (mCorrectionMode == Suggest.CORRECTION_FULL
                     || mCorrectionMode == Suggest.CORRECTION_FULL_BIGRAM) {
                 autoCorrectionAvailable |= !builder.allowsToBeAutoCorrected();
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 4773ac5..c5b311b 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -83,8 +83,6 @@
 
     private static final boolean DBG = LatinImeLogger.sDBG;
 
-    private boolean mHasAutoCorrection;
-
     private Dictionary mMainDict;
     private ContactsDictionary mContactsDict;
     private WhitelistDictionary mWhiteListDictionary;
@@ -351,15 +349,16 @@
         CharSequence whitelistedWord = capitalizeWord(mIsAllUpperCase, mIsFirstCharCapitalized,
                 mWhiteListDictionary.getWhitelistedWord(consideredWordString));
 
+        final boolean hasAutoCorrection;
         if (CORRECTION_FULL == correctionMode
                 || CORRECTION_FULL_BIGRAM == correctionMode) {
             final CharSequence autoCorrection =
                     AutoCorrection.computeAutoCorrectionWord(mUnigramDictionaries, wordComposer,
                             mSuggestions, mScores, consideredWord, mAutoCorrectionThreshold,
                             whitelistedWord);
-            mHasAutoCorrection = (null != autoCorrection);
+            hasAutoCorrection = (null != autoCorrection);
         } else {
-            mHasAutoCorrection = false;
+            hasAutoCorrection = false;
         }
 
         if (whitelistedWord != null) {
@@ -402,14 +401,12 @@
                 scoreInfoList.add(new SuggestedWords.SuggestedWordInfo("--", false));
             }
             return new SuggestedWords.Builder().addWords(mSuggestions, scoreInfoList)
-                    .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected);
+                    .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected)
+                    .setHasAutoCorrection(hasAutoCorrection);
         }
         return new SuggestedWords.Builder().addWords(mSuggestions, null)
-                .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected);
-    }
-
-    public boolean hasAutoCorrection() {
-        return mHasAutoCorrection;
+                .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected)
+                .setHasAutoCorrection(hasAutoCorrection);
     }
 
     @Override
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java
index c92c720..9549c79 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -91,6 +91,7 @@
         private boolean mIsPunctuationSuggestions;
         private boolean mShouldBlockAutoCorrectionBySafetyNet;
         private boolean mAllowsToBeAutoCorrected;
+        private boolean mHasAutoCorrection;
         private List<SuggestedWordInfo> mSuggestedWordInfoList =
                 new ArrayList<SuggestedWordInfo>();
 
@@ -165,6 +166,11 @@
             return this;
         }
 
+        public Builder setHasAutoCorrection(final boolean hasAutoCorrection) {
+            mHasAutoCorrection = hasAutoCorrection;
+            return this;
+        }
+
         // Should get rid of the first one (what the user typed previously) from suggestions
         // and replace it with what the user currently typed.
         public Builder addTypedWordAndPreviousSuggestions(CharSequence typedWord,
@@ -210,6 +216,10 @@
             return mAllowsToBeAutoCorrected;
         }
 
+        public boolean hasAutoCorrection() {
+            return mHasAutoCorrection;
+        }
+
         @Override
         public String toString() {
             // Pretty-print method to help debug