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

Commit 740bf035 authored by Satoshi Kataoka's avatar Satoshi Kataoka Committed by Android Git Automerger
Browse files

am 366c0c51: Register personalization dictionary

* commit '366c0c51':
  Register personalization dictionary
parents ea916a2a 366c0c51
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ import com.android.inputmethod.keyboard.KeyboardSwitcher;
import com.android.inputmethod.keyboard.MainKeyboardView;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.define.ProductionFlag;
import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
import com.android.inputmethod.latin.personalization.PersonalizationDictionaryHelper;
import com.android.inputmethod.latin.personalization.PersonalizationDictionarySessionRegister;
import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
@@ -173,6 +174,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    private UserBinaryDictionary mUserDictionary;
    private UserHistoryPredictionDictionary mUserHistoryPredictionDictionary;
    private PersonalizationPredictionDictionary mPersonalizationPredictionDictionary;
    private PersonalizationDictionary mPersonalizationDictionary;
    private boolean mIsUserDictionaryAvailable;

    private LastComposedWord mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
@@ -567,6 +569,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        mUserHistoryPredictionDictionary = PersonalizationDictionaryHelper
                .getUserHistoryPredictionDictionary(this, localeStr, prefs);
        newSuggest.setUserHistoryPredictionDictionary(mUserHistoryPredictionDictionary);
        mPersonalizationDictionary = PersonalizationDictionaryHelper
                .getPersonalizationDictionary(this, localeStr, prefs);
        newSuggest.setPersonalizationDictionary(mPersonalizationDictionary);
        mPersonalizationPredictionDictionary = PersonalizationDictionaryHelper
                .getPersonalizationPredictionDictionary(this, localeStr, prefs);
        newSuggest.setPersonalizationPredictionDictionary(mPersonalizationPredictionDictionary);
+7 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.util.Log;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
import com.android.inputmethod.latin.personalization.UserHistoryPredictionDictionary;
import com.android.inputmethod.latin.settings.Settings;
@@ -200,6 +201,12 @@ public final class Suggest {
                personalizationPredictionDictionary);
    }

    public void setPersonalizationDictionary(
            final PersonalizationDictionary personalizationDictionary) {
        addOrReplaceDictionaryInternal(Dictionary.TYPE_PERSONALIZATION,
                personalizationDictionary);
    }

    public void setAutoCorrectionThreshold(float threshold) {
        mAutoCorrectionThreshold = threshold;
    }
+1 −1
Original line number Diff line number Diff line
@@ -389,7 +389,7 @@ public abstract class DynamicPredictionDictionaryBase extends ExpandableDictiona
    }

    public void registerUpdateSession(PersonalizationDictionaryUpdateSession session) {
        session.setPredictionDictionary(mLocale, this);
        session.setPredictionDictionary(this);
        mSessions.add(session);
        session.onDictionaryReady();
    }
+19 −9
Original line number Diff line number Diff line
@@ -18,28 +18,32 @@ package com.android.inputmethod.latin.personalization;

import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.ExpandableBinaryDictionary;
import com.android.inputmethod.latin.utils.CollectionUtils;

import android.content.Context;
import android.content.SharedPreferences;

import java.util.ArrayList;

/**
 * This class is a dictionary for the personalized language model that uses binary dictionary.
 */
public class PersonalizationDictionary extends ExpandableBinaryDictionary {
    private static final String NAME = "personalization";

    public static void registerUpdateListener(PersonalizationDictionaryUpdateSession listener) {
        // TODO: Implement
    }
    private final ArrayList<PersonalizationDictionaryUpdateSession> mSessions =
            CollectionUtils.newArrayList();

    /** Locale for which this user history dictionary is storing words */
    private final String mLocale;

    // Singleton
    private PersonalizationDictionary(final Context context, final String locale) {
    public PersonalizationDictionary(final Context context, final String locale,
            final SharedPreferences prefs) {
        // TODO: Make isUpdatable true.
        super(context, getFilenameWithLocale(NAME, locale), Dictionary.TYPE_PERSONALIZATION,
                false /* isUpdatable */);
        mLocale = locale;
        // TODO: Restore last updated time
        loadDictionary();
    }

    @Override
@@ -49,15 +53,21 @@ public class PersonalizationDictionary extends ExpandableBinaryDictionary {

    @Override
    protected boolean hasContentChanged() {
        // TODO: Implement
        return false;
    }

    @Override
    protected boolean needsToReloadBeforeWriting() {
        // TODO: Implement
        return false;
    }

    // TODO: Implement
    public void registerUpdateSession(PersonalizationDictionaryUpdateSession session) {
        session.setDictionary(this);
        mSessions.add(session);
        session.onDictionaryReady();
    }

    public void unRegisterUpdateSession(PersonalizationDictionaryUpdateSession session) {
        mSessions.remove(session);
    }
}
+39 −8
Original line number Diff line number Diff line
@@ -35,7 +35,13 @@ public class PersonalizationDictionaryHelper {

    private static final ConcurrentHashMap<String,
            SoftReference<PersonalizationPredictionDictionary>>
                    sLangPersonalizationDictCache = CollectionUtils.newConcurrentHashMap();
                    sLangPersonalizationPredictionDictCache =
                            CollectionUtils.newConcurrentHashMap();

    private static final ConcurrentHashMap<String,
            SoftReference<PersonalizationDictionary>>
                    sLangPersonalizationDictCache =
                            CollectionUtils.newConcurrentHashMap();

    public static UserHistoryPredictionDictionary getUserHistoryPredictionDictionary(
            final Context context, final String locale, final SharedPreferences sp) {
@@ -60,20 +66,45 @@ public class PersonalizationDictionaryHelper {
    }

    public static void registerPersonalizationDictionaryUpdateSession(final Context context,
            final PersonalizationDictionaryUpdateSession session) {
        final PersonalizationPredictionDictionary dictionary =
                getPersonalizationPredictionDictionary(context,
                        context.getResources().getConfiguration().locale.toString(),
            final PersonalizationDictionaryUpdateSession session, String locale) {
        final PersonalizationPredictionDictionary predictionDictionary =
                getPersonalizationPredictionDictionary(context, locale,
                        PreferenceManager.getDefaultSharedPreferences(context));
        predictionDictionary.registerUpdateSession(session);
        final PersonalizationDictionary dictionary =
                getPersonalizationDictionary(context, locale,
                        PreferenceManager.getDefaultSharedPreferences(context));
        dictionary.registerUpdateSession(session);
    }

    public static PersonalizationPredictionDictionary getPersonalizationPredictionDictionary(
    public static PersonalizationDictionary getPersonalizationDictionary(
            final Context context, final String locale, final SharedPreferences sp) {
        synchronized (sLangPersonalizationDictCache) {
            if (sLangPersonalizationDictCache.containsKey(locale)) {
                final SoftReference<PersonalizationPredictionDictionary> ref =
                final SoftReference<PersonalizationDictionary> ref =
                        sLangPersonalizationDictCache.get(locale);
                final PersonalizationDictionary dict = ref == null ? null : ref.get();
                if (dict != null) {
                    if (DEBUG) {
                        Log.w(TAG, "Use cached PersonalizationDictCache for " + locale);
                    }
                    return dict;
                }
            }
            final PersonalizationDictionary dict =
                    new PersonalizationDictionary(context, locale, sp);
            sLangPersonalizationDictCache.put(
                    locale, new SoftReference<PersonalizationDictionary>(dict));
            return dict;
        }
    }

    public static PersonalizationPredictionDictionary getPersonalizationPredictionDictionary(
            final Context context, final String locale, final SharedPreferences sp) {
        synchronized (sLangPersonalizationPredictionDictCache) {
            if (sLangPersonalizationPredictionDictCache.containsKey(locale)) {
                final SoftReference<PersonalizationPredictionDictionary> ref =
                        sLangPersonalizationPredictionDictCache.get(locale);
                final PersonalizationPredictionDictionary dict = ref == null ? null : ref.get();
                if (dict != null) {
                    if (DEBUG) {
@@ -84,7 +115,7 @@ public class PersonalizationDictionaryHelper {
            }
            final PersonalizationPredictionDictionary dict =
                    new PersonalizationPredictionDictionary(context, locale, sp);
            sLangPersonalizationDictCache.put(
            sLangPersonalizationPredictionDictCache.put(
                    locale, new SoftReference<PersonalizationPredictionDictionary>(dict));
            return dict;
        }
Loading