Loading java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +1 −1 Original line number Diff line number Diff line Loading @@ -750,7 +750,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { // TODO: Implement BinaryDictionary.isInDictionary(). @UsedForTesting public boolean isInDictionaryForTests(final String word) { public boolean isInUnderlyingBinaryDictionaryForTests(final String word) { final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>(); getExecutor(mDictName).executePrioritized(new Runnable() { @Override Loading java/src/com/android/inputmethod/latin/Suggest.java +17 −5 Original line number Diff line number Diff line Loading @@ -127,21 +127,33 @@ public final class Suggest { mDictionaryFacilitator.getSuggestions(wordComposerForLookup, prevWordForBigram, proximityInfo, blockOffensiveWords, additionalFeaturesOptions, SESSION_TYPING, suggestionsSet); final String firstSuggestion; final String whitelistedWord; if (suggestionsSet.isEmpty()) { whitelistedWord = null; } else if (SuggestedWordInfo.KIND_WHITELIST != suggestionsSet.first().mKind) { whitelistedWord = firstSuggestion = null; } else { final SuggestedWordInfo firstSuggestedWordInfo = suggestionsSet.first(); firstSuggestion = firstSuggestedWordInfo.mWord; if (SuggestedWordInfo.KIND_WHITELIST != firstSuggestedWordInfo.mKind) { whitelistedWord = null; } else { whitelistedWord = suggestionsSet.first().mWord; whitelistedWord = firstSuggestion; } } // The word can be auto-corrected if it has a whitelist entry that is not itself, // or if it's a 2+ characters non-word (i.e. it's not in the dictionary). // We allow auto-correction if we have a whitelisted word, or if the word is not a valid // word of more than 1 char, except if the first suggestion is the same as the typed string // because in this case if it's strong enough to auto-correct that will mistakenly designate // the second candidate for auto-correction. // TODO: stop relying on indices to find where is the auto-correction in the suggested // words, and correct this test. final boolean allowsToBeAutoCorrected = (null != whitelistedWord && !whitelistedWord.equals(consideredWord)) || (consideredWord.length() > 1 && !mDictionaryFacilitator.isValidWord( consideredWord, wordComposer.isFirstCharCapitalized())); consideredWord, wordComposer.isFirstCharCapitalized()) && !consideredWord.equals(firstSuggestion)); final boolean hasAutoCorrection; // TODO: using isCorrectionEnabled here is not very good. It's probably useless, because Loading java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java +6 −0 Original line number Diff line number Diff line Loading @@ -39,4 +39,10 @@ public class PersonalizationDictionary extends DecayingExpandableBinaryDictionar super(context, locale, Dictionary.TYPE_PERSONALIZATION, getDictNameWithLocale(NAME, locale), dictFile); } @Override public boolean isValidWord(final String word) { // Strings out of this dictionary should not be considered existing words. return false; } } java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java +6 −0 Original line number Diff line number Diff line Loading @@ -45,4 +45,10 @@ public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBas public void cancelAddingUserHistory(final String word0, final String word1) { removeBigramDynamically(word0, word1); } @Override public boolean isValidWord(final String word) { // Strings out of this dictionary should not be considered existing words. return false; } } tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { dict.waitAllTasksForTests(); for (int i = 0; i < numberOfWords; ++i) { final String word = words.get(i); assertTrue(dict.isInDictionaryForTests(word)); assertTrue(dict.isInUnderlyingBinaryDictionaryForTests(word)); } } // write to file. Loading Loading
java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +1 −1 Original line number Diff line number Diff line Loading @@ -750,7 +750,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { // TODO: Implement BinaryDictionary.isInDictionary(). @UsedForTesting public boolean isInDictionaryForTests(final String word) { public boolean isInUnderlyingBinaryDictionaryForTests(final String word) { final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>(); getExecutor(mDictName).executePrioritized(new Runnable() { @Override Loading
java/src/com/android/inputmethod/latin/Suggest.java +17 −5 Original line number Diff line number Diff line Loading @@ -127,21 +127,33 @@ public final class Suggest { mDictionaryFacilitator.getSuggestions(wordComposerForLookup, prevWordForBigram, proximityInfo, blockOffensiveWords, additionalFeaturesOptions, SESSION_TYPING, suggestionsSet); final String firstSuggestion; final String whitelistedWord; if (suggestionsSet.isEmpty()) { whitelistedWord = null; } else if (SuggestedWordInfo.KIND_WHITELIST != suggestionsSet.first().mKind) { whitelistedWord = firstSuggestion = null; } else { final SuggestedWordInfo firstSuggestedWordInfo = suggestionsSet.first(); firstSuggestion = firstSuggestedWordInfo.mWord; if (SuggestedWordInfo.KIND_WHITELIST != firstSuggestedWordInfo.mKind) { whitelistedWord = null; } else { whitelistedWord = suggestionsSet.first().mWord; whitelistedWord = firstSuggestion; } } // The word can be auto-corrected if it has a whitelist entry that is not itself, // or if it's a 2+ characters non-word (i.e. it's not in the dictionary). // We allow auto-correction if we have a whitelisted word, or if the word is not a valid // word of more than 1 char, except if the first suggestion is the same as the typed string // because in this case if it's strong enough to auto-correct that will mistakenly designate // the second candidate for auto-correction. // TODO: stop relying on indices to find where is the auto-correction in the suggested // words, and correct this test. final boolean allowsToBeAutoCorrected = (null != whitelistedWord && !whitelistedWord.equals(consideredWord)) || (consideredWord.length() > 1 && !mDictionaryFacilitator.isValidWord( consideredWord, wordComposer.isFirstCharCapitalized())); consideredWord, wordComposer.isFirstCharCapitalized()) && !consideredWord.equals(firstSuggestion)); final boolean hasAutoCorrection; // TODO: using isCorrectionEnabled here is not very good. It's probably useless, because Loading
java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java +6 −0 Original line number Diff line number Diff line Loading @@ -39,4 +39,10 @@ public class PersonalizationDictionary extends DecayingExpandableBinaryDictionar super(context, locale, Dictionary.TYPE_PERSONALIZATION, getDictNameWithLocale(NAME, locale), dictFile); } @Override public boolean isValidWord(final String word) { // Strings out of this dictionary should not be considered existing words. return false; } }
java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java +6 −0 Original line number Diff line number Diff line Loading @@ -45,4 +45,10 @@ public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBas public void cancelAddingUserHistory(final String word0, final String word1) { removeBigramDynamically(word0, word1); } @Override public boolean isValidWord(final String word) { // Strings out of this dictionary should not be considered existing words. return false; } }
tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { dict.waitAllTasksForTests(); for (int i = 0; i < numberOfWords; ++i) { final String word = words.get(i); assertTrue(dict.isInDictionaryForTests(word)); assertTrue(dict.isInUnderlyingBinaryDictionaryForTests(word)); } } // write to file. Loading