aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/LatinIME.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/LatinIME.java')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java127
1 files changed, 51 insertions, 76 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 38e386493..0c0be82df 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -215,7 +215,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
false /* includeResumedWordInSuggestions */);
break;
case MSG_REOPEN_DICTIONARIES:
- latinIme.initSuggest();
+ latinIme.resetSuggest();
// In theory we could call latinIme.updateSuggestionStrip() right away, but
// in the practice, the dictionary is not finished opening yet so we wouldn't
// get any suggestions. Wait one frame.
@@ -478,10 +478,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// TODO: Resolve mutual dependencies of {@link #loadSettings()} and {@link #initSuggest()}.
loadSettings();
- initSuggest();
+ resetSuggest();
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.getInstance().init(this, mKeyboardSwitcher);
+ ResearchLogger.getInstance().initDictionary(
+ mInputLogic.mSuggest.mDictionaryFacilitator);
}
// Register to receive ringer mode change and network state change.
@@ -520,31 +522,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// This method is called on startup and language switch, before the new layout has
// been displayed. Opening dictionaries never affects responsivity as dictionaries are
// asynchronously loaded.
- initOrResetSuggestForSettingsValues(mInputLogic.mSuggest, locale, currentSettingsValues);
- }
-
- private void initOrResetSuggestForSettingsValues(final Suggest oldSuggest,
- final Locale locale, final SettingsValues settingsValues) {
- if (!mHandler.hasPendingReopenDictionaries() && oldSuggest != null) {
- // May need to reset dictionaries depending on the user settings.
- final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
- oldSuggest.mDictionaryFacilitator;
- if (!oldDictionaryFacilitator.needsToBeRecreated(locale, settingsValues)) {
- // Continue to use the same dictionary facilitator if no configuration has changed.
- refreshPersonalizationDictionarySession();
- return;
- }
- final DictionaryFacilitatorForSuggest dictionaryFacilitator =
- new DictionaryFacilitatorForSuggest(settingsValues, oldDictionaryFacilitator);
- // Create Suggest instance with the new dictionary facilitator.
- replaceSuggest(new Suggest(oldSuggest, dictionaryFacilitator));
- } else if (oldSuggest == null) {
- initSuggest();
+ if (!mHandler.hasPendingReopenDictionaries()) {
+ resetSuggestForLocale(locale);
}
+ refreshPersonalizationDictionarySession();
}
private void refreshPersonalizationDictionarySession() {
- final Suggest suggest = mInputLogic.mSuggest;
+ final DictionaryFacilitatorForSuggest dictionaryFacilitator =
+ mInputLogic.mSuggest.mDictionaryFacilitator;
final boolean shouldKeepUserHistoryDictionaries;
final boolean shouldKeepPersonalizationDictionaries;
if (mSettings.getCurrent().mUsePersonalizedDicts) {
@@ -559,17 +545,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (!shouldKeepUserHistoryDictionaries) {
// Remove user history dictionaries.
PersonalizationHelper.removeAllUserHistoryDictionaries(this);
- if (suggest != null) {
- suggest.mDictionaryFacilitator.clearUserHistoryDictionary();
- }
+ dictionaryFacilitator.clearUserHistoryDictionary();
}
if (!shouldKeepPersonalizationDictionaries) {
// Remove personalization dictionaries.
PersonalizationHelper.removeAllPersonalizationDictionaries(this);
PersonalizationDictionarySessionRegistrar.resetAll(this);
} else {
- final DictionaryFacilitatorForSuggest dictionaryFacilitator =
- (suggest == null) ? null : suggest.mDictionaryFacilitator;
PersonalizationDictionarySessionRegistrar.init(this, dictionaryFacilitator);
}
}
@@ -583,7 +565,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
}
- private void initSuggest() {
+ private void resetSuggest() {
final Locale switcherSubtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
final String switcherLocaleStr = switcherSubtypeLocale.toString();
final Locale subtypeLocale;
@@ -599,47 +581,42 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} else {
subtypeLocale = switcherSubtypeLocale;
}
- initSuggestForLocale(mInputLogic.mSuggest, subtypeLocale);
+ resetSuggestForLocale(subtypeLocale);
}
- private void initSuggestForLocale(final Suggest oldSuggest, final Locale locale) {
- final SettingsValues settingsValues = mSettings.getCurrent();
- final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
- (oldSuggest == null) ? null : oldSuggest.mDictionaryFacilitator;
- // Creates new dictionary facilitator for the new locale.
+ /**
+ * Reset suggest by loading dictionaries for the locale and the current settings values.
+ *
+ * @param locale the locale
+ */
+ private void resetSuggestForLocale(final Locale locale) {
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
- new DictionaryFacilitatorForSuggest(this /* context */, locale, settingsValues,
- this /* DictionaryInitializationListener */, oldDictionaryFacilitator);
- final Suggest newSuggest = new Suggest(locale, dictionaryFacilitator);
+ mInputLogic.mSuggest.mDictionaryFacilitator;
+ final SettingsValues settingsValues = mSettings.getCurrent();
+ dictionaryFacilitator.resetDictionaries(this /* context */, locale,
+ settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts,
+ false /* forceReloadMainDictionary */, this);
if (settingsValues.mCorrectionEnabled) {
- newSuggest.setAutoCorrectionThreshold(settingsValues.mAutoCorrectionThreshold);
+ mInputLogic.mSuggest.setAutoCorrectionThreshold(
+ settingsValues.mAutoCorrectionThreshold);
}
- replaceSuggest(newSuggest);
}
+ /**
+ * Reset suggest by loading the main dictionary of the current locale.
+ */
/* package private */ void resetSuggestMainDict() {
- final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
- mInputLogic.mSuggest.mDictionaryFacilitator;
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
- new DictionaryFacilitatorForSuggest(this /* listener */, oldDictionaryFacilitator);
- replaceSuggest(new Suggest(mInputLogic.mSuggest /* oldSuggest */, dictionaryFacilitator));
- }
-
- private void replaceSuggest(final Suggest newSuggest) {
- if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
- ResearchLogger.getInstance().initDictionary(newSuggest.mDictionaryFacilitator);
- }
- mInputLogic.replaceSuggest(newSuggest);
- refreshPersonalizationDictionarySession();
+ mInputLogic.mSuggest.mDictionaryFacilitator;
+ final SettingsValues settingsValues = mSettings.getCurrent();
+ dictionaryFacilitator.resetDictionaries(this /* context */,
+ dictionaryFacilitator.getLocale(), settingsValues.mUseContactsDict,
+ settingsValues.mUsePersonalizedDicts, true /* forceReloadMainDictionary */, this);
}
@Override
public void onDestroy() {
- final Suggest suggest = mInputLogic.mSuggest;
- if (suggest != null) {
- suggest.close();
- mInputLogic.mSuggest = null;
- }
+ mInputLogic.mSuggest.mDictionaryFacilitator.closeDictionaries();
mSettings.onDestroy();
unregisterReceiver(mReceiver);
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
@@ -802,10 +779,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Note: the following does a round-trip IPC on the main thread: be careful
final Locale currentLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
- Suggest suggest = mInputLogic.mSuggest;
- if (null != suggest && null != currentLocale && !currentLocale.equals(suggest.mLocale)) {
- initSuggest();
- suggest = mInputLogic.mSuggest;
+ final Suggest suggest = mInputLogic.mSuggest;
+ if (null != currentLocale && !currentLocale.equals(suggest.getLocale())) {
+ // TODO: Do this automatically.
+ resetSuggest();
}
// TODO[IL]: Can the following be moved to InputLogic#startInput?
@@ -833,13 +810,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (isDifferentTextField ||
!currentSettingsValues.hasSameOrientation(getResources().getConfiguration())) {
loadSettings();
- suggest = mInputLogic.mSuggest;
}
if (isDifferentTextField) {
mainKeyboardView.closing();
currentSettingsValues = mSettings.getCurrent();
- if (suggest != null && currentSettingsValues.mCorrectionEnabled) {
+ if (currentSettingsValues.mCorrectionEnabled) {
suggest.setAutoCorrectionThreshold(currentSettingsValues.mAutoCorrectionThreshold);
}
@@ -865,8 +841,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mHandler.cancelUpdateSuggestionStrip();
- mainKeyboardView.setMainDictionaryAvailability(null != suggest
- ? suggest.mDictionaryFacilitator.hasMainDictionary() : false);
+ mainKeyboardView.setMainDictionaryAvailability(
+ suggest.mDictionaryFacilitator.hasInitializedMainDictionary());
mainKeyboardView.setKeyPreviewPopupEnabled(currentSettingsValues.mKeyPreviewPopupOn,
currentSettingsValues.mKeyPreviewPopupDismissDelay);
mainKeyboardView.setSlidingKeyInputPreviewEnabled(
@@ -1407,8 +1383,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
public void getSuggestedWords(final int sessionId, final int sequenceNumber,
final OnGetSuggestedWordsCallback callback) {
final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
- final Suggest suggest = mInputLogic.mSuggest;
- if (keyboard == null || suggest == null) {
+ if (keyboard == null) {
callback.onGetSuggestedWords(SuggestedWords.EMPTY);
return;
}
@@ -1437,7 +1412,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
}
}
- suggest.getSuggestedWords(mInputLogic.mWordComposer,
+ mInputLogic.mSuggest.getSuggestedWords(mInputLogic.mWordComposer,
mInputLogic.mWordComposer.getPreviousWordForSuggestion(),
keyboard.getProximityInfo(), currentSettings.mBlockPotentiallyOffensive,
currentSettings.mCorrectionEnabled, additionalFeaturesOptions, sessionId,
@@ -1722,12 +1697,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// DO NOT USE THIS for any other purpose than testing. This can break the keyboard badly.
@UsedForTesting
/* package for test */ void replaceDictionariesForTest(final Locale locale) {
- final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
- mInputLogic.mSuggest.mDictionaryFacilitator;
- final DictionaryFacilitatorForSuggest dictionaryFacilitator =
- new DictionaryFacilitatorForSuggest(this, locale, mSettings.getCurrent(),
- this /* listener */, oldDictionaryFacilitator);
- replaceSuggest(new Suggest(locale, dictionaryFacilitator));
+ final SettingsValues settingsValues = mSettings.getCurrent();
+ mInputLogic.mSuggest.mDictionaryFacilitator.resetDictionaries(this, locale,
+ settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts,
+ false /* forceReloadMainDictionary */, this /* listener */);
}
// DO NOT USE THIS for any other purpose than testing.
@@ -1738,8 +1711,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
public void dumpDictionaryForDebug(final String dictName) {
- if (mInputLogic.mSuggest == null) {
- initSuggest();
+ final DictionaryFacilitatorForSuggest dictionaryFacilitator =
+ mInputLogic.mSuggest.mDictionaryFacilitator;
+ if (dictionaryFacilitator.getLocale() == null) {
+ resetSuggest();
}
mInputLogic.mSuggest.mDictionaryFacilitator.dumpDictionaryForDebug(dictName);
}