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

Commit 5095fabd authored by Jean Chalard's avatar Jean Chalard
Browse files

Stop considering personalization dicts outputs as words

Bug: 12800726
Bug: 12798403
Change-Id: I6d60f9ad39761757f8a64533f40d6441f3a36410
parent aac53dd7
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.