Merge "VpnSettings: add status report."
diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
index 362fbb5..f62edc4 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
@@ -169,9 +169,10 @@
             final boolean isImeChecked = (pref instanceof CheckBoxPreference) ?
                     ((CheckBoxPreference) pref).isChecked()
                             : enabledIMEAndSubtypesMap.containsKey(imiId);
-            boolean isCurrentInputMethod = imiId.equals(currentInputMethodId);
-            boolean systemIme = isSystemIme(imi);
-            if (((onlyOneIME || systemIme) && !hasHardKeyboard) || isImeChecked) {
+            final boolean isCurrentInputMethod = imiId.equals(currentInputMethodId);
+            final boolean auxIme = isAuxiliaryIme(imi);
+            final boolean systemIme = isSystemIme(imi);
+            if (((onlyOneIME || (systemIme && !auxIme)) && !hasHardKeyboard) || isImeChecked) {
                 if (!enabledIMEAndSubtypesMap.containsKey(imiId)) {
                     // imiId has just been enabled
                     enabledIMEAndSubtypesMap.put(imiId, new HashSet<String>());
@@ -276,7 +277,7 @@
             List<InputMethodInfo> inputMethodInfos,
             final Map<String, List<Preference>> inputMethodPrefsMap) {
         HashMap<String, HashSet<String>> enabledSubtypes =
-            getEnabledInputMethodsAndSubtypeList(resolver);
+                getEnabledInputMethodsAndSubtypeList(resolver);
 
         for (InputMethodInfo imi : inputMethodInfos) {
             final String imiId = imi.getId();
@@ -342,4 +343,19 @@
         return (property.getServiceInfo().applicationInfo.flags
                 & ApplicationInfo.FLAG_SYSTEM) != 0;
     }
+
+    public static boolean isAuxiliaryIme(InputMethodInfo imi) {
+        final int subtypeCount = imi.getSubtypeCount();
+        if (subtypeCount == 0) {
+            return false;
+        } else {
+            for (int i = 0; i < subtypeCount; ++i) {
+                final InputMethodSubtype subtype = imi.getSubtypeAt(i);
+                if (!subtype.isAuxiliary()) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
 }
diff --git a/src/com/android/settings/inputmethod/InputMethodPreference.java b/src/com/android/settings/inputmethod/InputMethodPreference.java
index 75a32a0..21057a6 100644
--- a/src/com/android/settings/inputmethod/InputMethodPreference.java
+++ b/src/com/android/settings/inputmethod/InputMethodPreference.java
@@ -69,20 +69,8 @@
         mImi = imi;
         updateSummary();
         mIsSystemIme = InputMethodAndSubtypeUtil.isSystemIme(imi);
-        final int subtypeCount = imi.getSubtypeCount();
-        boolean onlyAux = true;
-        if (subtypeCount == 0) {
-            onlyAux = false;
-        } else {
-            for (int i = 0; i < subtypeCount; ++i) {
-                final InputMethodSubtype subtype = imi.getSubtypeAt(i);
-                if (!subtype.isAuxiliary()) {
-                    onlyAux = false;
-                    break;
-                }
-            }
-        }
-        if (imiCount <= 1 || (mIsSystemIme && !onlyAux)) {
+        final boolean isAuxIme = InputMethodAndSubtypeUtil.isAuxiliaryIme(imi);
+        if (imiCount <= 1 || (mIsSystemIme && !isAuxIme)) {
             setEnabled(false);
         }
     }