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

Commit 5c73753e authored by satok's avatar satok Committed by Android (Google) Code Review
Browse files

Merge "Fix safety net not to be enabled at aggressive autocompletion mode" into honeycomb

parents e2602eaa 14e427d5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1580,7 +1580,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    private void showSuggestions(SuggestedWords suggestedWords, CharSequence typedWord) {
        setSuggestions(suggestedWords);
        if (suggestedWords.size() > 0) {
            if (Utils.shouldBlockedBySafetyNetForAutoCorrection(suggestedWords)) {
            if (Utils.shouldBlockedBySafetyNetForAutoCorrection(suggestedWords, mSuggest)) {
                mBestWord = typedWord;
            } else if (suggestedWords.hasAutoCorrectionWord()) {
                mBestWord = suggestedWords.getWord(1);
+4 −0
Original line number Diff line number Diff line
@@ -163,6 +163,10 @@ public class Suggest implements Dictionary.WordCallback {
        mAutoCorrectionThreshold = threshold;
    }

    public boolean isAggressiveAutoCorrectionMode() {
        return (mAutoCorrectionThreshold == 0);
    }

    /**
     * Number of suggestions to generate from the input key sequence. This has
     * to be a number between 1 and 100 (inclusive).
+9 −1
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import java.util.Date;

public class Utils {
    private static final String TAG = Utils.class.getSimpleName();
    private static final int MINIMUM_SAFETY_NET_CHAR_LENGTH = 4;
    private static boolean DBG = LatinImeLogger.sDBG;

    /**
@@ -106,11 +107,18 @@ public class Utils {
        throw new RuntimeException("Can not find input method id for " + packageName);
    }

    public static boolean shouldBlockedBySafetyNetForAutoCorrection(SuggestedWords suggestions) {
    public static boolean shouldBlockedBySafetyNetForAutoCorrection(SuggestedWords suggestions,
            Suggest suggest) {
        // Safety net for auto correction.
        // Actually if we hit this safety net, it's actually a bug.
        if (suggestions.size() <= 1 || suggestions.mTypedWordValid) return false;
        // If user selected aggressive auto correction mode, there is no need to use the safety
        // net.
        if (suggest.isAggressiveAutoCorrectionMode()) return false;
        CharSequence typedWord = suggestions.getWord(0);
        // If the length of typed word is less than MINIMUM_SAFETY_NET_CHAR_LENGTH,
        // we should not use net because relatively edit distance can be big.
        if (typedWord.length() < MINIMUM_SAFETY_NET_CHAR_LENGTH) return false;
        CharSequence candidateWord = suggestions.getWord(1);
        final int typedWordLength = typedWord.length();
        final int maxEditDistanceOfNativeDictionary = typedWordLength < 5 ? 2 : typedWordLength / 2;