aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-04-30 20:35:08 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2014-04-30 20:35:08 +0900
commit9ed7e47539932cd60d008ab6678a5f0413367c3b (patch)
tree2ab53f212b6b1eaa57f7738df828a781c6c39607
parentb451f270f34ab3f0511a0879499dbd054445487f (diff)
downloadlatinime-9ed7e47539932cd60d008ab6678a5f0413367c3b.tar.gz
latinime-9ed7e47539932cd60d008ab6678a5f0413367c3b.tar.xz
latinime-9ed7e47539932cd60d008ab6678a5f0413367c3b.zip
Handle user dict as an ExpandableBinaryDictionary.
Bug: 13755213 Change-Id: I2d242a3332e9633d4e41e08c0bbfafcefd814ecd
-rw-r--r--java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java4
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java29
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java3
-rw-r--r--java/src/com/android/inputmethod/latin/UserBinaryDictionary.java20
4 files changed, 23 insertions, 33 deletions
diff --git a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
index a0d76415c..6e32e74ab 100644
--- a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
@@ -29,8 +29,8 @@ public final class UserDictionaryCompatUtils {
Context.class, String.class, Integer.TYPE, String.class, Locale.class);
@SuppressWarnings("deprecation")
- public static void addWord(final Context context, final String word, final int freq,
- final String shortcut, final Locale locale) {
+ public static void addWord(final Context context, final String word,
+ final int freq, final String shortcut, final Locale locale) {
if (hasNewerAddWord()) {
CompatUtils.invoke(Words.class, null, METHOD_addWord, context, word, freq, shortcut,
locale);
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index 5238395a4..b6fcbd1d6 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -49,6 +49,7 @@ public class DictionaryFacilitatorForSuggest {
private static final int CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT = 140;
private Dictionaries mDictionaries = new Dictionaries();
+ private boolean mIsUserDictEnabled = false;
private volatile CountDownLatch mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0);
// To synchronize assigning mDictionaries to ensure closing dictionaries.
private Object mLock = new Object();
@@ -71,24 +72,21 @@ public class DictionaryFacilitatorForSuggest {
CollectionUtils.newConcurrentHashMap();
public final ConcurrentHashMap<String, ExpandableBinaryDictionary> mSubDictMap =
CollectionUtils.newConcurrentHashMap();
- // TODO: Remove sub dictionary members and use mSubDictMap.
- public final UserBinaryDictionary mUserDictionary;
public Dictionaries() {
mLocale = null;
- mUserDictionary = null;
}
public Dictionaries(final Locale locale, final Dictionary mainDict,
- final ExpandableBinaryDictionary contactsDict, final UserBinaryDictionary userDict,
+ final ExpandableBinaryDictionary contactsDict,
+ final ExpandableBinaryDictionary userDict,
final ExpandableBinaryDictionary userHistoryDict,
final ExpandableBinaryDictionary personalizationDict) {
mLocale = locale;
// Main dictionary can be asynchronously loaded.
setMainDict(mainDict);
setSubDict(Dictionary.TYPE_CONTACTS, contactsDict);
- mUserDictionary = userDict;
- setSubDict(Dictionary.TYPE_USER, mUserDictionary);
+ setSubDict(Dictionary.TYPE_USER, userDict);
setSubDict(Dictionary.TYPE_USER_HISTORY, userHistoryDict);
setSubDict(Dictionary.TYPE_PERSONALIZATION, personalizationDict);
}
@@ -176,11 +174,12 @@ public class DictionaryFacilitatorForSuggest {
}
// Open or move user dictionary.
- final UserBinaryDictionary newUserDictionary;
+ final ExpandableBinaryDictionary newUserDictionary;
if (!closeUserDictionary && mDictionaries.hasDict(Dictionary.TYPE_USER)) {
- newUserDictionary = mDictionaries.mUserDictionary;
+ newUserDictionary = mDictionaries.getSubDict(Dictionary.TYPE_USER);
} else {
newUserDictionary = new UserBinaryDictionary(context, newLocale);
+ mIsUserDictEnabled = UserBinaryDictionary.isEnabled(context);
}
// Open or move user history dictionary.
@@ -364,19 +363,15 @@ public class DictionaryFacilitatorForSuggest {
}
public boolean isUserDictionaryEnabled() {
- final UserBinaryDictionary userDictionary = mDictionaries.mUserDictionary;
- if (userDictionary == null) {
- return false;
- }
- return userDictionary.mEnabled;
+ return mIsUserDictEnabled;
}
- public void addWordToUserDictionary(String word) {
- final UserBinaryDictionary userDictionary = mDictionaries.mUserDictionary;
- if (userDictionary == null) {
+ public void addWordToUserDictionary(final Context context, final String word) {
+ final Locale locale = getLocale();
+ if (locale == null) {
return;
}
- userDictionary.addWordToUserDictionary(word);
+ UserBinaryDictionary.addWordToUserDictionary(context, locale, word);
}
public void addToUserHistory(final String suggestion, final boolean wasAutoCapitalized,
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index a77cedc48..27790d6c6 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1179,7 +1179,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} else {
wordToEdit = word;
}
- mInputLogic.mSuggest.mDictionaryFacilitator.addWordToUserDictionary(wordToEdit);
+ mInputLogic.mSuggest.mDictionaryFacilitator.addWordToUserDictionary(
+ this /* context */, wordToEdit);
}
// Callback for the {@link SuggestionStripView}, to call when the important notice strip is
diff --git a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
index 9d9ce0138..b21f30087 100644
--- a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
@@ -29,7 +29,6 @@ import android.text.TextUtils;
import android.util.Log;
import com.android.inputmethod.compat.UserDictionaryCompatUtils;
-import com.android.inputmethod.latin.utils.LocaleUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import java.io.File;
@@ -74,7 +73,6 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary {
private ContentObserver mObserver;
final private String mLocale;
final private boolean mAlsoUseMoreRestrictiveLocales;
- final public boolean mEnabled;
public UserBinaryDictionary(final Context context, final Locale locale) {
this(context, locale, false /* alsoUseMoreRestrictiveLocales */, null /* dictFile */);
@@ -120,7 +118,6 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary {
}
};
cres.registerContentObserver(Words.CONTENT_URI, true, mObserver);
- mEnabled = readIsEnabled();
reloadDictionaryIfRequired();
}
@@ -198,8 +195,8 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary {
}
}
- private boolean readIsEnabled() {
- final ContentResolver cr = mContext.getContentResolver();
+ public static boolean isEnabled(final Context context) {
+ final ContentResolver cr = context.getContentResolver();
final ContentProviderClient client = cr.acquireContentProviderClient(Words.CONTENT_URI);
if (client != null) {
client.release();
@@ -212,18 +209,15 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary {
/**
* Adds a word to the user dictionary and makes it persistent.
*
+ * @param context the context
+ * @param locale the locale
* @param word the word to add. If the word is capitalized, then the dictionary will
* recognize it as a capitalized word when searched.
*/
- public synchronized void addWordToUserDictionary(final String word) {
+ public static void addWordToUserDictionary(final Context context, final Locale locale,
+ final String word) {
// Update the user dictionary provider
- final Locale locale;
- if (USER_DICTIONARY_ALL_LANGUAGES == mLocale) {
- locale = null;
- } else {
- locale = LocaleUtils.constructLocaleFromString(mLocale);
- }
- UserDictionaryCompatUtils.addWord(mContext, word,
+ UserDictionaryCompatUtils.addWord(context, word,
HISTORICAL_DEFAULT_USER_DICTIONARY_FREQUENCY, null, locale);
}