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

Commit fbc113f3 authored by Jean Chalard's avatar Jean Chalard Committed by The Android Automerger
Browse files

Fix an NPE in recorrection

Also, theoretically, we don't want to retrieve older suggestions if
there are no results for a recorrection - that would look random.
This bug addresses this too.

Bug: 8657919
Change-Id: I44f36d34a708a968ab71fa0592da57f4c97d4b7f
parent 49007de5
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -1678,7 +1678,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
        private SuggestedWords getSuggestedWordsGestureLocked(final InputPointers batchPointers) {
            mLatinIme.mWordComposer.setBatchInputPointers(batchPointers);
            final SuggestedWords suggestedWords =
                    mLatinIme.getSuggestedWords(Suggest.SESSION_GESTURE);
                    mLatinIme.getSuggestedWordsOrOlderSuggestions(Suggest.SESSION_GESTURE);
            final int suggestionCount = suggestedWords.size();
            if (suggestionCount <= 1) {
                final String mostProbableSuggestion = (suggestionCount == 0) ? null
@@ -2155,7 +2155,8 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            return;
        }

        final SuggestedWords suggestedWords = getSuggestedWords(Suggest.SESSION_TYPING);
        final SuggestedWords suggestedWords =
                getSuggestedWordsOrOlderSuggestions(Suggest.SESSION_TYPING);
        final String typedWord = mWordComposer.getTypedWord();
        showSuggestionStrip(suggestedWords, typedWord);
    }
@@ -2165,7 +2166,6 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
        if (keyboard == null || mSuggest == null) {
            return SuggestedWords.EMPTY;
        }
        final String typedWord = mWordComposer.getTypedWord();
        // Get the word on which we should search the bigrams. If we are composing a word, it's
        // whatever is *before* the half-committed word in the buffer, hence 2; if we aren't, we
        // should just skip whitespace if any, so 1.
@@ -2173,10 +2173,13 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
        final String prevWord =
                mConnection.getNthPreviousWord(mSettings.getCurrent().mWordSeparators,
                mWordComposer.isComposingWord() ? 2 : 1);
        final SuggestedWords suggestedWords = mSuggest.getSuggestedWords(mWordComposer,
                prevWord, keyboard.getProximityInfo(), mSettings.getCurrent().mCorrectionEnabled,
                sessionId);
        return maybeRetrieveOlderSuggestions(typedWord, suggestedWords);
        return mSuggest.getSuggestedWords(mWordComposer, prevWord, keyboard.getProximityInfo(),
                mSettings.getCurrent().mCorrectionEnabled, sessionId);
    }

    private SuggestedWords getSuggestedWordsOrOlderSuggestions(final int sessionId) {
        return maybeRetrieveOlderSuggestions(mWordComposer.getTypedWord(),
                getSuggestedWords(sessionId));
    }

    private SuggestedWords maybeRetrieveOlderSuggestions(final String typedWord,
@@ -2189,7 +2192,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
        // old suggestions. Also, if we are showing the "add to dictionary" hint, we need to
        // revert to suggestions - although it is unclear how we can come here if it's displayed.
        if (suggestedWords.size() > 1 || typedWord.length() <= 1
                || suggestedWords.mTypedWordValid
                || suggestedWords.mTypedWordValid || null == mSuggestionStripView
                || mSuggestionStripView.isShowingAddToDictionaryHint()) {
            return suggestedWords;
        } else {