Loading java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +3 −2 Original line number Diff line number Diff line Loading @@ -595,8 +595,9 @@ public class DictionaryFacilitator { final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) { final DictionaryGroup[] dictionaryGroups = mDictionaryGroups; final SuggestionResults suggestionResults = new SuggestionResults(SuggestedWords.MAX_SUGGESTIONS); final SuggestionResults suggestionResults = new SuggestionResults( SuggestedWords.MAX_SUGGESTIONS, prevWordsInfo.mPrevWordsInfo[0].mIsBeginningOfSentence); final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT }; for (final DictionaryGroup dictionaryGroup : dictionaryGroups) { for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) { Loading java/src/com/android/inputmethod/latin/LatinIME.java +9 −5 Original line number Diff line number Diff line Loading @@ -1491,19 +1491,23 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final boolean isEmptyApplicationSpecifiedCompletions = currentSettingsValues.isApplicationSpecifiedCompletionsOn() && suggestedWords.isEmpty(); final boolean noSuggestionsToShow = (SuggestedWords.EMPTY == suggestedWords) final boolean noSuggestionsFromDictionaries = (SuggestedWords.EMPTY == suggestedWords) || suggestedWords.isPunctuationSuggestions() || isEmptyApplicationSpecifiedCompletions; if (shouldShowImportantNotice && noSuggestionsToShow) { final boolean isBeginningOfSentencePrediction = (suggestedWords.mInputStyle == SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION); final boolean noSuggestionsToOverrideImportantNotice = noSuggestionsFromDictionaries || isBeginningOfSentencePrediction; if (shouldShowImportantNotice && noSuggestionsToOverrideImportantNotice) { if (mSuggestionStripView.maybeShowImportantNoticeTitle()) { return; } } if (currentSettingsValues.isSuggestionsEnabledPerUserSettings() // We should clear suggestions if there is no suggestion to show. || noSuggestionsToShow || currentSettingsValues.isApplicationSpecifiedCompletionsOn()) { || currentSettingsValues.isApplicationSpecifiedCompletionsOn() // We should clear the contextual strip if there is no suggestion from dictionaries. || noSuggestionsFromDictionaries) { mSuggestionStripView.setSuggestions(suggestedWords, SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype())); } Loading java/src/com/android/inputmethod/latin/Suggest.java +10 −2 Original line number Diff line number Diff line Loading @@ -188,8 +188,14 @@ public final class Suggest { suggestionsList = suggestionsContainer; } final int inputStyle = resultsArePredictions ? SuggestedWords.INPUT_STYLE_PREDICTION : inputStyleIfNotPrediction; final int inputStyle; if (resultsArePredictions) { inputStyle = suggestionResults.mIsBeginningOfSentence ? SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION : SuggestedWords.INPUT_STYLE_PREDICTION; } else { inputStyle = inputStyleIfNotPrediction; } callback.onGetSuggestedWords(new SuggestedWords(suggestionsList, suggestionResults.mRawSuggestions, // TODO: this first argument is lying. If this is a whitelisted word which is an Loading Loading @@ -244,6 +250,8 @@ public final class Suggest { // In the batch input mode, the most relevant suggested word should act as a "typed word" // (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false). // Note that because this method is never used to get predictions, there is no need to // modify inputType such in getSuggestedWordsForNonBatchInput. callback.onGetSuggestedWords(new SuggestedWords(suggestionsContainer, suggestionResults.mRawSuggestions, true /* typedWordValid */, Loading java/src/com/android/inputmethod/latin/SuggestedWords.java +10 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class SuggestedWords { public static final int INPUT_STYLE_APPLICATION_SPECIFIED = 4; public static final int INPUT_STYLE_RECORRECTION = 5; public static final int INPUT_STYLE_PREDICTION = 6; public static final int INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION = 7; // The maximum number of suggestions available. public static final int MAX_SUGGESTIONS = 18; Loading Loading @@ -80,10 +81,9 @@ public class SuggestedWords { final int inputStyle, final int sequenceNumber) { this(suggestedWordInfoList, rawSuggestions, (suggestedWordInfoList.isEmpty() || INPUT_STYLE_PREDICTION == inputStyle) ? null (suggestedWordInfoList.isEmpty() || isPrediction(inputStyle)) ? null : suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord, typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); } public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList, Loading Loading @@ -180,6 +180,7 @@ public class SuggestedWords { return "SuggestedWords:" + " mTypedWordValid=" + mTypedWordValid + " mWillAutoCorrect=" + mWillAutoCorrect + " mInputStyle=" + mInputStyle + " words=" + Arrays.toString(mSuggestedWordInfoList.toArray()); } Loading Loading @@ -386,8 +387,13 @@ public class SuggestedWords { } } private static boolean isPrediction(final int inputStyle) { return INPUT_STYLE_PREDICTION == inputStyle || INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION == inputStyle; } public boolean isPrediction() { return INPUT_STYLE_PREDICTION == mInputStyle; return isPrediction(mInputStyle); } // SuggestedWords is an immutable object, as much as possible. We must not just remove Loading java/src/com/android/inputmethod/latin/utils/SuggestionResults.java +8 −5 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import com.android.inputmethod.latin.define.ProductionFlags; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.Locale; import java.util.TreeSet; /** Loading @@ -31,14 +30,17 @@ import java.util.TreeSet; */ public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { public final ArrayList<SuggestedWordInfo> mRawSuggestions; // TODO: Instead of a boolean , we may want to include the context of this suggestion results, // such as {@link PrevWordsInfo}. public final boolean mIsBeginningOfSentence; private final int mCapacity; public SuggestionResults(final int capacity) { this(sSuggestedWordInfoComparator, capacity); public SuggestionResults(final int capacity, final boolean isBeginningOfSentence) { this(sSuggestedWordInfoComparator, capacity, isBeginningOfSentence); } public SuggestionResults(final Comparator<SuggestedWordInfo> comparator, final int capacity) { private SuggestionResults(final Comparator<SuggestedWordInfo> comparator, final int capacity, final boolean isBeginningOfSentence) { super(comparator); mCapacity = capacity; if (ProductionFlags.INCLUDE_RAW_SUGGESTIONS) { Loading @@ -46,6 +48,7 @@ public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { } else { mRawSuggestions = null; } mIsBeginningOfSentence = isBeginningOfSentence; } @Override Loading Loading
java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +3 −2 Original line number Diff line number Diff line Loading @@ -595,8 +595,9 @@ public class DictionaryFacilitator { final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) { final DictionaryGroup[] dictionaryGroups = mDictionaryGroups; final SuggestionResults suggestionResults = new SuggestionResults(SuggestedWords.MAX_SUGGESTIONS); final SuggestionResults suggestionResults = new SuggestionResults( SuggestedWords.MAX_SUGGESTIONS, prevWordsInfo.mPrevWordsInfo[0].mIsBeginningOfSentence); final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT }; for (final DictionaryGroup dictionaryGroup : dictionaryGroups) { for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) { Loading
java/src/com/android/inputmethod/latin/LatinIME.java +9 −5 Original line number Diff line number Diff line Loading @@ -1491,19 +1491,23 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final boolean isEmptyApplicationSpecifiedCompletions = currentSettingsValues.isApplicationSpecifiedCompletionsOn() && suggestedWords.isEmpty(); final boolean noSuggestionsToShow = (SuggestedWords.EMPTY == suggestedWords) final boolean noSuggestionsFromDictionaries = (SuggestedWords.EMPTY == suggestedWords) || suggestedWords.isPunctuationSuggestions() || isEmptyApplicationSpecifiedCompletions; if (shouldShowImportantNotice && noSuggestionsToShow) { final boolean isBeginningOfSentencePrediction = (suggestedWords.mInputStyle == SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION); final boolean noSuggestionsToOverrideImportantNotice = noSuggestionsFromDictionaries || isBeginningOfSentencePrediction; if (shouldShowImportantNotice && noSuggestionsToOverrideImportantNotice) { if (mSuggestionStripView.maybeShowImportantNoticeTitle()) { return; } } if (currentSettingsValues.isSuggestionsEnabledPerUserSettings() // We should clear suggestions if there is no suggestion to show. || noSuggestionsToShow || currentSettingsValues.isApplicationSpecifiedCompletionsOn()) { || currentSettingsValues.isApplicationSpecifiedCompletionsOn() // We should clear the contextual strip if there is no suggestion from dictionaries. || noSuggestionsFromDictionaries) { mSuggestionStripView.setSuggestions(suggestedWords, SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype())); } Loading
java/src/com/android/inputmethod/latin/Suggest.java +10 −2 Original line number Diff line number Diff line Loading @@ -188,8 +188,14 @@ public final class Suggest { suggestionsList = suggestionsContainer; } final int inputStyle = resultsArePredictions ? SuggestedWords.INPUT_STYLE_PREDICTION : inputStyleIfNotPrediction; final int inputStyle; if (resultsArePredictions) { inputStyle = suggestionResults.mIsBeginningOfSentence ? SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION : SuggestedWords.INPUT_STYLE_PREDICTION; } else { inputStyle = inputStyleIfNotPrediction; } callback.onGetSuggestedWords(new SuggestedWords(suggestionsList, suggestionResults.mRawSuggestions, // TODO: this first argument is lying. If this is a whitelisted word which is an Loading Loading @@ -244,6 +250,8 @@ public final class Suggest { // In the batch input mode, the most relevant suggested word should act as a "typed word" // (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false). // Note that because this method is never used to get predictions, there is no need to // modify inputType such in getSuggestedWordsForNonBatchInput. callback.onGetSuggestedWords(new SuggestedWords(suggestionsContainer, suggestionResults.mRawSuggestions, true /* typedWordValid */, Loading
java/src/com/android/inputmethod/latin/SuggestedWords.java +10 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class SuggestedWords { public static final int INPUT_STYLE_APPLICATION_SPECIFIED = 4; public static final int INPUT_STYLE_RECORRECTION = 5; public static final int INPUT_STYLE_PREDICTION = 6; public static final int INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION = 7; // The maximum number of suggestions available. public static final int MAX_SUGGESTIONS = 18; Loading Loading @@ -80,10 +81,9 @@ public class SuggestedWords { final int inputStyle, final int sequenceNumber) { this(suggestedWordInfoList, rawSuggestions, (suggestedWordInfoList.isEmpty() || INPUT_STYLE_PREDICTION == inputStyle) ? null (suggestedWordInfoList.isEmpty() || isPrediction(inputStyle)) ? null : suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord, typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); } public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList, Loading Loading @@ -180,6 +180,7 @@ public class SuggestedWords { return "SuggestedWords:" + " mTypedWordValid=" + mTypedWordValid + " mWillAutoCorrect=" + mWillAutoCorrect + " mInputStyle=" + mInputStyle + " words=" + Arrays.toString(mSuggestedWordInfoList.toArray()); } Loading Loading @@ -386,8 +387,13 @@ public class SuggestedWords { } } private static boolean isPrediction(final int inputStyle) { return INPUT_STYLE_PREDICTION == inputStyle || INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION == inputStyle; } public boolean isPrediction() { return INPUT_STYLE_PREDICTION == mInputStyle; return isPrediction(mInputStyle); } // SuggestedWords is an immutable object, as much as possible. We must not just remove Loading
java/src/com/android/inputmethod/latin/utils/SuggestionResults.java +8 −5 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import com.android.inputmethod.latin.define.ProductionFlags; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.Locale; import java.util.TreeSet; /** Loading @@ -31,14 +30,17 @@ import java.util.TreeSet; */ public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { public final ArrayList<SuggestedWordInfo> mRawSuggestions; // TODO: Instead of a boolean , we may want to include the context of this suggestion results, // such as {@link PrevWordsInfo}. public final boolean mIsBeginningOfSentence; private final int mCapacity; public SuggestionResults(final int capacity) { this(sSuggestedWordInfoComparator, capacity); public SuggestionResults(final int capacity, final boolean isBeginningOfSentence) { this(sSuggestedWordInfoComparator, capacity, isBeginningOfSentence); } public SuggestionResults(final Comparator<SuggestedWordInfo> comparator, final int capacity) { private SuggestionResults(final Comparator<SuggestedWordInfo> comparator, final int capacity, final boolean isBeginningOfSentence) { super(comparator); mCapacity = capacity; if (ProductionFlags.INCLUDE_RAW_SUGGESTIONS) { Loading @@ -46,6 +48,7 @@ public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { } else { mRawSuggestions = null; } mIsBeginningOfSentence = isBeginningOfSentence; } @Override Loading