From f22571e2d9756294fa2fa332a395c06010f54d92 Mon Sep 17 00:00:00 2001 From: Dan Zivkovic Date: Fri, 1 May 2015 12:45:07 -0700 Subject: [PATCH] Delete history on upgrade in LatinIME. Bug 20733902. Change-Id: Ibe27e6cafe4db87ba62d7df708229e0d8564ffa8 --- .../latin/DictionaryFacilitator.java | 6 ++++- .../latin/DictionaryFacilitatorImpl.java | 22 ++++++++++++++----- .../latin/SystemBroadcastReceiver.java | 19 +++++++++++++++- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java index 9d8bdb2d1..9d30ccdeb 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java @@ -107,6 +107,10 @@ public interface DictionaryFacilitator { Locale getLocale(); + boolean usesContacts(); + + String getAccount(); + void resetDictionaries( final Context context, final Locale newLocale, @@ -162,7 +166,7 @@ public interface DictionaryFacilitator { boolean isValidSuggestionWord(final String word); - void clearUserHistoryDictionary(final Context context); + boolean clearUserHistoryDictionary(final Context context); String dump(final Context context); diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java index 6508eb289..6649d5574 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java @@ -234,6 +234,16 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator { return mDictionaryGroup.mLocale; } + @Override + public boolean usesContacts() { + return mDictionaryGroup.getSubDict(Dictionary.TYPE_CONTACTS) != null; + } + + @Override + public String getAccount() { + return null; + } + @Nullable private static ExpandableBinaryDictionary getSubDict(final String dictType, final Context context, final Locale locale, final File dictFile, @@ -660,16 +670,18 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator { return maxFreq; } - private void clearSubDictionary(final String dictName) { + private boolean clearSubDictionary(final String dictName) { final ExpandableBinaryDictionary dictionary = mDictionaryGroup.getSubDict(dictName); - if (dictionary != null) { - dictionary.clear(); + if (dictionary == null) { + return false; } + dictionary.clear(); + return true; } @Override - public void clearUserHistoryDictionary(final Context context) { - clearSubDictionary(Dictionary.TYPE_USER_HISTORY); + public boolean clearUserHistoryDictionary(final Context context) { + return clearSubDictionary(Dictionary.TYPE_USER_HISTORY); } @Override diff --git a/java/src/com/android/inputmethod/latin/SystemBroadcastReceiver.java b/java/src/com/android/inputmethod/latin/SystemBroadcastReceiver.java index a093ec6db..26c5e0034 100644 --- a/java/src/com/android/inputmethod/latin/SystemBroadcastReceiver.java +++ b/java/src/com/android/inputmethod/latin/SystemBroadcastReceiver.java @@ -29,13 +29,14 @@ import android.util.Log; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; -import com.android.inputmethod.dictionarypack.CommonPreferences; import com.android.inputmethod.dictionarypack.DictionaryPackConstants; import com.android.inputmethod.keyboard.KeyboardLayoutSet; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.setup.SetupActivity; import com.android.inputmethod.latin.utils.UncachedInputMethodManagerUtils; +import java.util.Locale; + /** * This class detects the {@link Intent#ACTION_MY_PACKAGE_REPLACED} broadcast intent when this IME * package has been replaced by a newer version of the same package. This class also detects @@ -76,6 +77,22 @@ public final class SystemBroadcastReceiver extends BroadcastReceiver { richImm.setAdditionalInputMethodSubtypes(additionalSubtypes); toggleAppIcon(context); downloadLatestDictionaries(context); + // TODO: This is only for dogfood builds. Remove this from the final release. + DictionaryFacilitator keyboardFacilitator = + DictionaryFacilitatorProvider.getDictionaryFacilitator(false); + boolean historyCleared = keyboardFacilitator.clearUserHistoryDictionary(context); + Locale keyboardLocale = keyboardFacilitator.getLocale(); + if (historyCleared && keyboardLocale != null) { + keyboardFacilitator.resetDictionaries( + context, + keyboardLocale, + keyboardFacilitator.usesContacts(), + true /* history */, + true /* force */, + keyboardFacilitator.getAccount(), + "" /* prefix */, + null /* listener */); + } } else if (Intent.ACTION_BOOT_COMPLETED.equals(intentAction)) { Log.i(TAG, "Boot has been completed"); toggleAppIcon(context);