Move some auto-correction logic to where it belongs

Change-Id: I897c5ec3a630a4a6bfc593906df4d3fc7b244482
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 5b43659..5e1795a 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1830,19 +1830,6 @@
         // length == 1).
         if (builder.size() > 1 || typedWord.length() == 1 || !builder.allowsToBeAutoCorrected()
                 || mSuggestionsView.isShowingAddToDictionaryHint()) {
-            boolean autoCorrectionAvailable = builder.hasAutoCorrection();
-            if (mCorrectionMode == Suggest.CORRECTION_FULL
-                    || mCorrectionMode == Suggest.CORRECTION_FULL_BIGRAM) {
-                autoCorrectionAvailable |= !builder.allowsToBeAutoCorrected();
-            }
-            // Don't auto-correct words with multiple capital letter
-            autoCorrectionAvailable &= !mWordComposer.isMostlyCaps();
-            builder.setTypedWordValid(!builder.allowsToBeAutoCorrected()).setHasMinimalSuggestion(
-                    autoCorrectionAvailable);
-            if (Suggest.shouldBlockAutoCorrectionBySafetyNet(builder, mSuggest,
-                    mSettingsValues.mAutoCorrectionThreshold)) {
-                builder.setShouldBlockAutoCorrectionBySafetyNet();
-            }
             showSuggestions(builder.build(), typedWord);
         } else {
             SuggestedWords previousSuggestions = mSuggestionsView.getSuggestions();
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index f3ba1e5..6230b42 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -411,6 +411,7 @@
         mSuggestions.add(0, typedWord);
         StringUtils.removeDupes(mSuggestions);
 
+        final SuggestedWords.Builder builder;
         if (DBG) {
             final CharSequence autoCorrectionSuggestion = mSuggestions.get(0);
             final int autoCorrectionSuggestionScore = mScores[0];
@@ -435,13 +436,28 @@
             for (int i = mScores.length; i < mSuggestions.size(); ++i) {
                 scoreInfoList.add(new SuggestedWords.SuggestedWordInfo("--", false));
             }
-            return new SuggestedWords.Builder().addWords(mSuggestions, scoreInfoList)
+            builder = new SuggestedWords.Builder().addWords(mSuggestions, scoreInfoList)
+                    .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected)
+                    .setHasAutoCorrection(hasAutoCorrection);
+        } else {
+            builder = new SuggestedWords.Builder().addWords(mSuggestions, null)
                     .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected)
                     .setHasAutoCorrection(hasAutoCorrection);
         }
-        return new SuggestedWords.Builder().addWords(mSuggestions, null)
-                .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected)
-                .setHasAutoCorrection(hasAutoCorrection);
+
+        boolean autoCorrectionAvailable = hasAutoCorrection;
+        if (correctionMode == Suggest.CORRECTION_FULL
+                || correctionMode == Suggest.CORRECTION_FULL_BIGRAM) {
+            autoCorrectionAvailable |= !allowsToBeAutoCorrected;
+        }
+        // Don't auto-correct words with multiple capital letter
+        autoCorrectionAvailable &= !wordComposer.isMostlyCaps();
+        builder.setTypedWordValid(!allowsToBeAutoCorrected).setHasMinimalSuggestion(
+                autoCorrectionAvailable);
+        if (Suggest.shouldBlockAutoCorrectionBySafetyNet(builder, this, mAutoCorrectionThreshold)) {
+            builder.setShouldBlockAutoCorrectionBySafetyNet();
+        }
+        return builder;
     }
 
     @Override