diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 208fd13ec..f6f55819d 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -113,14 +113,15 @@ public class Suggest implements Dictionary.WordCallback { initAsynchronously(context, dictionaryResId, locale); } - /* package for test */ Suggest(Context context, File dictionary, long startOffset, long length, - Flag[] flagArray) { + /* package for test */ Suggest(final Context context, final File dictionary, + final long startOffset, final long length, final Flag[] flagArray, + final Locale locale) { initSynchronously(null, DictionaryFactory.createDictionaryForTest(context, dictionary, - startOffset, length, flagArray)); + startOffset, length, flagArray), locale); } - private void initWhitelistAndAutocorrectAndPool(final Context context) { - mWhiteListDictionary = WhitelistDictionary.init(context); + private void initWhitelistAndAutocorrectAndPool(final Context context, final Locale locale) { + mWhiteListDictionary = new WhitelistDictionary(context, locale); addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_WHITELIST, mWhiteListDictionary); mAutoCorrection = new AutoCorrection(); StringBuilderPool.ensureCapacity(mPrefMaxSuggestions, getApproxMaxWordLength()); @@ -132,14 +133,15 @@ public class Suggest implements Dictionary.WordCallback { // TODO: read the whitelist and init the pool asynchronously too. // initPool should be done asynchronously now that the pool is thread-safe. - initWhitelistAndAutocorrectAndPool(context); + initWhitelistAndAutocorrectAndPool(context, locale); } - private void initSynchronously(Context context, Dictionary mainDict) { + private void initSynchronously(final Context context, final Dictionary mainDict, + final Locale locale) { mMainDict = mainDict; addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, mainDict); addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, mainDict); - initWhitelistAndAutocorrectAndPool(context); + initWhitelistAndAutocorrectAndPool(context, locale); } private void addOrReplaceDictionary(Map dictionaries, String key, diff --git a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java index 639c96681..93474b654 100644 --- a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java +++ b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java @@ -17,6 +17,7 @@ package com.android.inputmethod.latin; import android.content.Context; +import android.content.res.Resources; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -24,6 +25,7 @@ import android.util.Pair; import com.android.inputmethod.keyboard.ProximityInfo; import java.util.HashMap; +import java.util.Locale; public class WhitelistDictionary extends Dictionary { @@ -33,22 +35,13 @@ public class WhitelistDictionary extends Dictionary { private final HashMap> mWhitelistWords = new HashMap>(); - private static final WhitelistDictionary sInstance = new WhitelistDictionary(); - - private WhitelistDictionary() { - } - - public static WhitelistDictionary init(Context context) { - synchronized (sInstance) { - if (context != null) { - // Wordlist is initialized by the proper language in Suggestion.java#init - sInstance.initWordlist( - context.getResources().getStringArray(R.array.wordlist_whitelist)); - } else { - sInstance.mWhitelistWords.clear(); - } + public WhitelistDictionary(final Context context, final Locale locale) { + final Resources res = context.getResources(); + final Locale previousLocale = LocaleUtils.setSystemLocale(res, locale); + if (context != null) { + initWordlist(context.getResources().getStringArray(R.array.wordlist_whitelist)); } - return sInstance; + LocaleUtils.setSystemLocale(res, previousLocale); } private void initWordlist(String[] wordlist) { diff --git a/tests/src/com/android/inputmethod/latin/SuggestHelper.java b/tests/src/com/android/inputmethod/latin/SuggestHelper.java index 43b8cf65f..a08933539 100644 --- a/tests/src/com/android/inputmethod/latin/SuggestHelper.java +++ b/tests/src/com/android/inputmethod/latin/SuggestHelper.java @@ -25,6 +25,7 @@ import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.LatinKeyboard; import java.io.File; +import java.util.Locale; public class SuggestHelper { protected final Suggest mSuggest; @@ -40,9 +41,10 @@ public class SuggestHelper { init(); } - protected SuggestHelper(Context context, File dictionaryPath, long startOffset, long length, - KeyboardId keyboardId) { - mSuggest = new Suggest(context, dictionaryPath, startOffset, length, null); + protected SuggestHelper(final Context context, final File dictionaryPath, + final long startOffset, final long length, final KeyboardId keyboardId, + final Locale locale) { + mSuggest = new Suggest(context, dictionaryPath, startOffset, length, null, locale); mKeyboard = new LatinKeyboard.Builder(context).load(keyboardId).build(); mKeyDetector = new KeyDetector(0); init(); diff --git a/tests/src/com/android/inputmethod/latin/SuggestTests.java b/tests/src/com/android/inputmethod/latin/SuggestTests.java index cf4558090..4080f34be 100644 --- a/tests/src/com/android/inputmethod/latin/SuggestTests.java +++ b/tests/src/com/android/inputmethod/latin/SuggestTests.java @@ -30,9 +30,10 @@ public class SuggestTests extends SuggestTestsBase { protected void setUp() throws Exception { super.setUp(); final AssetFileDescriptor dict = openTestRawResourceFd(R.raw.test); + final Locale locale = Locale.US; mHelper = new SuggestHelper( getContext(), mTestPackageFile, dict.getStartOffset(), dict.getLength(), - createKeyboardId(Locale.US, Configuration.ORIENTATION_PORTRAIT)); + createKeyboardId(locale, Configuration.ORIENTATION_PORTRAIT), locale); mHelper.setCorrectionMode(Suggest.CORRECTION_FULL_BIGRAM); } diff --git a/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java b/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java index 7efd5d05a..023e20a10 100644 --- a/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java +++ b/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java @@ -29,11 +29,12 @@ public class UserBigramSuggestHelper extends SuggestHelper { private final Context mContext; private UserBigramDictionary mUserBigram; - public UserBigramSuggestHelper(Context context, File dictionaryPath, long startOffset, - long length, int userBigramMax, int userBigramDelete, KeyboardId keyboardId) { - super(context, dictionaryPath, startOffset, length, keyboardId); + public UserBigramSuggestHelper(final Context context, final File dictionaryPath, + final long startOffset, final long length, final int userBigramMax, + final int userBigramDelete, final KeyboardId keyboardId, final Locale locale) { + super(context, dictionaryPath, startOffset, length, keyboardId, locale); mContext = context; - mUserBigram = new UserBigramDictionary(context, null, Locale.US.toString(), + mUserBigram = new UserBigramDictionary(context, null, locale.toString(), Suggest.DIC_USER); mUserBigram.setDatabaseMax(userBigramMax); mUserBigram.setDatabaseDelete(userBigramDelete); diff --git a/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java b/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java index 0b97e41fd..2bc0aabc0 100644 --- a/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java +++ b/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java @@ -33,10 +33,11 @@ public class UserBigramSuggestTests extends SuggestTestsBase { protected void setUp() throws Exception { super.setUp(); final AssetFileDescriptor dict = openTestRawResourceFd(R.raw.test); + final Locale locale = Locale.US; mHelper = new UserBigramSuggestHelper( getContext(), mTestPackageFile, dict.getStartOffset(), dict.getLength(), MAX_DATA, DELETE_DATA, - createKeyboardId(Locale.US, Configuration.ORIENTATION_PORTRAIT)); + createKeyboardId(locale, Configuration.ORIENTATION_PORTRAIT), locale); } /************************** Tests ************************/