Remove useless method call for spell checker.
Bug: 8187060
Change-Id: I2f91da12ba2a9e7ce28abd06f314e0e6125d08dc
diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
index 3213c92..9c095e4 100644
--- a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
@@ -25,34 +25,26 @@
import java.util.Locale;
public final class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryDictionary {
- private boolean mClosed;
+ private final Object mLock = new Object();
public SynchronouslyLoadedContactsBinaryDictionary(final Context context, final Locale locale) {
super(context, locale);
}
@Override
- public synchronized ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
+ public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
final String prevWordForBigrams, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
- reloadDictionaryIfRequired();
- return super.getSuggestions(codes, prevWordForBigrams, proximityInfo, blockOffensiveWords,
- additionalFeaturesOptions);
+ synchronized (mLock) {
+ return super.getSuggestions(codes, prevWordForBigrams, proximityInfo,
+ blockOffensiveWords, additionalFeaturesOptions);
+ }
}
@Override
- public synchronized boolean isValidWord(final String word) {
- reloadDictionaryIfRequired();
- return isValidWordInner(word);
- }
-
- // Protect against multiple closing
- @Override
- public synchronized void close() {
- // Actually with the current implementation of ContactsDictionary it's safe to close
- // several times, so the following protection is really only for foolproofing
- if (mClosed) return;
- mClosed = true;
- super.close();
+ public boolean isValidWord(final String word) {
+ synchronized (mLock) {
+ return super.isValidWord(word);
+ }
}
}
diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
index 9cb2f5b..9ccd9e4 100644
--- a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
@@ -25,6 +25,7 @@
import java.util.Locale;
public final class SynchronouslyLoadedUserBinaryDictionary extends UserBinaryDictionary {
+ private final Object mLock = new Object();
public SynchronouslyLoadedUserBinaryDictionary(final Context context, final Locale locale) {
this(context, locale, false);
@@ -36,17 +37,19 @@
}
@Override
- public synchronized ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
+ public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
final String prevWordForBigrams, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
- reloadDictionaryIfRequired();
- return super.getSuggestions(codes, prevWordForBigrams, proximityInfo, blockOffensiveWords,
- additionalFeaturesOptions);
+ synchronized (mLock) {
+ return super.getSuggestions(codes, prevWordForBigrams, proximityInfo,
+ blockOffensiveWords, additionalFeaturesOptions);
+ }
}
@Override
- public synchronized boolean isValidWord(final String word) {
- reloadDictionaryIfRequired();
- return isValidWordInner(word);
+ public boolean isValidWord(final String word) {
+ synchronized (mLock) {
+ return super.isValidWord(word);
+ }
}
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index c108b20..dae36f7 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -383,6 +383,8 @@
new Thread("spellchecker_close_dicts") {
@Override
public void run() {
+ // Contacts dictionary can be closed multiple times here. If the dictionary is
+ // already closed, extra closings are no-ops, so it's safe.
for (DictionaryPool pool : oldPools.values()) {
pool.close();
}