diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 6a0d6be9c..660b64cdf 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -147,18 +147,6 @@ public final class Suggest { return firstSuggestedWordInfo; } - // Quality constants for dictionary match - // In increasing order of quality - // This source dictionary does not match the typed word. - private static final int QUALITY_NO_MATCH = 0; - // This source dictionary has a null locale, and the preferred locale is also null. - private static final int QUALITY_MATCH_NULL = 1; - // This source dictionary has a non-null locale different from the preferred locale. The - // preferred locale may be null : this is still better than MATCH_NULL. - private static final int QUALITY_MATCH_OTHER_LOCALE = 2; - // This source dictionary matches the preferred locale. - private static final int QUALITY_MATCH_PREFERRED_LOCALE = 3; - // Retrieves suggestions for non-batch input (typing, recorrection, predictions...) // and calls the callback function with the suggestions. private void getSuggestedWordsForNonBatchInput(final WordComposer wordComposer, @@ -179,34 +167,18 @@ public final class Suggest { final Locale locale = mDictionaryFacilitator.getLocale(); final ArrayList suggestionsContainer = getTransformedSuggestedWordInfoList(wordComposer, suggestionResults, - trailingSingleQuotesCount, - // For transforming suggestions that don't come for any dictionary, we - // use the currently most probable locale as it's our best bet. - locale); + trailingSingleQuotesCount, locale); - boolean typedWordExistsInAnotherLanguage = false; - int qualityOfFoundSourceDictionary = QUALITY_NO_MATCH; - @Nullable Dictionary sourceDictionaryOfRemovedWord = null; + boolean foundInDictionary = false; + Dictionary sourceDictionaryOfRemovedWord = null; for (final SuggestedWordInfo info : suggestionsContainer) { // Search for the best dictionary, defined as the first one with the highest match // quality we can find. - if (typedWordString.equals(info.mWord)) { - if (locale.equals(info.mSourceDict.mLocale)) { - if (qualityOfFoundSourceDictionary < QUALITY_MATCH_PREFERRED_LOCALE) { - // Use this source if the old match had lower quality than this match - sourceDictionaryOfRemovedWord = info.mSourceDict; - qualityOfFoundSourceDictionary = QUALITY_MATCH_PREFERRED_LOCALE; - } - } else { - final int matchQuality = (null == info.mSourceDict.mLocale) - ? QUALITY_MATCH_NULL : QUALITY_MATCH_OTHER_LOCALE; - if (qualityOfFoundSourceDictionary < matchQuality) { - // Use this source if the old match had lower quality than this match - sourceDictionaryOfRemovedWord = info.mSourceDict; - qualityOfFoundSourceDictionary = matchQuality; - } - typedWordExistsInAnotherLanguage = true; - } + if (!foundInDictionary && typedWordString.equals(info.mWord)) { + // Use this source if the old match had lower quality than this match + sourceDictionaryOfRemovedWord = info.mSourceDict; + foundInDictionary = true; + break; } } @@ -215,22 +187,8 @@ public final class Suggest { final SuggestedWordInfo whitelistedWordInfo = getWhitelistedWordInfoOrNull(suggestionsContainer); - final String whitelistedWord; - if (null != whitelistedWordInfo && - (mDictionaryFacilitator.isForLocale(whitelistedWordInfo.mSourceDict.mLocale) - || (!typedWordExistsInAnotherLanguage - && !hasPlausibleCandidateInAnyOtherLanguage(suggestionsContainer, - consideredWord, whitelistedWordInfo)))) { - // We'll use the whitelist candidate if we are confident the user is typing in the - // language of the dictionary it's coming from, or if there is no plausible candidate - // coming from another language. - whitelistedWord = whitelistedWordInfo.mWord; - } else { - // If on the contrary we are not confident in the current language and we have - // at least a plausible candidate in any other language, then we don't use this - // whitelist candidate. - whitelistedWord = null; - } + final String whitelistedWord = whitelistedWordInfo == null + ? null : whitelistedWordInfo.mWord; final boolean resultsArePredictions = !wordComposer.isComposingWord(); // We allow auto-correction if whitelisting is not required or the word is whitelisted, @@ -325,20 +283,6 @@ public final class Suggest { false /* isObsoleteSuggestions */, inputStyle, sequenceNumber)); } - private boolean hasPlausibleCandidateInAnyOtherLanguage( - final ArrayList suggestionsContainer, final String consideredWord, - final SuggestedWordInfo whitelistedWordInfo) { - for (final SuggestedWordInfo info : suggestionsContainer) { - if (whitelistedWordInfo.mSourceDict.mLocale.equals(info.mSourceDict.mLocale)) { - continue; - } - return AutoCorrectionUtils.suggestionExceedsThreshold(info, consideredWord, - mPlausibilityThreshold); - } - // No candidate in another language - return false; - } - // Retrieves suggestions for the batch input // and calls the callback function with the suggestions. private void getSuggestedWordsForBatchInput(final WordComposer wordComposer, diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java index 7e513e5c3..f02a63e57 100644 --- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java @@ -1607,15 +1607,11 @@ public final class InputLogic { // First, add the committed word to the list of suggestions. suggestions.add(committedWordString); for (final Object span : spans) { - // If this is a suggestion span, we check that the locale is the right one, and - // that the word is not the committed word. That should mostly be the case. + // If this is a suggestion span, we check that the word is not the committed word. + // That should mostly be the case. // Given this, we add it to the list of suggestions, otherwise we discard it. if (span instanceof SuggestionSpan) { final SuggestionSpan suggestionSpan = (SuggestionSpan)span; - if (!suggestionSpan.getLocale().equals( - inputTransaction.mSettingsValues.mLocale.toString())) { - continue; - } for (final String suggestion : suggestionSpan.getSuggestions()) { if (!suggestion.equals(committedWordString)) { suggestions.add(suggestion);