am e76c2735: Merge changes I20ce61c4,I2edab4e3
* commit 'e76c273502612c978761e32fe68402cab3db8ca6': Remove "Use only personalization dictionary". Remove redundant creation of dictionary facilitator.main
commit
6894cd8a09
|
@ -491,8 +491,6 @@ mobile devices. [CHAR LIMIT=25] -->
|
||||||
<string name="prefs_key_popup_dismiss_end_scale_settings" translatable="false">Key popup dismiss end scale</string>
|
<string name="prefs_key_popup_dismiss_end_scale_settings" translatable="false">Key popup dismiss end scale</string>
|
||||||
<!-- Title of the settings for reading an external dictionary file -->
|
<!-- Title of the settings for reading an external dictionary file -->
|
||||||
<string name="prefs_read_external_dictionary">Read external dictionary file</string>
|
<string name="prefs_read_external_dictionary">Read external dictionary file</string>
|
||||||
<!-- Title of the settings for using only personalization dictionary -->
|
|
||||||
<string name="prefs_use_only_personalization_dictionary" translatable="false">Use only personalization dictionary</string>
|
|
||||||
<!-- Message to show when there are no files to install as an external dictionary [CHAR LIMIT=100] -->
|
<!-- Message to show when there are no files to install as an external dictionary [CHAR LIMIT=100] -->
|
||||||
<string name="read_external_dictionary_no_files_message">No dictionary files in the Downloads folder</string>
|
<string name="read_external_dictionary_no_files_message">No dictionary files in the Downloads folder</string>
|
||||||
<!-- Title of the dialog that selects a file to install as an external dictionary [CHAR LIMIT=50] -->
|
<!-- Title of the dialog that selects a file to install as an external dictionary [CHAR LIMIT=50] -->
|
||||||
|
|
|
@ -65,11 +65,6 @@
|
||||||
android:key="pref_key_preview_dismiss_duration"
|
android:key="pref_key_preview_dismiss_duration"
|
||||||
android:title="@string/prefs_key_popup_dismiss_duration_settings"
|
android:title="@string/prefs_key_popup_dismiss_duration_settings"
|
||||||
latin:maxValue="100" /> <!-- milliseconds -->
|
latin:maxValue="100" /> <!-- milliseconds -->
|
||||||
<CheckBoxPreference
|
|
||||||
android:defaultValue="false"
|
|
||||||
android:key="use_only_personalization_dictionary_for_debug"
|
|
||||||
android:persistent="true"
|
|
||||||
android:title="@string/prefs_use_only_personalization_dictionary" />
|
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
android:key="read_external_dictionary"
|
android:key="read_external_dictionary"
|
||||||
android:title="@string/prefs_read_external_dictionary" />
|
android:title="@string/prefs_read_external_dictionary" />
|
||||||
|
|
|
@ -55,7 +55,6 @@ public class DictionaryFacilitatorForSuggest {
|
||||||
|
|
||||||
private final ConcurrentHashMap<String, Dictionary> mDictionaries =
|
private final ConcurrentHashMap<String, Dictionary> mDictionaries =
|
||||||
CollectionUtils.newConcurrentHashMap();
|
CollectionUtils.newConcurrentHashMap();
|
||||||
private HashSet<String> mDictionarySubsetForDebug = null;
|
|
||||||
|
|
||||||
private Dictionary mMainDictionary;
|
private Dictionary mMainDictionary;
|
||||||
private ContactsBinaryDictionary mContactsDictionary;
|
private ContactsBinaryDictionary mContactsDictionary;
|
||||||
|
@ -85,7 +84,6 @@ public class DictionaryFacilitatorForSuggest {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mLocale = locale;
|
mLocale = locale;
|
||||||
mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1);
|
mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1);
|
||||||
initForDebug(settingsValues);
|
|
||||||
loadMainDict(context, locale, listener);
|
loadMainDict(context, locale, listener);
|
||||||
setUserDictionary(new UserBinaryDictionary(context, locale));
|
setUserDictionary(new UserBinaryDictionary(context, locale));
|
||||||
resetAdditionalDictionaries(oldDictionaryFacilitator, settingsValues);
|
resetAdditionalDictionaries(oldDictionaryFacilitator, settingsValues);
|
||||||
|
@ -101,7 +99,6 @@ public class DictionaryFacilitatorForSuggest {
|
||||||
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) {
|
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) {
|
||||||
mContext = oldDictionaryFacilitator.mContext;
|
mContext = oldDictionaryFacilitator.mContext;
|
||||||
mLocale = oldDictionaryFacilitator.mLocale;
|
mLocale = oldDictionaryFacilitator.mLocale;
|
||||||
mDictionarySubsetForDebug = oldDictionaryFacilitator.mDictionarySubsetForDebug;
|
|
||||||
mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1);
|
mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1);
|
||||||
loadMainDict(mContext, mLocale, listener);
|
loadMainDict(mContext, mLocale, listener);
|
||||||
// Transfer user dictionary.
|
// Transfer user dictionary.
|
||||||
|
@ -130,7 +127,6 @@ public class DictionaryFacilitatorForSuggest {
|
||||||
mContext = oldDictionaryFacilitator.mContext;
|
mContext = oldDictionaryFacilitator.mContext;
|
||||||
mLocale = oldDictionaryFacilitator.mLocale;
|
mLocale = oldDictionaryFacilitator.mLocale;
|
||||||
mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0);
|
mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0);
|
||||||
initForDebug(settingsValues);
|
|
||||||
// Transfer main dictionary.
|
// Transfer main dictionary.
|
||||||
setMainDictionary(oldDictionaryFacilitator.mMainDictionary);
|
setMainDictionary(oldDictionaryFacilitator.mMainDictionary);
|
||||||
oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_MAIN);
|
oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_MAIN);
|
||||||
|
@ -197,12 +193,12 @@ public class DictionaryFacilitatorForSuggest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialize a debug flag for the personalization
|
public boolean needsToBeRecreated(final Locale newLocale,
|
||||||
private void initForDebug(final SettingsValues settingsValues) {
|
final SettingsValues newSettingsValues) {
|
||||||
if (settingsValues.mUseOnlyPersonalizationDictionaryForDebug) {
|
return !mLocale.equals(newLocale)
|
||||||
mDictionarySubsetForDebug = new HashSet<String>();
|
|| (newSettingsValues.mUseContactsDict != (mContactsDictionary != null))
|
||||||
mDictionarySubsetForDebug.add(Dictionary.TYPE_PERSONALIZATION);
|
|| (newSettingsValues.mUsePersonalizedDicts != (mUserHistoryDictionary != null))
|
||||||
}
|
|| (newSettingsValues.mUsePersonalizedDicts != hasPersonalizationDictionary());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
|
@ -531,10 +527,6 @@ public class DictionaryFacilitatorForSuggest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOrReplaceDictionary(final String key, final Dictionary dict) {
|
private void addOrReplaceDictionary(final String key, final Dictionary dict) {
|
||||||
if (mDictionarySubsetForDebug != null && !mDictionarySubsetForDebug.contains(key)) {
|
|
||||||
Log.w(TAG, "Ignore add " + key + " dictionary for debug.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final Dictionary oldDict;
|
final Dictionary oldDict;
|
||||||
if (dict == null) {
|
if (dict == null) {
|
||||||
oldDict = mDictionaries.remove(key);
|
oldDict = mDictionaries.remove(key);
|
||||||
|
|
|
@ -530,27 +530,31 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
final EditorInfo editorInfo = getCurrentInputEditorInfo();
|
final EditorInfo editorInfo = getCurrentInputEditorInfo();
|
||||||
final InputAttributes inputAttributes = new InputAttributes(editorInfo, isFullscreenMode());
|
final InputAttributes inputAttributes = new InputAttributes(editorInfo, isFullscreenMode());
|
||||||
mSettings.loadSettings(this, locale, inputAttributes);
|
mSettings.loadSettings(this, locale, inputAttributes);
|
||||||
AudioAndHapticFeedbackManager.getInstance().onSettingsChanged(mSettings.getCurrent());
|
|
||||||
// To load the keyboard we need to load all the settings once, but resetting the
|
|
||||||
// contacts dictionary should be deferred until after the new layout has been displayed
|
|
||||||
// to improve responsivity. In the language switching process, we post a reopenDictionaries
|
|
||||||
// message, then come here to read the settings for the new language before we change
|
|
||||||
// the layout; at this time, we need to skip resetting the contacts dictionary. It will
|
|
||||||
// be done later inside {@see #initSuggest()} when the reopenDictionaries message is
|
|
||||||
// processed.
|
|
||||||
final SettingsValues currentSettingsValues = mSettings.getCurrent();
|
final SettingsValues currentSettingsValues = mSettings.getCurrent();
|
||||||
final Suggest suggest = mInputLogic.mSuggest;
|
AudioAndHapticFeedbackManager.getInstance().onSettingsChanged(currentSettingsValues);
|
||||||
if (!mHandler.hasPendingReopenDictionaries() && suggest != null) {
|
// 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.
|
// May need to reset dictionaries depending on the user settings.
|
||||||
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
|
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
|
||||||
suggest.mDictionaryFacilitator;
|
oldSuggest.mDictionaryFacilitator;
|
||||||
|
if (!oldDictionaryFacilitator.needsToBeRecreated(locale, settingsValues)) {
|
||||||
|
// Continue to use the same dictionary facilitator if no configuration has changed.
|
||||||
|
refreshPersonalizationDictionarySession();
|
||||||
|
return;
|
||||||
|
}
|
||||||
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
||||||
new DictionaryFacilitatorForSuggest(currentSettingsValues,
|
new DictionaryFacilitatorForSuggest(settingsValues, oldDictionaryFacilitator);
|
||||||
oldDictionaryFacilitator);
|
|
||||||
// Create Suggest instance with the new dictionary facilitator.
|
// Create Suggest instance with the new dictionary facilitator.
|
||||||
resetSuggest(new Suggest(suggest /* oldSuggest */, dictionaryFacilitator));
|
replaceSuggest(new Suggest(oldSuggest, dictionaryFacilitator));
|
||||||
} else if (suggest == null) {
|
} else if (oldSuggest == null) {
|
||||||
initSuggestForLocale(locale);
|
initSuggestForLocale(oldSuggest, locale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -610,13 +614,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
} else {
|
} else {
|
||||||
subtypeLocale = switcherSubtypeLocale;
|
subtypeLocale = switcherSubtypeLocale;
|
||||||
}
|
}
|
||||||
initSuggestForLocale(subtypeLocale);
|
initSuggestForLocale(mInputLogic.mSuggest, subtypeLocale);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initSuggestForLocale(final Locale locale) {
|
private void initSuggestForLocale(final Suggest oldSuggest, final Locale locale) {
|
||||||
final SettingsValues settingsValues = mSettings.getCurrent();
|
final SettingsValues settingsValues = mSettings.getCurrent();
|
||||||
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
|
final DictionaryFacilitatorForSuggest oldDictionaryFacilitator =
|
||||||
(mInputLogic.mSuggest == null) ? null : mInputLogic.mSuggest.mDictionaryFacilitator;
|
(oldSuggest == null) ? null : oldSuggest.mDictionaryFacilitator;
|
||||||
// Creates new dictionary facilitator for the new locale.
|
// Creates new dictionary facilitator for the new locale.
|
||||||
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
||||||
new DictionaryFacilitatorForSuggest(this /* context */, locale, settingsValues,
|
new DictionaryFacilitatorForSuggest(this /* context */, locale, settingsValues,
|
||||||
|
@ -625,7 +629,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
if (settingsValues.mCorrectionEnabled) {
|
if (settingsValues.mCorrectionEnabled) {
|
||||||
newSuggest.setAutoCorrectionThreshold(settingsValues.mAutoCorrectionThreshold);
|
newSuggest.setAutoCorrectionThreshold(settingsValues.mAutoCorrectionThreshold);
|
||||||
}
|
}
|
||||||
resetSuggest(newSuggest);
|
replaceSuggest(newSuggest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* package private */ void resetSuggestMainDict() {
|
/* package private */ void resetSuggestMainDict() {
|
||||||
|
@ -633,10 +637,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
mInputLogic.mSuggest.mDictionaryFacilitator;
|
mInputLogic.mSuggest.mDictionaryFacilitator;
|
||||||
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
||||||
new DictionaryFacilitatorForSuggest(this /* listener */, oldDictionaryFacilitator);
|
new DictionaryFacilitatorForSuggest(this /* listener */, oldDictionaryFacilitator);
|
||||||
resetSuggest(new Suggest(mInputLogic.mSuggest /* oldSuggest */, dictionaryFacilitator));
|
replaceSuggest(new Suggest(mInputLogic.mSuggest /* oldSuggest */, dictionaryFacilitator));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetSuggest(final Suggest newSuggest) {
|
private void replaceSuggest(final Suggest newSuggest) {
|
||||||
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
|
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
|
||||||
ResearchLogger.getInstance().initDictionary(newSuggest.mDictionaryFacilitator);
|
ResearchLogger.getInstance().initDictionary(newSuggest.mDictionaryFacilitator);
|
||||||
}
|
}
|
||||||
|
@ -1733,7 +1737,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
|
||||||
new DictionaryFacilitatorForSuggest(this, locale, mSettings.getCurrent(),
|
new DictionaryFacilitatorForSuggest(this, locale, mSettings.getCurrent(),
|
||||||
this /* listener */, oldDictionaryFacilitator);
|
this /* listener */, oldDictionaryFacilitator);
|
||||||
resetSuggest(new Suggest(locale, dictionaryFacilitator));
|
replaceSuggest(new Suggest(locale, dictionaryFacilitator));
|
||||||
}
|
}
|
||||||
|
|
||||||
// DO NOT USE THIS for any other purpose than testing.
|
// DO NOT USE THIS for any other purpose than testing.
|
||||||
|
|
|
@ -59,6 +59,7 @@ public final class Suggest {
|
||||||
// Locale used for upper- and title-casing words
|
// Locale used for upper- and title-casing words
|
||||||
public final Locale mLocale;
|
public final Locale mLocale;
|
||||||
|
|
||||||
|
// TODO: Move dictionaryFacilitator constructing logics from LatinIME to Suggest.
|
||||||
public Suggest(final Locale locale,
|
public Suggest(final Locale locale,
|
||||||
final DictionaryFacilitatorForSuggest dictionaryFacilitator) {
|
final DictionaryFacilitatorForSuggest dictionaryFacilitator) {
|
||||||
mLocale = locale;
|
mLocale = locale;
|
||||||
|
|
|
@ -42,8 +42,6 @@ public final class DebugSettings extends PreferenceFragment
|
||||||
public static final String PREF_FORCE_NON_DISTINCT_MULTITOUCH = "force_non_distinct_multitouch";
|
public static final String PREF_FORCE_NON_DISTINCT_MULTITOUCH = "force_non_distinct_multitouch";
|
||||||
public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode";
|
public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode";
|
||||||
public static final String PREF_STATISTICS_LOGGING = "enable_logging";
|
public static final String PREF_STATISTICS_LOGGING = "enable_logging";
|
||||||
public static final String PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG =
|
|
||||||
"use_only_personalization_dictionary_for_debug";
|
|
||||||
public static final String PREF_KEY_PREVIEW_SHOW_UP_START_SCALE =
|
public static final String PREF_KEY_PREVIEW_SHOW_UP_START_SCALE =
|
||||||
"pref_key_preview_show_up_start_scale";
|
"pref_key_preview_show_up_start_scale";
|
||||||
public static final String PREF_KEY_PREVIEW_DISMISS_END_SCALE =
|
public static final String PREF_KEY_PREVIEW_DISMISS_END_SCALE =
|
||||||
|
|
|
@ -84,7 +84,6 @@ public final class SettingsValues {
|
||||||
public final float mAutoCorrectionThreshold;
|
public final float mAutoCorrectionThreshold;
|
||||||
public final boolean mCorrectionEnabled;
|
public final boolean mCorrectionEnabled;
|
||||||
public final int mSuggestionVisibility;
|
public final int mSuggestionVisibility;
|
||||||
public final boolean mUseOnlyPersonalizationDictionaryForDebug;
|
|
||||||
public final int mDisplayOrientation;
|
public final int mDisplayOrientation;
|
||||||
private final AsyncResultHolder<AppWorkaroundsUtils> mAppWorkarounds;
|
private final AsyncResultHolder<AppWorkaroundsUtils> mAppWorkarounds;
|
||||||
|
|
||||||
|
@ -168,8 +167,6 @@ public final class SettingsValues {
|
||||||
prefs, DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_SCALE,
|
prefs, DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_SCALE,
|
||||||
ResourceUtils.getFloatFromFraction(
|
ResourceUtils.getFloatFromFraction(
|
||||||
res, R.fraction.config_key_preview_dismiss_end_scale));
|
res, R.fraction.config_key_preview_dismiss_end_scale));
|
||||||
mUseOnlyPersonalizationDictionaryForDebug = prefs.getBoolean(
|
|
||||||
DebugSettings.PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG, false);
|
|
||||||
mDisplayOrientation = res.getConfiguration().orientation;
|
mDisplayOrientation = res.getConfiguration().orientation;
|
||||||
mAppWorkarounds = new AsyncResultHolder<AppWorkaroundsUtils>();
|
mAppWorkarounds = new AsyncResultHolder<AppWorkaroundsUtils>();
|
||||||
final PackageInfo packageInfo = TargetPackageInfoGetterTask.getCachedPackageInfo(
|
final PackageInfo packageInfo = TargetPackageInfoGetterTask.getCachedPackageInfo(
|
||||||
|
@ -390,8 +387,6 @@ public final class SettingsValues {
|
||||||
sb.append("" + mCorrectionEnabled);
|
sb.append("" + mCorrectionEnabled);
|
||||||
sb.append("\n mSuggestionVisibility = ");
|
sb.append("\n mSuggestionVisibility = ");
|
||||||
sb.append("" + mSuggestionVisibility);
|
sb.append("" + mSuggestionVisibility);
|
||||||
sb.append("\n mUseOnlyPersonalizationDictionaryForDebug = ");
|
|
||||||
sb.append("" + mUseOnlyPersonalizationDictionaryForDebug);
|
|
||||||
sb.append("\n mDisplayOrientation = ");
|
sb.append("\n mDisplayOrientation = ");
|
||||||
sb.append("" + mDisplayOrientation);
|
sb.append("" + mDisplayOrientation);
|
||||||
sb.append("\n mAppWorkarounds = ");
|
sb.append("\n mAppWorkarounds = ");
|
||||||
|
|
Loading…
Reference in New Issue