diff options
author | 2015-05-19 10:45:19 -0700 | |
---|---|---|
committer | 2015-05-19 10:45:19 -0700 | |
commit | 0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de (patch) | |
tree | c71e1cf6f00730afd0964a039093f73b4ca417f5 /java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java | |
parent | 8796012ac7b334c2632a451b825ba3fe692a73c8 (diff) | |
download | latinime-0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de.tar.gz latinime-0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de.tar.xz latinime-0e15ff6b48adfe5d2ff8ac988314f3d5eaaa43de.zip |
Fix on-commit bug in AOSP keyboard.
Bug 21272977.
Change-Id: Id561040c29a7f2576cd9ef0514c31751a4360ef8
Diffstat (limited to 'java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java | 29 |
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; } |