aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Zivkovic <zivkovic@google.com>2015-05-19 10:45:19 -0700
committerDan Zivkovic <zivkovic@google.com>2015-05-19 10:45:19 -0700
commit0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de (patch)
treec71e1cf6f00730afd0964a039093f73b4ca417f5
parent8796012ac7b334c2632a451b825ba3fe692a73c8 (diff)
downloadlatinime-0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de.tar.gz
latinime-0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de.tar.xz
latinime-0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de.zip
Fix on-commit bug in AOSP keyboard.
Bug 21272977. Change-Id: Id561040c29a7f2576cd9ef0514c31751a4360ef8
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java29
1 files changed, 23 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
index 63064ba3e..c7115c9d9 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
@@ -27,6 +27,7 @@ import com.android.inputmethod.latin.NgramContext.WordInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.common.ComposedData;
import com.android.inputmethod.latin.common.Constants;
+import com.android.inputmethod.latin.common.StringUtils;
import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
import com.android.inputmethod.latin.utils.ExecutorUtils;
@@ -509,10 +510,27 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
}
}
- private void putWordIntoValidSpellingWordCache(final String caller, final String word) {
- final String spellingWord = word.toLowerCase(getLocale());
- final boolean isValid = isValidSpellingWord(spellingWord);
- mValidSpellingWordWriteCache.put(spellingWord, isValid);
+ private void putWordIntoValidSpellingWordCache(
+ @Nonnull final String caller,
+ @Nonnull final String originalWord) {
+ if (mValidSpellingWordWriteCache == null) {
+ return;
+ }
+
+ final String lowerCaseWord = originalWord.toLowerCase(getLocale());
+ final boolean lowerCaseValid = isValidSpellingWord(lowerCaseWord);
+ mValidSpellingWordWriteCache.put(lowerCaseWord, lowerCaseValid);
+
+ final String capitalWord =
+ StringUtils.capitalizeFirstAndDowncaseRest(originalWord, getLocale());
+ final boolean capitalValid;
+ if (lowerCaseValid) {
+ // The lower case form of the word is valid, so the upper case must be valid.
+ capitalValid = true;
+ } else {
+ capitalValid = isValidSpellingWord(capitalWord);
+ }
+ mValidSpellingWordWriteCache.put(capitalWord, capitalValid);
}
private void addWordToUserHistory(final DictionaryGroup dictionaryGroup,
@@ -620,8 +638,7 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
public boolean isValidSpellingWord(final String word) {
if (mValidSpellingWordReadCache != null) {
- final String spellingWord = word.toLowerCase(getLocale());
- final Boolean cachedValue = mValidSpellingWordReadCache.get(spellingWord);
+ final Boolean cachedValue = mValidSpellingWordReadCache.get(word);
if (cachedValue != null) {
return cachedValue;
}