Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58eed636 authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Stop considering personalization dicts outputs as words"

parents 239f7daf 5095fabd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+17 −5
Original line number Diff line number Diff line
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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;
    }
}
+6 −0
Original line number Diff line number Diff line
@@ -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;
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -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.