From ae7d1530b48e31266dbe8c6c5f33481853092170 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Fri, 19 Apr 2013 11:48:14 +0900 Subject: [PATCH] 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 --- .../android/inputmethod/latin/LatinIME.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 0e1c4dc31..080ab8b92 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -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 @@ -2152,7 +2152,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); } @@ -2162,7 +2163,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. @@ -2170,10 +2170,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, @@ -2186,7 +2189,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 {