Quit recording LastUserHistoryWriteTime.

Change-Id: I0f2b408b4976d8119c932654e23836803d42c568
This commit is contained in:
Keisuke Kuroyanagi 2013-12-02 18:45:32 +09:00
parent 6e587b7f17
commit cffe4d2d0f
10 changed files with 34 additions and 169 deletions

View file

@ -53,6 +53,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
/** Whether to print debug output to log */ /** Whether to print debug output to log */
private static boolean DEBUG = false; private static boolean DEBUG = false;
private static final boolean DBG_STRESS_TEST = false;
private static final int TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS = 100; private static final int TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS = 100;
@ -496,6 +497,16 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
+ mFilenameDictionaryUpdateController.mLastUpdateRequestTime + " update=" + mFilenameDictionaryUpdateController.mLastUpdateRequestTime + " update="
+ mFilenameDictionaryUpdateController.mLastUpdateTime); + mFilenameDictionaryUpdateController.mLastUpdateTime);
} }
if (DBG_STRESS_TEST) {
// Test if this class does not cause problems when it takes long time to load binary
// dictionary.
try {
Log.w(TAG, "Start stress in loading: " + mFilename);
Thread.sleep(15000);
Log.w(TAG, "End stress in loading");
} catch (InterruptedException e) {
}
}
final File file = new File(mContext.getFilesDir(), mFilename final File file = new File(mContext.getFilesDir(), mFilename
+ getFileNameExtentionToOpenDict()); + getFileNameExtentionToOpenDict());

View file

@ -649,14 +649,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
mUserHistoryDictionary = PersonalizationHelper.getUserHistoryDictionary( mUserHistoryDictionary = PersonalizationHelper.getUserHistoryDictionary(this, localeStr);
this, localeStr, prefs);
newSuggest.setUserHistoryDictionary(mUserHistoryDictionary); newSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
mPersonalizationDictionary = PersonalizationHelper mPersonalizationDictionary =
.getPersonalizationDictionary(this, localeStr, prefs); PersonalizationHelper.getPersonalizationDictionary(this, localeStr);
newSuggest.setPersonalizationDictionary(mPersonalizationDictionary); newSuggest.setPersonalizationDictionary(mPersonalizationDictionary);
mPersonalizationPredictionDictionary = PersonalizationHelper mPersonalizationPredictionDictionary =
.getPersonalizationPredictionDictionary(this, localeStr, prefs); PersonalizationHelper.getPersonalizationPredictionDictionary(this, localeStr);
newSuggest.setPersonalizationPredictionDictionary(mPersonalizationPredictionDictionary); newSuggest.setPersonalizationPredictionDictionary(mPersonalizationPredictionDictionary);
final Suggest oldSuggest = mSuggest; final Suggest oldSuggest = mSuggest;

View file

@ -17,7 +17,6 @@
package com.android.inputmethod.latin.personalization; package com.android.inputmethod.latin.personalization;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log; import android.util.Log;
import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.annotations.UsedForTesting;
@ -25,11 +24,9 @@ import com.android.inputmethod.latin.BinaryDictionary.LanguageModelParam;
import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.Dictionary; import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.ExpandableBinaryDictionary; import com.android.inputmethod.latin.ExpandableBinaryDictionary;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.makedict.DictDecoder; import com.android.inputmethod.latin.makedict.DictDecoder;
import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.FormatSpec;
import com.android.inputmethod.latin.makedict.UnsupportedFormatException; import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.CollectionUtils;
import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils; import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils;
import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils.OnAddWordListener; import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils.OnAddWordListener;
@ -47,9 +44,7 @@ import java.util.Map;
public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableBinaryDictionary { public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableBinaryDictionary {
private static final String TAG = DecayingExpandableBinaryDictionaryBase.class.getSimpleName(); private static final String TAG = DecayingExpandableBinaryDictionaryBase.class.getSimpleName();
public static final boolean DBG_SAVE_RESTORE = false; public static final boolean DBG_SAVE_RESTORE = false;
private static final boolean DBG_STRESS_TEST = false;
private static final boolean DBG_DUMP_ON_CLOSE = false; private static final boolean DBG_DUMP_ON_CLOSE = false;
private static final boolean PROFILE_SAVE_RESTORE = LatinImeLogger.sDBG;
/** Any pair being typed or picked */ /** Any pair being typed or picked */
public static final int FREQUENCY_FOR_TYPED = 2; public static final int FREQUENCY_FOR_TYPED = 2;
@ -64,8 +59,6 @@ public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableB
private final String mFileName; private final String mFileName;
private final SharedPreferences mPrefs;
private final ArrayList<PersonalizationDictionaryUpdateSession> mSessions = private final ArrayList<PersonalizationDictionaryUpdateSession> mSessions =
CollectionUtils.newArrayList(); CollectionUtils.newArrayList();
@ -73,12 +66,10 @@ public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableB
@UsedForTesting boolean mIsTest = false; @UsedForTesting boolean mIsTest = false;
/* package */ DecayingExpandableBinaryDictionaryBase(final Context context, /* package */ DecayingExpandableBinaryDictionaryBase(final Context context,
final String locale, final SharedPreferences sp, final String dictionaryType, final String locale, final String dictionaryType, final String fileName) {
final String fileName) {
super(context, fileName, dictionaryType, true); super(context, fileName, dictionaryType, true);
mLocale = locale; mLocale = locale;
mFileName = fileName; mFileName = fileName;
mPrefs = sp;
if (mLocale != null && mLocale.length() > 1) { if (mLocale != null && mLocale.length() > 1) {
reloadDictionaryIfRequired(); reloadDictionaryIfRequired();
} }
@ -92,7 +83,6 @@ public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableB
// Flush pending writes. // Flush pending writes.
// TODO: Remove after this class become to use a dynamic binary dictionary. // TODO: Remove after this class become to use a dynamic binary dictionary.
asyncFlashAllBinaryDictionary(); asyncFlashAllBinaryDictionary();
Settings.writeLastUserHistoryWriteTime(mPrefs, mLocale);
} }
@Override @Override
@ -171,67 +161,7 @@ public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableB
@Override @Override
protected void loadDictionaryAsync() { protected void loadDictionaryAsync() {
final int[] profTotalCount = { 0 }; // Never loaded to memory in Java side.
final String locale = getLocale();
if (DBG_STRESS_TEST) {
try {
Log.w(TAG, "Start stress in loading: " + locale);
Thread.sleep(15000);
Log.w(TAG, "End stress in loading");
} catch (InterruptedException e) {
}
}
final long last = Settings.readLastUserHistoryWriteTime(mPrefs, locale);
final long now = System.currentTimeMillis();
final ExpandableBinaryDictionary dictionary = this;
final OnAddWordListener listener = new OnAddWordListener() {
@Override
public void setUnigram(final String word, final String shortcutTarget,
final int frequency, final int shortcutFreq) {
if (DBG_SAVE_RESTORE) {
Log.d(TAG, "load unigram: " + word + "," + frequency);
}
addWord(word, shortcutTarget, frequency, shortcutFreq, false /* isNotAWord */);
++profTotalCount[0];
}
@Override
public void setBigram(final String word0, final String word1, final int frequency) {
if (word0.length() < Constants.DICTIONARY_MAX_WORD_LENGTH
&& word1.length() < Constants.DICTIONARY_MAX_WORD_LENGTH) {
if (DBG_SAVE_RESTORE) {
Log.d(TAG, "load bigram: " + word0 + "," + word1 + "," + frequency);
}
++profTotalCount[0];
addBigram(word0, word1, frequency, last);
}
}
};
// Load the dictionary from binary file
final File dictFile = new File(mContext.getFilesDir(), mFileName);
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(dictFile,
DictDecoder.USE_BYTEARRAY);
if (dictDecoder == null) {
// This is an expected condition: we don't have a user history dictionary for this
// language yet. It will be created sometime later.
return;
}
try {
dictDecoder.openDictBuffer();
UserHistoryDictIOUtils.readDictionaryBinary(dictDecoder, listener);
} catch (IOException e) {
Log.d(TAG, "IOException on opening a bytebuffer", e);
} catch (UnsupportedFormatException e) {
Log.d(TAG, "Unsupported format, can't read the dictionary", e);
} finally {
if (PROFILE_SAVE_RESTORE) {
final long diff = System.currentTimeMillis() - now;
Log.d(TAG, "PROF: Load UserHistoryDictionary: "
+ locale + ", " + diff + "ms. load " + profTotalCount[0] + "entries.");
}
}
} }
protected String getLocale() { protected String getLocale() {

View file

@ -36,8 +36,7 @@ public class PersonalizationDictionary extends ExpandableBinaryDictionary {
/** Locale for which this user history dictionary is storing words */ /** Locale for which this user history dictionary is storing words */
private final String mLocale; private final String mLocale;
public PersonalizationDictionary(final Context context, final String locale, public PersonalizationDictionary(final Context context, final String locale) {
final SharedPreferences prefs) {
// TODO: Make isUpdatable true. // TODO: Make isUpdatable true.
super(context, getFilenameWithLocale(NAME, locale), Dictionary.TYPE_PERSONALIZATION, super(context, getFilenameWithLocale(NAME, locale), Dictionary.TYPE_PERSONALIZATION,
false /* isUpdatable */); false /* isUpdatable */);

View file

@ -41,7 +41,7 @@ public class PersonalizationHelper {
CollectionUtils.newConcurrentHashMap(); CollectionUtils.newConcurrentHashMap();
public static UserHistoryDictionary getUserHistoryDictionary( public static UserHistoryDictionary getUserHistoryDictionary(
final Context context, final String locale, final SharedPreferences sp) { final Context context, final String locale) {
synchronized (sLangUserHistoryDictCache) { synchronized (sLangUserHistoryDictCache) {
if (sLangUserHistoryDictCache.containsKey(locale)) { if (sLangUserHistoryDictCache.containsKey(locale)) {
final SoftReference<UserHistoryDictionary> ref = final SoftReference<UserHistoryDictionary> ref =
@ -55,7 +55,7 @@ public class PersonalizationHelper {
return dict; return dict;
} }
} }
final UserHistoryDictionary dict = new UserHistoryDictionary(context, locale, sp); final UserHistoryDictionary dict = new UserHistoryDictionary(context, locale);
sLangUserHistoryDictCache.put(locale, new SoftReference<UserHistoryDictionary>(dict)); sLangUserHistoryDictCache.put(locale, new SoftReference<UserHistoryDictionary>(dict));
return dict; return dict;
} }
@ -76,17 +76,14 @@ public class PersonalizationHelper {
public static void registerPersonalizationDictionaryUpdateSession(final Context context, public static void registerPersonalizationDictionaryUpdateSession(final Context context,
final PersonalizationDictionaryUpdateSession session, String locale) { final PersonalizationDictionaryUpdateSession session, String locale) {
final PersonalizationPredictionDictionary predictionDictionary = final PersonalizationPredictionDictionary predictionDictionary =
getPersonalizationPredictionDictionary(context, locale, getPersonalizationPredictionDictionary(context, locale);
PreferenceManager.getDefaultSharedPreferences(context));
predictionDictionary.registerUpdateSession(session); predictionDictionary.registerUpdateSession(session);
final PersonalizationDictionary dictionary = final PersonalizationDictionary dictionary = getPersonalizationDictionary(context, locale);
getPersonalizationDictionary(context, locale,
PreferenceManager.getDefaultSharedPreferences(context));
dictionary.registerUpdateSession(session); dictionary.registerUpdateSession(session);
} }
public static PersonalizationDictionary getPersonalizationDictionary( public static PersonalizationDictionary getPersonalizationDictionary(
final Context context, final String locale, final SharedPreferences sp) { final Context context, final String locale) {
synchronized (sLangPersonalizationDictCache) { synchronized (sLangPersonalizationDictCache) {
if (sLangPersonalizationDictCache.containsKey(locale)) { if (sLangPersonalizationDictCache.containsKey(locale)) {
final SoftReference<PersonalizationDictionary> ref = final SoftReference<PersonalizationDictionary> ref =
@ -99,8 +96,7 @@ public class PersonalizationHelper {
return dict; return dict;
} }
} }
final PersonalizationDictionary dict = final PersonalizationDictionary dict = new PersonalizationDictionary(context, locale);
new PersonalizationDictionary(context, locale, sp);
sLangPersonalizationDictCache.put( sLangPersonalizationDictCache.put(
locale, new SoftReference<PersonalizationDictionary>(dict)); locale, new SoftReference<PersonalizationDictionary>(dict));
return dict; return dict;
@ -108,7 +104,7 @@ public class PersonalizationHelper {
} }
public static PersonalizationPredictionDictionary getPersonalizationPredictionDictionary( public static PersonalizationPredictionDictionary getPersonalizationPredictionDictionary(
final Context context, final String locale, final SharedPreferences sp) { final Context context, final String locale) {
synchronized (sLangPersonalizationPredictionDictCache) { synchronized (sLangPersonalizationPredictionDictCache) {
if (sLangPersonalizationPredictionDictCache.containsKey(locale)) { if (sLangPersonalizationPredictionDictCache.containsKey(locale)) {
final SoftReference<PersonalizationPredictionDictionary> ref = final SoftReference<PersonalizationPredictionDictionary> ref =
@ -122,7 +118,7 @@ public class PersonalizationHelper {
} }
} }
final PersonalizationPredictionDictionary dict = final PersonalizationPredictionDictionary dict =
new PersonalizationPredictionDictionary(context, locale, sp); new PersonalizationPredictionDictionary(context, locale);
sLangPersonalizationPredictionDictCache.put( sLangPersonalizationPredictionDictCache.put(
locale, new SoftReference<PersonalizationPredictionDictionary>(dict)); locale, new SoftReference<PersonalizationPredictionDictionary>(dict));
return dict; return dict;

View file

@ -20,14 +20,12 @@ import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.ExpandableBinaryDictionary; import com.android.inputmethod.latin.ExpandableBinaryDictionary;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
public class PersonalizationPredictionDictionary extends DecayingExpandableBinaryDictionaryBase { public class PersonalizationPredictionDictionary extends DecayingExpandableBinaryDictionaryBase {
private static final String NAME = PersonalizationPredictionDictionary.class.getSimpleName(); private static final String NAME = PersonalizationPredictionDictionary.class.getSimpleName();
/* package */ PersonalizationPredictionDictionary(final Context context, final String locale, /* package */ PersonalizationPredictionDictionary(final Context context, final String locale) {
final SharedPreferences sp) { super(context, locale, Dictionary.TYPE_PERSONALIZATION_PREDICTION_IN_JAVA,
super(context, locale, sp, Dictionary.TYPE_PERSONALIZATION_PREDICTION_IN_JAVA,
getDictionaryFileName(locale)); getDictionaryFileName(locale));
} }

View file

@ -20,7 +20,6 @@ import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.ExpandableBinaryDictionary; import com.android.inputmethod.latin.ExpandableBinaryDictionary;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
/** /**
* Locally gathers stats about the words user types and various other signals like auto-correction * Locally gathers stats about the words user types and various other signals like auto-correction
@ -29,9 +28,8 @@ import android.content.SharedPreferences;
public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBase { public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBase {
/* package for tests */ static final String NAME = /* package for tests */ static final String NAME =
UserHistoryDictionary.class.getSimpleName(); UserHistoryDictionary.class.getSimpleName();
/* package */ UserHistoryDictionary(final Context context, final String locale, /* package */ UserHistoryDictionary(final Context context, final String locale) {
final SharedPreferences sp) { super(context, locale, Dictionary.TYPE_USER_HISTORY, getDictionaryFileName(locale));
super(context, locale, sp, Dictionary.TYPE_USER_HISTORY, getDictionaryFileName(locale));
} }
private static String getDictionaryFileName(final String locale) { private static String getDictionaryFileName(final String locale) {

View file

@ -53,8 +53,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold"; public static final String PREF_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold";
public static final String PREF_SHOW_SUGGESTIONS_SETTING = "show_suggestions_setting"; public static final String PREF_SHOW_SUGGESTIONS_SETTING = "show_suggestions_setting";
public static final String PREF_MISC_SETTINGS = "misc_settings"; public static final String PREF_MISC_SETTINGS = "misc_settings";
public static final String PREF_LAST_USER_DICTIONARY_WRITE_TIME =
"last_user_dictionary_write_time";
public static final String PREF_ADVANCED_SETTINGS = "pref_advanced_settings"; public static final String PREF_ADVANCED_SETTINGS = "pref_advanced_settings";
public static final String PREF_KEY_USE_CONTACTS_DICT = "pref_key_use_contacts_dict"; public static final String PREF_KEY_USE_CONTACTS_DICT = "pref_key_use_contacts_dict";
public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD = public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD =
@ -333,25 +331,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
return prefs.getBoolean(DebugSettings.PREF_USABILITY_STUDY_MODE, true); return prefs.getBoolean(DebugSettings.PREF_USABILITY_STUDY_MODE, true);
} }
public static long readLastUserHistoryWriteTime(final SharedPreferences prefs,
final String locale) {
final String str = prefs.getString(PREF_LAST_USER_DICTIONARY_WRITE_TIME, "");
final HashMap<String, Long> map = LocaleUtils.localeAndTimeStrToHashMap(str);
if (map.containsKey(locale)) {
return map.get(locale);
}
return 0;
}
public static void writeLastUserHistoryWriteTime(final SharedPreferences prefs,
final String locale) {
final String oldStr = prefs.getString(PREF_LAST_USER_DICTIONARY_WRITE_TIME, "");
final HashMap<String, Long> map = LocaleUtils.localeAndTimeStrToHashMap(oldStr);
map.put(locale, System.currentTimeMillis());
final String newStr = LocaleUtils.localeAndTimeHashMapToStr(map);
prefs.edit().putString(PREF_LAST_USER_DICTIONARY_WRITE_TIME, newStr).apply();
}
public static boolean readUseFullscreenMode(final Resources res) { public static boolean readUseFullscreenMode(final Resources res) {
return res.getBoolean(R.bool.config_use_fullscreen_mode); return res.getBoolean(R.bool.config_use_fullscreen_mode);
} }

View file

@ -30,9 +30,6 @@ import java.util.Locale;
* dictionary pack. * dictionary pack.
*/ */
public final class LocaleUtils { public final class LocaleUtils {
private static final HashMap<String, Long> EMPTY_LT_HASH_MAP = CollectionUtils.newHashMap();
private static final String LOCALE_AND_TIME_STR_SEPARATER = ",";
private LocaleUtils() { private LocaleUtils() {
// Intentional empty constructor for utility class. // Intentional empty constructor for utility class.
} }
@ -188,38 +185,4 @@ public final class LocaleUtils {
return retval; return retval;
} }
} }
public static HashMap<String, Long> localeAndTimeStrToHashMap(String str) {
if (TextUtils.isEmpty(str)) {
return EMPTY_LT_HASH_MAP;
}
final String[] ss = str.split(LOCALE_AND_TIME_STR_SEPARATER);
final int N = ss.length;
if (N < 2 || N % 2 != 0) {
return EMPTY_LT_HASH_MAP;
}
final HashMap<String, Long> retval = CollectionUtils.newHashMap();
for (int i = 0; i < N / 2; ++i) {
final String localeStr = ss[i * 2];
final long time = Long.valueOf(ss[i * 2 + 1]);
retval.put(localeStr, time);
}
return retval;
}
public static String localeAndTimeHashMapToStr(HashMap<String, Long> map) {
if (map == null || map.isEmpty()) {
return "";
}
final StringBuilder builder = new StringBuilder();
for (String localeStr : map.keySet()) {
if (builder.length() > 0) {
builder.append(LOCALE_AND_TIME_STR_SEPARATER);
}
final Long time = map.get(localeStr);
builder.append(localeStr).append(LOCALE_AND_TIME_STR_SEPARATER);
builder.append(String.valueOf(time));
}
return builder.toString();
}
} }

View file

@ -16,8 +16,6 @@
package com.android.inputmethod.latin.personalization; package com.android.inputmethod.latin.personalization;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.test.AndroidTestCase; import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.LargeTest;
import android.util.Log; import android.util.Log;
@ -38,7 +36,6 @@ import java.util.concurrent.TimeUnit;
@LargeTest @LargeTest
public class UserHistoryDictionaryTests extends AndroidTestCase { public class UserHistoryDictionaryTests extends AndroidTestCase {
private static final String TAG = UserHistoryDictionaryTests.class.getSimpleName(); private static final String TAG = UserHistoryDictionaryTests.class.getSimpleName();
private SharedPreferences mPrefs;
private static final String[] CHARACTERS = { private static final String[] CHARACTERS = {
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
@ -48,11 +45,6 @@ public class UserHistoryDictionaryTests extends AndroidTestCase {
private static final int MIN_USER_HISTORY_DICTIONARY_FILE_SIZE = 1000; private static final int MIN_USER_HISTORY_DICTIONARY_FILE_SIZE = 1000;
private static final int WAIT_TERMINATING_IN_MILLISECONDS = 100; private static final int WAIT_TERMINATING_IN_MILLISECONDS = 100;
@Override
public void setUp() {
mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
}
/** /**
* Generates a random word. * Generates a random word.
*/ */
@ -92,7 +84,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase {
final List<String> words = generateWords(numberOfWords, random); final List<String> words = generateWords(numberOfWords, random);
final UserHistoryDictionary dict = final UserHistoryDictionary dict =
PersonalizationHelper.getUserHistoryDictionary(getContext(), PersonalizationHelper.getUserHistoryDictionary(getContext(),
testFilenameSuffix /* locale */, mPrefs); testFilenameSuffix /* locale */);
// Add random words to the user history dictionary. // Add random words to the user history dictionary.
addToDict(dict, words); addToDict(dict, words);
if (checkContents) { if (checkContents) {
@ -116,7 +108,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase {
private void clearHistory(final String testFilenameSuffix) { private void clearHistory(final String testFilenameSuffix) {
final UserHistoryDictionary dict = final UserHistoryDictionary dict =
PersonalizationHelper.getUserHistoryDictionary(getContext(), PersonalizationHelper.getUserHistoryDictionary(getContext(),
testFilenameSuffix /* locale */, mPrefs); testFilenameSuffix /* locale */);
dict.clearAndFlushDictionary(); dict.clearAndFlushDictionary();
dict.close(); dict.close();
} }
@ -129,7 +121,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase {
try { try {
final UserHistoryDictionary dict = final UserHistoryDictionary dict =
PersonalizationHelper.getUserHistoryDictionary(getContext(), PersonalizationHelper.getUserHistoryDictionary(getContext(),
testFilenameSuffix, mPrefs); testFilenameSuffix);
dict.shutdownExecutorForTests(); dict.shutdownExecutorForTests();
while (!dict.isTerminatedForTests()) { while (!dict.isTerminatedForTests()) {
Thread.sleep(WAIT_TERMINATING_IN_MILLISECONDS); Thread.sleep(WAIT_TERMINATING_IN_MILLISECONDS);