diff options
author | 2013-12-25 11:44:16 +0900 | |
---|---|---|
committer | 2013-12-25 11:44:16 +0900 | |
commit | f1457e7a221082688b6399853e84e77948633c7b (patch) | |
tree | bf5e3e4d77e9c63113cd3a7f0e36ed9752ba18e6 /java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java | |
parent | afca1ddd233c03d79433931a0b6ba97ed22663ed (diff) | |
download | latinime-f1457e7a221082688b6399853e84e77948633c7b.tar.gz latinime-f1457e7a221082688b6399853e84e77948633c7b.tar.xz latinime-f1457e7a221082688b6399853e84e77948633c7b.zip |
Remove personalized dicts when the option is turned off.
Bug: 11757851
Change-Id: I94f32859d862fe41e39845ab2bfc2d396c6aea0f
Diffstat (limited to 'java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java index d55cae132..38b22e5f6 100644 --- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java +++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java @@ -17,10 +17,13 @@ package com.android.inputmethod.latin.personalization; import com.android.inputmethod.latin.utils.CollectionUtils; +import com.android.inputmethod.latin.utils.FileUtils; import android.content.Context; import android.util.Log; +import java.io.File; +import java.io.FilenameFilter; import java.lang.ref.SoftReference; import java.util.Locale; import java.util.concurrent.ConcurrentHashMap; @@ -96,4 +99,47 @@ public class PersonalizationHelper { return dict; } } + + public static void removeAllPersonalizedDictionaries(final Context context) { + removeAllDictionaries(context, sLangUserHistoryDictCache, + UserHistoryDictionary.NAME); + removeAllDictionaries(context, sLangPersonalizationDictCache, + PersonalizationDictionary.NAME); + } + + private static <T extends DecayingExpandableBinaryDictionaryBase> void removeAllDictionaries( + final Context context, final ConcurrentHashMap<String, SoftReference<T>> dictionaryMap, + final String dictNamePrefix) { + synchronized (dictionaryMap) { + for (final ConcurrentHashMap.Entry<String, SoftReference<T>> entry + : dictionaryMap.entrySet()) { + if (entry.getValue() != null) { + final DecayingExpandableBinaryDictionaryBase dict = entry.getValue().get(); + if (dict != null) { + dict.clearAndFlushDictionary(); + } + } + } + dictionaryMap.clear(); + if (!FileUtils.deleteFilteredFiles( + context.getFilesDir(), new DictFilter(dictNamePrefix))) { + Log.e(TAG, "Cannot remove all existing dictionary files. filesDir: " + + context.getFilesDir().getAbsolutePath() + ", dictNamePrefix: " + + dictNamePrefix); + } + } + } + + private static class DictFilter implements FilenameFilter { + private final String mName; + + DictFilter(final String name) { + mName = name; + } + + @Override + public boolean accept(final File dir, final String name) { + return name.startsWith(mName); + } + } } |