Merge "Check all enabled IME's subtypes to enable personalization."
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 94e3e74..346ba85 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -541,7 +541,7 @@
shouldKeepUserHistoryDictionaries = true;
// TODO: Eliminate this restriction
shouldKeepPersonalizationDictionaries =
- mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes();
+ mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes();
} else {
shouldKeepUserHistoryDictionaries = false;
shouldKeepPersonalizationDictionaries = false;
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index 860575a..935dd96 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -37,9 +37,11 @@
import com.android.inputmethod.latin.utils.LocaleUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
public final class SubtypeSwitcher {
private static boolean DBG = LatinImeLogger.sDBG;
@@ -273,12 +275,26 @@
return mNeedsToDisplayLanguage.getValue();
}
- public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypes() {
+ public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes() {
final Locale systemLocale = mResources.getConfiguration().locale;
- final List<InputMethodSubtype> enabledSubtypesOfThisIme =
- mRichImm.getMyEnabledInputMethodSubtypeList(true);
- for (final InputMethodSubtype subtype : enabledSubtypesOfThisIme) {
- if (!systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) {
+ final Set<InputMethodSubtype> enabledSubtypesOfEnabledImes =
+ new HashSet<InputMethodSubtype>();
+ final InputMethodManager inputMethodManager = mRichImm.getInputMethodManager();
+ final List<InputMethodInfo> enabledInputMethodInfoList =
+ inputMethodManager.getEnabledInputMethodList();
+ for (final InputMethodInfo info : enabledInputMethodInfoList) {
+ final List<InputMethodSubtype> enabledSubtypes =
+ inputMethodManager.getEnabledInputMethodSubtypeList(
+ info, true /* allowsImplicitlySelectedSubtypes */);
+ if (enabledSubtypes.isEmpty()) {
+ // An IME with no subtypes is found.
+ return false;
+ }
+ enabledSubtypesOfEnabledImes.addAll(enabledSubtypes);
+ }
+ for (final InputMethodSubtype subtype : enabledSubtypesOfEnabledImes) {
+ if (!subtype.isAuxiliary() && !subtype.getLocale().isEmpty()
+ && !systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) {
return false;
}
}