Don't auto-correct to non-whitelist shortcuts

Bug: 11076722
Change-Id: I0de10ab24d33ec31f45664fe92d80d5a7bec9c20
This commit is contained in:
Jean Chalard 2013-10-07 17:10:23 +09:00
parent f3204eebb1
commit f309f2288b
2 changed files with 5 additions and 3 deletions

View file

@ -286,14 +286,16 @@ public final class Suggest {
// the word *would* have been auto-corrected. // the word *would* have been auto-corrected.
if (!isCorrectionEnabled || !allowsToBeAutoCorrected || !wordComposer.isComposingWord() if (!isCorrectionEnabled || !allowsToBeAutoCorrected || !wordComposer.isComposingWord()
|| suggestionsSet.isEmpty() || wordComposer.hasDigits() || suggestionsSet.isEmpty() || wordComposer.hasDigits()
|| wordComposer.isMostlyCaps() || wordComposer.isResumed() || wordComposer.isMostlyCaps() || wordComposer.isResumed() || !hasMainDictionary()
|| !hasMainDictionary()) { || SuggestedWordInfo.KIND_SHORTCUT == suggestionsSet.first().mKind) {
// If we don't have a main dictionary, we never want to auto-correct. The reason for // If we don't have a main dictionary, we never want to auto-correct. The reason for
// this is, the user may have a contact whose name happens to match a valid word in // this is, the user may have a contact whose name happens to match a valid word in
// their language, and it will unexpectedly auto-correct. For example, if the user // their language, and it will unexpectedly auto-correct. For example, if the user
// types in English with no dictionary and has a "Will" in their contact list, "will" // types in English with no dictionary and has a "Will" in their contact list, "will"
// would always auto-correct to "Will" which is unwanted. Hence, no main dict => no // would always auto-correct to "Will" which is unwanted. Hence, no main dict => no
// auto-correct. // auto-correct.
// Also, shortcuts should never auto-correct unless they are whitelist entries.
// TODO: we may want to have shortcut-only entries auto-correct in the future.
hasAutoCorrection = false; hasAutoCorrection = false;
} else { } else {
hasAutoCorrection = AutoCorrectionUtils.suggestionExceedsAutoCorrectionThreshold( hasAutoCorrection = AutoCorrectionUtils.suggestionExceedsAutoCorrectionThreshold(

View file

@ -44,7 +44,7 @@ class ShortcutUtils {
shortcutScore = finalScore; shortcutScore = finalScore;
// Protection against int underflow // Protection against int underflow
shortcutScore = max(S_INT_MIN + 1, shortcutScore) - 1; shortcutScore = max(S_INT_MIN + 1, shortcutScore) - 1;
kind = Dictionary::KIND_CORRECTION; kind = Dictionary::KIND_SHORTCUT;
} }
outputTypes[outputWordIndex] = kind; outputTypes[outputWordIndex] = kind;
frequencies[outputWordIndex] = shortcutScore; frequencies[outputWordIndex] = shortcutScore;