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) {
     }
 }