Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d102eb80 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Remove personalization dicts for multilingual users.

Bug: 13067743
Change-Id: I1f50cb137b6054dc9442237586b70fc0aa2bf427
parent 920c40fe
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -512,7 +512,6 @@ public class DictionaryFacilitatorForSuggest {
        }
    }

    @UsedForTesting
    public void clearUserHistoryDictionary() {
        if (mUserHistoryDictionary == null) {
            return;
+20 −9
Original line number Diff line number Diff line
@@ -534,17 +534,28 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    }

    private void refreshPersonalizationDictionarySession() {
        final Suggest suggest = mInputLogic.mSuggest;
        final boolean shouldKeepUserHistoryDictionaries;
        final boolean shouldKeepPersonalizationDictionaries;
        if (mSettings.getCurrent().mUsePersonalizedDicts) {
            if (mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes()) {
                final DictionaryFacilitatorForSuggest dictionaryFacilitator =
                        (mInputLogic.mSuggest == null) ?
                                null : mInputLogic.mSuggest.mDictionaryFacilitator;
                PersonalizationDictionarySessionRegistrar.init(this, dictionaryFacilitator);
            shouldKeepUserHistoryDictionaries = true;
            // TODO: Eliminate this restriction
            shouldKeepPersonalizationDictionaries =
                    mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes();
        } else {
                PersonalizationDictionarySessionRegistrar.close(this);
            shouldKeepUserHistoryDictionaries = false;
            shouldKeepPersonalizationDictionaries = false;
        }
        } else {
            PersonalizationHelper.removeAllPersonalizedDictionaries(this);
        if (!shouldKeepUserHistoryDictionaries) {
            // Remove user history dictionaries.
            PersonalizationHelper.removeAllUserHistoryDictionaries(this);
            if (suggest != null) {
                suggest.mDictionaryFacilitator.clearUserHistoryDictionary();
            }
        }
        if (!shouldKeepPersonalizationDictionaries) {
            // Remove personalization dictionaries.
            PersonalizationHelper.removeAllPersonalizationDictionaries(this);
            PersonalizationDictionarySessionRegistrar.resetAll(this);
        }
    }
+6 −3
Original line number Diff line number Diff line
@@ -93,13 +93,16 @@ public class PersonalizationHelper {
        }
    }

    public static void removeAllPersonalizedDictionaries(final Context context) {
        removeAllDictionaries(context, sLangUserHistoryDictCache,
                UserHistoryDictionary.NAME);
    public static void removeAllPersonalizationDictionaries(final Context context) {
        removeAllDictionaries(context, sLangPersonalizationDictCache,
                PersonalizationDictionary.NAME);
    }

    public static void removeAllUserHistoryDictionaries(final Context context) {
        removeAllDictionaries(context, sLangUserHistoryDictCache,
                UserHistoryDictionary.NAME);
    }

    private static <T extends DecayingExpandableBinaryDictionaryBase> void removeAllDictionaries(
            final Context context, final ConcurrentHashMap<String, SoftReference<T>> dictionaryMap,
            final String dictNamePrefix) {