Update personalized dict only when single subtype is used.
Bug: 12424891
Change-Id: If041d1ab45988dbf9b878ae3367fee0fbc8a8988
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 5a5674f..8ea868d 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -523,7 +523,11 @@
suggest.close();
}
if (currentSettingsValues.mUsePersonalizedDicts) {
- PersonalizationDictionarySessionRegistrar.init(this);
+ if (mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes()) {
+ PersonalizationDictionarySessionRegistrar.init(this);
+ } else {
+ PersonalizationDictionarySessionRegistrar.close(this);
+ }
} else {
PersonalizationHelper.removeAllPersonalizedDictionaries(this);
PersonalizationDictionarySessionRegistrar.resetAll(this);
@@ -595,7 +599,7 @@
ResearchLogger.getInstance().onDestroy();
}
unregisterReceiver(mDictionaryPackInstallReceiver);
- PersonalizationDictionarySessionRegistrar.onDestroy(this);
+ PersonalizationDictionarySessionRegistrar.close(this);
LatinImeLogger.commit();
LatinImeLogger.onDestroy();
super.onDestroy();
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index b0ab603..860575a 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -273,6 +273,18 @@
return mNeedsToDisplayLanguage.getValue();
}
+ public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypes() {
+ final Locale systemLocale = mResources.getConfiguration().locale;
+ final List<InputMethodSubtype> enabledSubtypesOfThisIme =
+ mRichImm.getMyEnabledInputMethodSubtypeList(true);
+ for (final InputMethodSubtype subtype : enabledSubtypesOfThisIme) {
+ if (!systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
private static InputMethodSubtype sForcedSubtypeForTesting = null;
@UsedForTesting
void forceSubtype(final InputMethodSubtype subtype) {
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java
index 7696511..9a897a5 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java
@@ -35,6 +35,6 @@
public static void resetAll(final Context context) {
}
- public static void onDestroy(final Context context) {
+ public static void close(final Context context) {
}
}