Merge "Check all enabled IME's subtypes to enable personalization."

main
Keisuke Kuroyanagi 2014-02-20 09:33:21 +00:00 committed by Android (Google) Code Review
commit a514ea7e1b
2 changed files with 22 additions and 6 deletions

View File

@ -541,7 +541,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
shouldKeepUserHistoryDictionaries = true;
// TODO: Eliminate this restriction
shouldKeepPersonalizationDictionaries =
mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes();
mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes();
} else {
shouldKeepUserHistoryDictionaries = false;
shouldKeepPersonalizationDictionaries = false;

View File

@ -37,9 +37,11 @@ import com.android.inputmethod.keyboard.KeyboardSwitcher;
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 @@ public final class SubtypeSwitcher {
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;
}
}