Optimization & Simplification

It's useless to do the whitelist lookup twice. Also, putting
this test out of this method will allow whitelist entries to
come from other sources.

Bug: 6906525
Change-Id: I4afe678cae6556d16642d155ce770fbf4e61ad49
This commit is contained in:
Jean Chalard 2012-08-10 14:31:12 +09:00
parent dc2fb6bc6d
commit caed149b67
2 changed files with 12 additions and 17 deletions

View file

@ -75,17 +75,10 @@ public class AutoCorrection {
return maxFreq;
}
// Returns true if this is a whitelist entry, or it isn't in any dictionary.
public static boolean isWhitelistedOrNotAWord(
// Returns true if this isn't in any dictionary.
public static boolean isNotAWord(
final ConcurrentHashMap<String, Dictionary> dictionaries,
final CharSequence word, final boolean ignoreCase) {
final WhitelistDictionary whitelistDictionary =
(WhitelistDictionary)dictionaries.get(Dictionary.TYPE_WHITELIST);
// If "word" is in the whitelist dictionary, it should not be auto corrected.
if (whitelistDictionary != null
&& whitelistDictionary.shouldForciblyAutoCorrectFrom(word)) {
return true;
}
return !isValidWord(dictionaries, word, ignoreCase);
}

View file

@ -208,14 +208,6 @@ public class Suggest {
wordComposerForLookup, prevWordForBigram, proximityInfo));
}
// TODO: Change this scheme - a boolean is not enough. A whitelisted word may be "valid"
// but still autocorrected from - in the case the whitelist only capitalizes the word.
// The whitelist should be case-insensitive, so it's not possible to be consistent with
// a boolean flag. Right now this is handled with a slight hack in
// WhitelistDictionary#shouldForciblyAutoCorrectFrom.
final boolean allowsToBeAutoCorrected = AutoCorrection.isWhitelistedOrNotAWord(
mDictionaries, consideredWord, wordComposer.isFirstCharCapitalized());
final CharSequence whitelistedWord =
mWhiteListDictionary.getWhitelistedWord(consideredWord);
if (whitelistedWord != null) {
@ -225,6 +217,16 @@ public class Suggest {
Dictionary.TYPE_WHITELIST));
}
// TODO: Change this scheme - a boolean is not enough. A whitelisted word may be "valid"
// but still autocorrected from - in the case the whitelist only capitalizes the word.
// The whitelist should be case-insensitive, so it's not possible to be consistent with
// a boolean flag. Right now this is handled with a slight hack in
// WhitelistDictionary#shouldForciblyAutoCorrectFrom.
final boolean allowsToBeAutoCorrected = (null != whitelistedWord
&& !whitelistedWord.equals(consideredWord))
|| AutoCorrection.isNotAWord(mDictionaries, consideredWord,
wordComposer.isFirstCharCapitalized());
final boolean hasAutoCorrection;
// TODO: using isCorrectionEnabled here is not very good. It's probably useless, because
// any attempt to do auto-correction is already shielded with a test for this flag; at the