am e76c2735: Merge changes I20ce61c4,I2edab4e3

* commit 'e76c273502612c978761e32fe68402cab3db8ca6':
  Remove "Use only personalization dictionary".
  Remove redundant creation of dictionary facilitator.
main
Keisuke Kuroyanagi 2014-03-02 20:02:33 -08:00 committed by Android Git Automerger
commit 6894cd8a09
7 changed files with 34 additions and 51 deletions

View File

@ -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] -->

View File

@ -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" />

View File

@ -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);

View File

@ -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.

View File

@ -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;

View File

@ -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 =

View File

@ -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 = ");