aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/utils
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-05-26 16:28:22 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-05-26 16:28:23 +0000
commit71c795d00b7bc22a000b1cca50c53a365614a8eb (patch)
tree61935a3206364da1baa28d0b602bc20e1ddebcf4 /java/src/com/android/inputmethod/latin/utils
parentf85b478cd89141b3b339a56a10dac61c44d678a1 (diff)
parent17bd4eb0c984125d968ca05a567180c2bd3761f6 (diff)
downloadlatinime-71c795d00b7bc22a000b1cca50c53a365614a8eb.tar.gz
latinime-71c795d00b7bc22a000b1cca50c53a365614a8eb.tar.xz
latinime-71c795d00b7bc22a000b1cca50c53a365614a8eb.zip
Merge "Apply distracter filter for UserHistoryDictionary."
Diffstat (limited to 'java/src/com/android/inputmethod/latin/utils')
-rw-r--r--java/src/com/android/inputmethod/latin/utils/DistracterFilter.java4
-rw-r--r--java/src/com/android/inputmethod/latin/utils/DistracterFilterUsingSuggestion.java30
2 files changed, 23 insertions, 11 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
index 6e0fab32a..787e4a59d 100644
--- a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
@@ -40,7 +40,7 @@ public interface DistracterFilter {
public void close();
- public static final class EmptyDistracterFilter implements DistracterFilter {
+ public static final DistracterFilter EMPTY_DISTRACTER_FILTER = new DistracterFilter() {
@Override
public boolean isDistracterToWordsInDictionaries(PrevWordsInfo prevWordsInfo,
String testedWord, Locale locale) {
@@ -54,5 +54,5 @@ public interface DistracterFilter {
@Override
public void updateEnabledSubtypes(List<InputMethodSubtype> enabledSubtypes) {
}
- }
+ };
}
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilterUsingSuggestion.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilterUsingSuggestion.java
index 3fc84180e..1c93a9105 100644
--- a/java/src/com/android/inputmethod/latin/utils/DistracterFilterUsingSuggestion.java
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilterUsingSuggestion.java
@@ -32,6 +32,7 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.keyboard.KeyboardLayoutSet;
+import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.DictionaryFacilitator;
import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
@@ -205,14 +206,25 @@ public class DistracterFilterUsingSuggestion implements DistracterFilter {
final String consideredWord = trailingSingleQuotesCount > 0 ?
testedWord.substring(0, testedWord.length() - trailingSingleQuotesCount) :
testedWord;
-
- final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
- composer, PrevWordsInfo.EMPTY_PREV_WORDS_INFO, mKeyboard.getProximityInfo(),
- true /* blockOffensiveWords */, null /* additionalFeaturesOptions */,
- 0 /* sessionId */, null /* rawSuggestions */);
- if (suggestionResults.isEmpty()) {
- return false;
- }
- return isDistracter(suggestionResults, consideredWord);
+ final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<>();
+ ExecutorUtils.getExecutor("check distracters").execute(new Runnable() {
+ @Override
+ public void run() {
+ final SuggestionResults suggestionResults =
+ mDictionaryFacilitator.getSuggestionResults(
+ composer, PrevWordsInfo.EMPTY_PREV_WORDS_INFO,
+ mKeyboard.getProximityInfo(), true /* blockOffensiveWords */,
+ null /* additionalFeaturesOptions */, 0 /* sessionId */,
+ null /* rawSuggestions */);
+ if (suggestionResults.isEmpty()) {
+ holder.set(false);
+ return;
+ }
+ holder.set(isDistracter(suggestionResults, consideredWord));
+ }
+ });
+ // It's OK to block the distracter filtering, but the dictionary lookup should be done
+ // sequentially using ExecutorUtils.
+ return holder.get(false /* defaultValue */, Constants.GET_SUGGESTED_WORDS_TIMEOUT);
}
}