diff --git a/java/src/com/android/inputmethod/latin/InputAttributes.java b/java/src/com/android/inputmethod/latin/InputAttributes.java
index 28ce916c96f73fd6937cff0537b1573a4e59653b..6d3f3e46ad9c84146ce2b3cf43be1c752134d602 100644
--- a/java/src/com/android/inputmethod/latin/InputAttributes.java
+++ b/java/src/com/android/inputmethod/latin/InputAttributes.java
@@ -16,20 +16,97 @@
 
 package com.android.inputmethod.latin;
 
+import android.text.InputType;
+import android.util.Log;
 import android.view.inputmethod.EditorInfo;
 
+import com.android.inputmethod.compat.InputTypeCompatUtils;
+
 /**
  * Class to hold attributes of the input field.
  */
 public class InputAttributes {
     private final String TAG = InputAttributes.class.getSimpleName();
 
-    // TODO: make these final
-    public boolean mInsertSpaceOnPickSuggestionManually;
-    public boolean mInputTypeNoAutoCorrect;
-    public boolean mIsSettingsSuggestionStripOn;
-    public boolean mApplicationSpecifiedCompletionOn;
+    final public boolean mInsertSpaceOnPickSuggestionManually;
+    final public boolean mInputTypeNoAutoCorrect;
+    final public boolean mIsSettingsSuggestionStripOn;
+    final public boolean mApplicationSpecifiedCompletionOn;
+
+    public InputAttributes(final EditorInfo editorInfo, final boolean isFullscreenMode) {
+        final boolean insertSpaceOnPickSuggestionManually;
+        final boolean inputTypeNoAutoCorrect;
+        final boolean isSettingsSuggestionStripOn;
+        final boolean applicationSpecifiedCompletionOn;
+
+        if (editorInfo == null || editorInfo.inputType == InputType.TYPE_CLASS_TEXT) {
+            insertSpaceOnPickSuggestionManually = false;
+            isSettingsSuggestionStripOn = false;
+            inputTypeNoAutoCorrect = false;
+            applicationSpecifiedCompletionOn = false;
+        } else {
+            final int inputType = editorInfo.inputType;
+            if (inputType == InputType.TYPE_NULL) {
+                // TODO: We should honor TYPE_NULL specification.
+                Log.i(TAG, "InputType.TYPE_NULL is specified");
+            }
+            final int inputClass = inputType & InputType.TYPE_MASK_CLASS;
+            final int variation = inputType & InputType.TYPE_MASK_VARIATION;
+            if (inputClass == 0) {
+                Log.w(TAG, String.format("Unexpected input class: inputType=0x%08x"
+                        + " imeOptions=0x%08x",
+                        inputType, editorInfo.imeOptions));
+            }
+            final boolean flagNoSuggestions =
+                    0 != (inputType & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
+            final boolean flagMultiLine =
+                    0 != (inputType & InputType.TYPE_TEXT_FLAG_MULTI_LINE);
+            final boolean flagAutoCorrect =
+                    0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
+            final boolean flagAutoComplete =
+                    0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
+
+            // Make sure that passwords are not displayed in {@link SuggestionsView}.
+            if (InputTypeCompatUtils.isPasswordInputType(inputType)
+                    || InputTypeCompatUtils.isVisiblePasswordInputType(inputType)
+                    || InputTypeCompatUtils.isEmailVariation(variation)
+                    || InputType.TYPE_TEXT_VARIATION_URI == variation
+                    || InputType.TYPE_TEXT_VARIATION_FILTER == variation
+                    || flagNoSuggestions
+                    || flagAutoComplete) {
+                isSettingsSuggestionStripOn = false;
+            } else {
+                isSettingsSuggestionStripOn = true;
+            }
+
+            if (InputTypeCompatUtils.isEmailVariation(variation)
+                    || variation == InputType.TYPE_TEXT_VARIATION_PERSON_NAME) {
+                // The point in turning this off is that we don't want to insert a space after
+                // a name when filling a form: we can't delete trailing spaces when changing fields
+                insertSpaceOnPickSuggestionManually = false;
+            } else {
+                insertSpaceOnPickSuggestionManually = true;
+            }
+
+            // If it's a browser edit field and auto correct is not ON explicitly, then
+            // disable auto correction, but keep suggestions on.
+            // If NO_SUGGESTIONS is set, don't do prediction.
+            // If it's not multiline and the autoCorrect flag is not set, then don't correct
+            if ((variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
+                    && !flagAutoCorrect)
+                    || flagNoSuggestions
+                    || (!flagAutoCorrect && !flagMultiLine)) {
+                inputTypeNoAutoCorrect = true;
+            } else {
+                inputTypeNoAutoCorrect = false;
+            }
+
+            applicationSpecifiedCompletionOn = flagAutoComplete && isFullscreenMode;
+        }
 
-    public InputAttributes(final EditorInfo editorInfo) {
+        mInsertSpaceOnPickSuggestionManually = insertSpaceOnPickSuggestionManually;
+        mInputTypeNoAutoCorrect = inputTypeNoAutoCorrect;
+        mIsSettingsSuggestionStripOn = isSettingsSuggestionStripOn;
+        mApplicationSpecifiedCompletionOn = applicationSpecifiedCompletionOn;
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index b7dd098e8b927deac8cfd3d43d87a10357c62850..47759f373849b9b83e87f35080b53d5bacf780c1 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -511,7 +511,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         loadSettings();
 
         // TODO: remove the following when it's not needed by updateCorrectionMode() any more
-        mInputAttributes = new InputAttributes(null);
+        mInputAttributes = new InputAttributes(null, false /* isFullscreenMode */);
         Utils.GCUtils.getInstance().reset();
         boolean tryGC = true;
         for (int i = 0; i < Utils.GCUtils.GC_TRY_LOOP_MAX && tryGC; ++i) {
@@ -797,85 +797,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
     }
 
     private void initializeInputAttributes(final EditorInfo editorInfo) {
-        mInputAttributes = new InputAttributes(editorInfo);
-
-        final boolean insertSpaceOnPickSuggestionManually;
-        final boolean inputTypeNoAutoCorrect;
-        final boolean isSettingsSuggestionStripOn;
-        final boolean applicationSpecifiedCompletionOn;
-
-        if (editorInfo == null || editorInfo.inputType != InputType.TYPE_CLASS_TEXT) {
-            if (editorInfo.inputType == InputType.TYPE_NULL) {
-                // TODO: We should honor TYPE_NULL specification.
-                Log.i(TAG, "InputType.TYPE_NULL is specified");
-            }
-            insertSpaceOnPickSuggestionManually = false;
-            isSettingsSuggestionStripOn = false;
-            inputTypeNoAutoCorrect = false;
-            applicationSpecifiedCompletionOn = false;
-        } else {
-            final int inputType = editorInfo.inputType;
-            final int inputClass = inputType & InputType.TYPE_MASK_CLASS;
-            final int variation = inputType & InputType.TYPE_MASK_VARIATION;
-            if (inputClass == 0) {
-                Log.w(TAG, String.format("Unexpected input class: inputType=0x%08x"
-                        + " imeOptions=0x%08x",
-                        inputType, editorInfo.imeOptions));
-            }
-            final boolean flagNoSuggestions =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
-            final boolean flagMultiLine =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_MULTI_LINE);
-            final boolean flagAutoCorrect =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
-            final boolean flagAutoComplete =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
-
-            // Make sure that passwords are not displayed in {@link SuggestionsView}.
-            if (InputTypeCompatUtils.isPasswordInputType(inputType)
-                    || InputTypeCompatUtils.isVisiblePasswordInputType(inputType)
-                    || InputTypeCompatUtils.isEmailVariation(variation)
-                    || InputType.TYPE_TEXT_VARIATION_URI == variation
-                    || InputType.TYPE_TEXT_VARIATION_FILTER == variation
-                    || flagNoSuggestions
-                    || flagAutoComplete) {
-                isSettingsSuggestionStripOn = false;
-            } else {
-                isSettingsSuggestionStripOn = true;
-            }
-
-            if (InputTypeCompatUtils.isEmailVariation(variation)
-                    || variation == InputType.TYPE_TEXT_VARIATION_PERSON_NAME) {
-                // The point in turning this off is that we don't want to insert a space after
-                // a name when filling a form: we can't delete trailing spaces when changing fields
-                insertSpaceOnPickSuggestionManually = false;
-            } else {
-                insertSpaceOnPickSuggestionManually = true;
-            }
-
-            // If it's a browser edit field and auto correct is not ON explicitly, then
-            // disable auto correction, but keep suggestions on.
-            // If NO_SUGGESTIONS is set, don't do prediction.
-            // If it's not multiline and the autoCorrect flag is not set, then don't correct
-            if ((variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT && !flagAutoCorrect)
-                    || flagNoSuggestions
-                    || (!flagAutoCorrect && !flagMultiLine)) {
-                inputTypeNoAutoCorrect = true;
-            } else {
-                inputTypeNoAutoCorrect = false;
-            }
-
-            if (flagAutoComplete) {
-                applicationSpecifiedCompletionOn = isFullscreenMode();
-            } else {
-                applicationSpecifiedCompletionOn = false;
-            }
-        }
-
-        mInputAttributes.mInsertSpaceOnPickSuggestionManually = insertSpaceOnPickSuggestionManually;
-        mInputAttributes.mInputTypeNoAutoCorrect = inputTypeNoAutoCorrect;
-        mInputAttributes.mIsSettingsSuggestionStripOn = isSettingsSuggestionStripOn;
-        mInputAttributes.mApplicationSpecifiedCompletionOn = applicationSpecifiedCompletionOn;
+        mInputAttributes = new InputAttributes(editorInfo, isFullscreenMode());
     }
 
     @Override