Loading java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java +12 −17 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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); } Loading Loading @@ -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. Loading Loading @@ -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, Loading java/src/com/android/inputmethod/latin/LatinIME.java +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading java/src/com/android/inputmethod/latin/UserBinaryDictionary.java +7 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */); Loading Loading @@ -120,7 +118,6 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary { } }; cres.registerContentObserver(Words.CONTENT_URI, true, mObserver); mEnabled = readIsEnabled(); reloadDictionaryIfRequired(); } Loading Loading @@ -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(); Loading @@ -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); } Loading Loading
java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading
java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java +12 −17 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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); } Loading Loading @@ -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. Loading Loading @@ -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, Loading
java/src/com/android/inputmethod/latin/LatinIME.java +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
java/src/com/android/inputmethod/latin/UserBinaryDictionary.java +7 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */); Loading Loading @@ -120,7 +118,6 @@ public class UserBinaryDictionary extends ExpandableBinaryDictionary { } }; cres.registerContentObserver(Words.CONTENT_URI, true, mObserver); mEnabled = readIsEnabled(); reloadDictionaryIfRequired(); } Loading Loading @@ -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(); Loading @@ -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); } Loading