Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e76c2735 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge changes I20ce61c4,I2edab4e3

* changes:
  Remove "Use only personalization dictionary".
  Remove redundant creation of dictionary facilitator.
parents 858045b4 1aac28a2
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -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] -->
+0 −5
Original line number Original line Diff line number Diff line
@@ -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" />
+6 −14
Original line number Original line Diff line number Diff line
@@ -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);
+27 −23
Original line number Original line Diff line number Diff line
@@ -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.
+1 −0
Original line number Original line Diff line number Diff line
@@ -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;
Loading