aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java17
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java10
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java17
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java8
-rw-r--r--java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java7
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SettingsValues.java2
6 files changed, 41 insertions, 20 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 1d087439d..4dbfb44d6 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -292,6 +292,7 @@ public final class BinaryDictionary extends Dictionary {
}
mNativeSuggestOptions.setIsGesture(isGesture);
+ mNativeSuggestOptions.setBlockOffensiveWords(blockOffensiveWords);
mNativeSuggestOptions.setAdditionalFeaturesOptions(additionalFeaturesOptions);
if (inOutLanguageWeight != null) {
mInputOutputLanguageWeight[0] = inOutLanguageWeight[0];
@@ -319,18 +320,10 @@ public final class BinaryDictionary extends Dictionary {
++len;
}
if (len > 0) {
- final SuggestedWordInfo suggestedWordInfo =
- new SuggestedWordInfo(new String(mOutputCodePoints, start, len),
- mOutputScores[j], mOutputTypes[j], this /* sourceDict */,
- mSpaceIndices[j] /* indexOfTouchPointOfSecondWord */,
- mOutputAutoCommitFirstWordConfidence[0]);
- if (blockOffensiveWords && suggestedWordInfo.isPossiblyOffensive()
- && !suggestedWordInfo.isExactMatch()) {
- // If we block potentially offensive words, and if the word is possibly
- // offensive, then we don't output it unless it's also an exact match.
- continue;
- }
- suggestions.add(suggestedWordInfo);
+ suggestions.add(new SuggestedWordInfo(new String(mOutputCodePoints, start, len),
+ mOutputScores[j], mOutputTypes[j], this /* sourceDict */,
+ mSpaceIndices[j] /* indexOfTouchPointOfSecondWord */,
+ mOutputAutoCommitFirstWordConfidence[0]));
}
}
return suggestions;
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 4dbfa0bac..b1966bffc 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -122,6 +122,12 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
return mBinaryDictionary.isValidDictionary();
}
+ // TODO: Remove and always enable beginning of sentence prediction. Currently, this is enabled
+ // only for ContextualDictionary.
+ protected boolean enableBeginningOfSentencePrediction() {
+ return false;
+ }
+
/**
* Creates a new expandable binary dictionary.
*
@@ -398,6 +404,10 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
if (mBinaryDictionary == null) {
return null;
}
+ if (composer.size() == 0 && prevWordsInfo.mIsBeginningOfSentence
+ && !enableBeginningOfSentencePrediction()) {
+ return null;
+ }
final ArrayList<SuggestedWordInfo> suggestions =
mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId,
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 35966bb71..8b671a94b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1336,9 +1336,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final SettingsValues currentSettingsValues = mSettings.getCurrent();
final boolean shouldShowImportantNotice =
ImportantNoticeUtils.shouldShowImportantNotice(this);
+ final boolean shouldShowSuggestionCandidates =
+ currentSettingsValues.mInputAttributes.mShouldShowSuggestions
+ && currentSettingsValues.isCurrentOrientationAllowingSuggestionsPerUserSettings();
final boolean shouldShowSuggestionsStripUnlessPassword = shouldShowImportantNotice
|| currentSettingsValues.mShowsVoiceInputKey
- || currentSettingsValues.isSuggestionsRequested()
+ || shouldShowSuggestionCandidates
|| currentSettingsValues.isApplicationSpecifiedCompletionsOn();
final boolean shouldShowSuggestionsStrip = shouldShowSuggestionsStripUnlessPassword
&& !currentSettingsValues.mInputAttributes.mIsPasswordField;
@@ -1353,14 +1356,16 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final boolean noSuggestionsToShow = (SuggestedWords.EMPTY == suggestedWords)
|| suggestedWords.isPunctuationSuggestions()
|| isEmptyApplicationSpecifiedCompletions;
- final boolean isShowingImportantNotice;
if (shouldShowImportantNotice && noSuggestionsToShow) {
- isShowingImportantNotice = mSuggestionStripView.maybeShowImportantNoticeTitle();
- } else {
- isShowingImportantNotice = false;
+ if (mSuggestionStripView.maybeShowImportantNoticeTitle()) {
+ return;
+ }
}
- if (currentSettingsValues.isSuggestionsRequested() && !isShowingImportantNotice) {
+ if (currentSettingsValues.isCurrentOrientationAllowingSuggestionsPerUserSettings()
+ // We should clear suggestions if there is no suggestion to show.
+ || noSuggestionsToShow
+ || currentSettingsValues.isApplicationSpecifiedCompletionsOn()) {
mSuggestionStripView.setSuggestions(suggestedWords,
SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype()));
}
diff --git a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
index 96755a98f..a96018fe9 100644
--- a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
+++ b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
@@ -26,7 +26,7 @@ import java.io.File;
import java.util.Locale;
public class ContextualDictionary extends ExpandableBinaryDictionary {
- /* package */ static final String NAME = PersonalizationDictionary.class.getSimpleName();
+ /* package */ static final String NAME = ContextualDictionary.class.getSimpleName();
private ContextualDictionary(final Context context, final Locale locale,
final File dictFile) {
@@ -35,6 +35,7 @@ public class ContextualDictionary extends ExpandableBinaryDictionary {
// Always reset the contents.
clear();
}
+
@UsedForTesting
public static ContextualDictionary getDictionary(final Context context, final Locale locale,
final File dictFile, final String dictNamePrefix) {
@@ -42,6 +43,11 @@ public class ContextualDictionary extends ExpandableBinaryDictionary {
}
@Override
+ protected boolean enableBeginningOfSentencePrediction() {
+ return true;
+ }
+
+ @Override
public boolean isValidWord(final String word) {
// Strings out of this dictionary should not be considered existing words.
return false;
diff --git a/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java b/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
index cd726c969..04a2ee3ce 100644
--- a/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
+++ b/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
@@ -20,7 +20,8 @@ public class NativeSuggestOptions {
// Need to update suggest_options.h when you add, remove or reorder options.
private static final int IS_GESTURE = 0;
private static final int USE_FULL_EDIT_DISTANCE = 1;
- private static final int OPTIONS_SIZE = 2;
+ private static final int BLOCK_OFFENSIVE_WORDS = 2;
+ private static final int OPTIONS_SIZE = 3;
private final int[] mOptions = new int[OPTIONS_SIZE
+ AdditionalFeaturesSettingUtils.ADDITIONAL_FEATURES_SETTINGS_SIZE];
@@ -33,6 +34,10 @@ public class NativeSuggestOptions {
setBooleanOption(USE_FULL_EDIT_DISTANCE, value);
}
+ public void setBlockOffensiveWords(final boolean value) {
+ setBooleanOption(BLOCK_OFFENSIVE_WORDS, value);
+ }
+
public void setAdditionalFeaturesOptions(final int[] additionalOptions) {
if (additionalOptions == null) {
return;
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index 389d9a869..44104019b 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -85,6 +85,7 @@ public final class SettingsValues {
public final int mKeyPreviewPopupDismissDelay;
private final boolean mAutoCorrectEnabled;
public final float mAutoCorrectionThreshold;
+ // TODO: Rename this to mAutoCorrectionEnabledPerUserSettings.
public final boolean mAutoCorrectionEnabled;
public final int mSuggestionVisibility;
public final int mDisplayOrientation;
@@ -193,6 +194,7 @@ public final class SettingsValues {
return mInputAttributes.mApplicationSpecifiedCompletionOn;
}
+ // TODO: Rename this to needsToLookupSuggestions().
public boolean isSuggestionsRequested() {
return mInputAttributes.mShouldShowSuggestions
&& (mAutoCorrectionEnabled