aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorJatin Matani <jatinm@google.com>2015-02-02 17:10:38 -0800
committerJatin Matani <jatinm@google.com>2015-02-02 17:10:38 -0800
commit15acbdc9050a04f3c5d8724bb3902a57084c96db (patch)
tree223de661e1cd04dabd8a87cc46bc343b2c3f60f3 /java
parent174da5c39541dab78a9d82904f90c28a4c4be436 (diff)
downloadlatinime-15acbdc9050a04f3c5d8724bb3902a57084c96db.tar.gz
latinime-15acbdc9050a04f3c5d8724bb3902a57084c96db.tar.xz
latinime-15acbdc9050a04f3c5d8724bb3902a57084c96db.zip
Nuke Amanatto
Change-Id: Ieff2cd37f869dca69abf53ac32a576c2e45cc1e3
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitator.java24
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java86
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java24
-rw-r--r--java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java185
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java58
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java1
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/PersonalizationDataChunk.java39
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java46
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java36
9 files changed, 5 insertions, 494 deletions
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
index a0a1d939e..74ff6e6cb 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
@@ -17,21 +17,18 @@
package com.android.inputmethod.latin;
import android.content.Context;
-import android.view.inputmethod.InputMethodSubtype;
import android.util.Pair;
+import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.ExpandableBinaryDictionary.UpdateEntriesForInputEventsCallback;
-import com.android.inputmethod.latin.personalization.PersonalizationDataChunk;
import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
-import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
import com.android.inputmethod.latin.utils.SuggestionResults;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Locale;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -120,8 +117,6 @@ public interface DictionaryFacilitator {
boolean hasPersonalizationDictionary();
- void flushPersonalizationDictionary();
-
void waitForLoadingMainDictionaries(final long timeout, final TimeUnit unit)
throws InterruptedException;
@@ -152,21 +147,6 @@ public interface DictionaryFacilitator {
void clearUserHistoryDictionary();
- // This method gets called only when the IME receives a notification to remove the
- // personalization dictionary.
- void clearPersonalizationDictionary();
-
- void clearContextualDictionary();
-
- void addEntriesToPersonalizationDictionary(
- final PersonalizationDataChunk personalizationDataChunk,
- final SpacingAndPunctuations spacingAndPunctuations,
- final UpdateEntriesForInputEventsCallback callback);
-
- @UsedForTesting
- void addPhraseToContextualDictionary(final String[] phrase, final int probability,
- final int bigramProbabilityForWords, final int bigramProbabilityForPhrases);
-
void dumpDictionaryForDebug(final String dictName);
ArrayList<Pair<String, DictionaryStats>> getStatsOfEnabledSubDicts();
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
index 167501118..dc6329888 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
@@ -23,16 +23,11 @@ import android.util.Pair;
import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.ExpandableBinaryDictionary.UpdateEntriesForInputEventsCallback;
import com.android.inputmethod.latin.NgramContext.WordInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.common.Constants;
-import com.android.inputmethod.latin.personalization.ContextualDictionary;
-import com.android.inputmethod.latin.personalization.PersonalizationDataChunk;
-import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
-import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
import com.android.inputmethod.latin.utils.DistracterFilter;
import com.android.inputmethod.latin.utils.DistracterFilterCheckingExactMatchesAndSuggestions;
import com.android.inputmethod.latin.utils.DistracterFilterCheckingIsInDictionary;
@@ -83,16 +78,13 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
// To synchronize assigning mDictionaryGroup to ensure closing dictionaries.
private final Object mLock = new Object();
private final DistracterFilter mDistracterFilter;
- private final PersonalizationHelperForDictionaryFacilitator mPersonalizationHelper;
private static final String[] DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS =
new String[] {
Dictionary.TYPE_MAIN,
Dictionary.TYPE_USER_HISTORY,
- Dictionary.TYPE_PERSONALIZATION,
Dictionary.TYPE_USER,
Dictionary.TYPE_CONTACTS,
- Dictionary.TYPE_CONTEXTUAL
};
public static final Map<String, Class<? extends ExpandableBinaryDictionary>>
@@ -100,10 +92,8 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
static {
DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_USER_HISTORY, UserHistoryDictionary.class);
- DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_PERSONALIZATION, PersonalizationDictionary.class);
DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_USER, UserBinaryDictionary.class);
DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_CONTACTS, ContactsBinaryDictionary.class);
- DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_CONTEXTUAL, ContextualDictionary.class);
}
private static final String DICT_FACTORY_METHOD_NAME = "getDictionary";
@@ -257,23 +247,18 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
public DictionaryFacilitatorImpl() {
mDistracterFilter = DistracterFilter.EMPTY_DISTRACTER_FILTER;
- mPersonalizationHelper = null;
}
public DictionaryFacilitatorImpl(final Context context) {
mDistracterFilter = new DistracterFilterCheckingExactMatchesAndSuggestions(context);
- mPersonalizationHelper =
- new PersonalizationHelperForDictionaryFacilitator(context, mDistracterFilter);
}
public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
mDistracterFilter.updateEnabledSubtypes(enabledSubtypes);
- mPersonalizationHelper.updateEnabledSubtypes(enabledSubtypes);
}
// TODO: remove this, it's confusing with seamless multiple language switching
public void setIsMonolingualUser(final boolean isMonolingualUser) {
- mPersonalizationHelper.setIsMonolingualUser(isMonolingualUser);
}
public boolean isActive() {
@@ -586,9 +571,6 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
}
}
mDistracterFilter.close();
- if (mPersonalizationHelper != null) {
- mPersonalizationHelper.close();
- }
}
@UsedForTesting
@@ -630,20 +612,6 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
return false;
}
- public void flushPersonalizationDictionary() {
- final HashSet<ExpandableBinaryDictionary> personalizationDictsUsedForSuggestion =
- new HashSet<>();
- final DictionaryGroup[] dictionaryGroups = mDictionaryGroups;
- for (final DictionaryGroup dictionaryGroup : dictionaryGroups) {
- final ExpandableBinaryDictionary personalizationDictUsedForSuggestion =
- dictionaryGroup.getSubDict(Dictionary.TYPE_PERSONALIZATION);
- personalizationDictsUsedForSuggestion.add(personalizationDictUsedForSuggestion);
- }
- mPersonalizationHelper.flushPersonalizationDictionariesToUpdate(
- personalizationDictsUsedForSuggestion);
- mDistracterFilter.close();
- }
-
public void waitForLoadingMainDictionaries(final long timeout, final TimeUnit unit)
throws InterruptedException {
mLatchForWaitingLoadingMainDictionaries.await(timeout, unit);
@@ -861,64 +829,10 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
clearSubDictionary(Dictionary.TYPE_USER_HISTORY);
}
- // This method gets called only when the IME receives a notification to remove the
- // personalization dictionary.
- public void clearPersonalizationDictionary() {
- clearSubDictionary(Dictionary.TYPE_PERSONALIZATION);
- mPersonalizationHelper.clearDictionariesToUpdate();
- }
-
public void clearContextualDictionary() {
clearSubDictionary(Dictionary.TYPE_CONTEXTUAL);
}
- public void addEntriesToPersonalizationDictionary(
- final PersonalizationDataChunk personalizationDataChunk,
- final SpacingAndPunctuations spacingAndPunctuations,
- final UpdateEntriesForInputEventsCallback callback) {
- mPersonalizationHelper.updateEntriesOfPersonalizationDictionaries(
- getMostProbableLocale(), personalizationDataChunk, spacingAndPunctuations,
- callback);
- }
-
- @UsedForTesting
- public void addPhraseToContextualDictionary(final String[] phrase, final int probability,
- final int bigramProbabilityForWords, final int bigramProbabilityForPhrases) {
- // TODO: we're inserting the phrase into the dictionary for the active language. Rethink
- // this a bit from a theoretical point of view.
- final ExpandableBinaryDictionary contextualDict =
- getDictionaryGroupForMostProbableLanguage().getSubDict(Dictionary.TYPE_CONTEXTUAL);
- if (contextualDict == null) {
- return;
- }
- NgramContext ngramContext = NgramContext.BEGINNING_OF_SENTENCE;
- for (int i = 0; i < phrase.length; i++) {
- final String[] subPhrase = Arrays.copyOfRange(phrase, i /* start */, phrase.length);
- final String subPhraseStr = TextUtils.join(Constants.WORD_SEPARATOR, subPhrase);
- contextualDict.addUnigramEntryWithCheckingDistracter(
- subPhraseStr, probability, null /* shortcutTarget */,
- Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
- false /* isNotAWord */, false /* isPossiblyOffensive */,
- BinaryDictionary.NOT_A_VALID_TIMESTAMP,
- DistracterFilter.EMPTY_DISTRACTER_FILTER);
- contextualDict.addNgramEntry(ngramContext, subPhraseStr,
- bigramProbabilityForPhrases, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
-
- if (i < phrase.length - 1) {
- contextualDict.addUnigramEntryWithCheckingDistracter(
- phrase[i], probability, null /* shortcutTarget */,
- Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
- false /* isNotAWord */, false /* isPossiblyOffensive */,
- BinaryDictionary.NOT_A_VALID_TIMESTAMP,
- DistracterFilter.EMPTY_DISTRACTER_FILTER);
- contextualDict.addNgramEntry(ngramContext, phrase[i],
- bigramProbabilityForWords, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
- }
- ngramContext =
- ngramContext.getNextNgramContext(new NgramContext.WordInfo(phrase[i]));
- }
- }
-
public void dumpDictionaryForDebug(final String dictName) {
final DictionaryGroup[] dictionaryGroups = mDictionaryGroups;
for (final DictionaryGroup dictionaryGroup : dictionaryGroups) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 622cdb0a6..15827fc17 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -81,9 +81,7 @@ import com.android.inputmethod.latin.common.InputPointers;
import com.android.inputmethod.latin.define.DebugFlags;
import com.android.inputmethod.latin.define.ProductionFlags;
import com.android.inputmethod.latin.inputlogic.InputLogic;
-import com.android.inputmethod.latin.personalization.ContextualDictionaryUpdater;
import com.android.inputmethod.latin.personalization.DictionaryDecayBroadcastReciever;
-import com.android.inputmethod.latin.personalization.PersonalizationDictionaryUpdater;
import com.android.inputmethod.latin.personalization.PersonalizationHelper;
import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.settings.SettingsActivity;
@@ -139,19 +137,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private static final String SCHEME_PACKAGE = "package";
final Settings mSettings;
- private final DictionaryFacilitator mDictionaryFacilitator =
+ private final DictionaryFacilitator mDictionaryFacilitator =
DictionaryFacilitatorProvider.newDictionaryFacilitator(this /* context */);
- // TODO: Move from LatinIME.
- private final PersonalizationDictionaryUpdater mPersonalizationDictionaryUpdater =
- new PersonalizationDictionaryUpdater(this /* context */, mDictionaryFacilitator);
- private final ContextualDictionaryUpdater mContextualDictionaryUpdater =
- new ContextualDictionaryUpdater(this /* context */, mDictionaryFacilitator,
- new Runnable() {
- @Override
- public void run() {
- mHandler.postUpdateSuggestionStrip(SuggestedWords.INPUT_STYLE_NONE);
- }
- });
final InputLogic mInputLogic = new InputLogic(this /* LatinIME */,
this /* SuggestionStripViewAccessor */, mDictionaryFacilitator);
// We expect to have only one decoder in almost all cases, hence the default capacity of 1.
@@ -642,11 +629,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private void refreshPersonalizationDictionarySession(
final SettingsValues currentSettingsValues) {
+ // TODO: Remove all existing personalized dictionaries.
mDictionaryFacilitator.setIsMonolingualUser(
mRichImm.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes());
- mPersonalizationDictionaryUpdater.onLoadSettings(
- currentSettingsValues.mUsePersonalizedDicts);
- mContextualDictionaryUpdater.onLoadSettings(currentSettingsValues.mUsePersonalizedDicts);
final boolean shouldKeepUserHistoryDictionaries;
if (currentSettingsValues.mUsePersonalizedDicts) {
shouldKeepUserHistoryDictionaries = true;
@@ -730,8 +715,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
@Override
public void onDestroy() {
mDictionaryFacilitator.closeDictionaries();
- mPersonalizationDictionaryUpdater.onDestroy();
- mContextualDictionaryUpdater.onDestroy();
mSettings.onDestroy();
NetworkConnectivityUtils.onDestroy(this /* context */);
unregisterReceiver(mRingerModeChangeReceiver);
@@ -1050,8 +1033,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
currentSettingsValues.mGestureTrailEnabled,
currentSettingsValues.mGestureFloatingPreviewTextEnabled);
- // Contextual dictionary should be updated for the current application.
- mContextualDictionaryUpdater.onStartInputView(editorInfo.packageName);
if (TRACE) Debug.startMethodTracing("/data/trace/latinime");
}
@@ -1943,7 +1924,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
@UsedForTesting
/* package for test */ void clearPersonalizedDictionariesForTest() {
mDictionaryFacilitator.clearUserHistoryDictionary();
- mDictionaryFacilitator.clearPersonalizationDictionary();
}
@UsedForTesting
diff --git a/java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java
deleted file mode 100644
index 8926c06b1..000000000
--- a/java/src/com/android/inputmethod/latin/PersonalizationHelperForDictionaryFacilitator.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import android.content.Context;
-import android.view.inputmethod.InputMethodSubtype;
-
-import com.android.inputmethod.latin.ExpandableBinaryDictionary.UpdateEntriesForInputEventsCallback;
-import com.android.inputmethod.latin.personalization.PersonalizationDataChunk;
-import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
-import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
-import com.android.inputmethod.latin.utils.DistracterFilter;
-import com.android.inputmethod.latin.utils.DistracterFilterCheckingIsInDictionary;
-import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
-import com.android.inputmethod.latin.utils.WordInputEventForPersonalization;
-
-/**
- * Class for managing and updating personalization dictionaries.
- */
-public class PersonalizationHelperForDictionaryFacilitator {
- private final Context mContext;
- private final DistracterFilter mDistracterFilter;
- private final HashMap<String, HashSet<Locale>> mLangToLocalesMap = new HashMap<>();
- private final HashMap<Locale, ExpandableBinaryDictionary> mPersonalizationDictsToUpdate =
- new HashMap<>();
- private boolean mIsMonolingualUser = false;
-
- PersonalizationHelperForDictionaryFacilitator(final Context context,
- final DistracterFilter distracterFilter) {
- mContext = context;
- mDistracterFilter = distracterFilter;
- }
-
- public void close() {
- mLangToLocalesMap.clear();
- for (final ExpandableBinaryDictionary dict : mPersonalizationDictsToUpdate.values()) {
- dict.close();
- }
- mPersonalizationDictsToUpdate.clear();
- }
-
- public void clearDictionariesToUpdate() {
- for (final ExpandableBinaryDictionary dict : mPersonalizationDictsToUpdate.values()) {
- dict.clear();
- }
- mPersonalizationDictsToUpdate.clear();
- }
-
- public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
- for (final InputMethodSubtype subtype : enabledSubtypes) {
- final Locale locale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
- final String language = locale.getLanguage();
- final HashSet<Locale> locales = mLangToLocalesMap.get(language);
- if (locales != null) {
- locales.add(locale);
- } else {
- final HashSet<Locale> localeSet = new HashSet<>();
- localeSet.add(locale);
- mLangToLocalesMap.put(language, localeSet);
- }
- }
- }
-
- public void setIsMonolingualUser(final boolean isMonolingualUser) {
- mIsMonolingualUser = isMonolingualUser;
- }
-
- /**
- * Flush personalization dictionaries to dictionary files. Close dictionaries after writing
- * files except the dictionaries that is used for generating suggestions.
- *
- * @param personalizationDictsUsedForSuggestion the personalization dictionaries used for
- * generating suggestions that won't be closed.
- */
- public void flushPersonalizationDictionariesToUpdate(
- final HashSet<ExpandableBinaryDictionary> personalizationDictsUsedForSuggestion) {
- for (final ExpandableBinaryDictionary personalizationDict :
- mPersonalizationDictsToUpdate.values()) {
- personalizationDict.asyncFlushBinaryDictionary();
- if (!personalizationDictsUsedForSuggestion.contains(personalizationDict)) {
- // Close if the dictionary is not being used for suggestion.
- personalizationDict.close();
- }
- }
- mDistracterFilter.close();
- mPersonalizationDictsToUpdate.clear();
- }
-
- private ExpandableBinaryDictionary getPersonalizationDictToUpdate(final Context context,
- final Locale locale) {
- ExpandableBinaryDictionary personalizationDict = mPersonalizationDictsToUpdate.get(locale);
- if (personalizationDict != null) {
- return personalizationDict;
- }
- personalizationDict = PersonalizationDictionary.getDictionary(context, locale,
- null /* dictFile */, "" /* dictNamePrefix */, null /* account */);
- mPersonalizationDictsToUpdate.put(locale, personalizationDict);
- return personalizationDict;
- }
-
- private void updateEntriesOfPersonalizationDictionariesForLocale(final Locale locale,
- final PersonalizationDataChunk personalizationDataChunk,
- final SpacingAndPunctuations spacingAndPunctuations,
- final UpdateEntriesForInputEventsCallback callback) {
- final ExpandableBinaryDictionary personalizationDict =
- getPersonalizationDictToUpdate(mContext, locale);
- if (personalizationDict == null) {
- if (callback != null) {
- callback.onFinished();
- }
- return;
- }
- final ArrayList<WordInputEventForPersonalization> inputEvents =
- WordInputEventForPersonalization.createInputEventFrom(
- personalizationDataChunk.mTokens,
- personalizationDataChunk.mTimestampInSeconds, spacingAndPunctuations,
- locale, new DistracterFilterCheckingIsInDictionary(
- mDistracterFilter, personalizationDict));
- if (inputEvents == null || inputEvents.isEmpty()) {
- if (callback != null) {
- callback.onFinished();
- }
- return;
- }
- personalizationDict.updateEntriesForInputEvents(inputEvents, callback);
- }
-
- public void updateEntriesOfPersonalizationDictionaries(final Locale defaultLocale,
- final PersonalizationDataChunk personalizationDataChunk,
- final SpacingAndPunctuations spacingAndPunctuations,
- final UpdateEntriesForInputEventsCallback callback) {
- final String language = personalizationDataChunk.mDetectedLanguage;
- final HashSet<Locale> locales;
- if (mIsMonolingualUser && PersonalizationDataChunk.LANGUAGE_UNKNOWN.equals(language)
- && mLangToLocalesMap.size() == 1) {
- locales = mLangToLocalesMap.get(defaultLocale.getLanguage());
- } else {
- locales = mLangToLocalesMap.get(language);
- }
- if (locales == null || locales.isEmpty()) {
- if (callback != null) {
- callback.onFinished();
- }
- return;
- }
- final AtomicInteger remainingTaskCount = new AtomicInteger(locales.size());
- final UpdateEntriesForInputEventsCallback callbackForLocales =
- new UpdateEntriesForInputEventsCallback() {
- @Override
- public void onFinished() {
- if (remainingTaskCount.decrementAndGet() == 0) {
- // Update tasks for all locales have been finished.
- if (callback != null) {
- callback.onFinished();
- }
- }
- }
- };
- for (final Locale locale : locales) {
- updateEntriesOfPersonalizationDictionariesForLocale(locale, personalizationDataChunk,
- spacingAndPunctuations, callbackForLocales);
- }
- }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
deleted file mode 100644
index f663fe96a..000000000
--- a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.personalization;
-
-import android.content.Context;
-
-import com.android.inputmethod.annotations.ExternallyReferenced;
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.latin.ExpandableBinaryDictionary;
-
-import java.io.File;
-import java.util.Locale;
-
-import javax.annotation.Nullable;
-
-public class ContextualDictionary extends ExpandableBinaryDictionary {
- /* package */ static final String NAME = ContextualDictionary.class.getSimpleName();
-
- private ContextualDictionary(final Context context, final Locale locale,
- final File dictFile) {
- super(context, getDictName(NAME, locale, dictFile), locale, Dictionary.TYPE_CONTEXTUAL,
- dictFile);
- // Always reset the contents.
- clear();
- }
-
- // Note: This method is called by {@link DictionaryFacilitator} using Java reflection.
- @SuppressWarnings("unused")
- @ExternallyReferenced
- public static ContextualDictionary getDictionary(final Context context, final Locale locale,
- final File dictFile, final String dictNamePrefix, @Nullable final String account) {
- return new ContextualDictionary(context, locale, dictFile);
- }
-
- @Override
- public boolean isValidWord(final String word) {
- // Strings out of this dictionary should not be considered existing words.
- return false;
- }
-
- @Override
- protected void loadInitialContentsLocked() {
- }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
index e974f3320..0c5e5d010 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
@@ -84,7 +84,6 @@ public class DictionaryDecayBroadcastReciever extends BroadcastReceiver {
final String action = intent.getAction();
if (action.equals(DICTIONARY_DECAY_INTENT_ACTION)) {
PersonalizationHelper.runGCOnAllOpenedUserHistoryDictionaries();
- PersonalizationHelper.runGCOnAllOpenedPersonalizationDictionaries();
}
}
}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDataChunk.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDataChunk.java
deleted file mode 100644
index 734ed5583..000000000
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDataChunk.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.personalization;
-
-import java.util.Collections;
-import java.util.List;
-
-public class PersonalizationDataChunk {
- public static final String LANGUAGE_UNKNOWN = "";
-
- public final boolean mInputByUser;
- public final List<String> mTokens;
- public final int mTimestampInSeconds;
- public final String mPackageName;
- public final String mDetectedLanguage;
-
- public PersonalizationDataChunk(boolean inputByUser, final List<String> tokens,
- final int timestampInSeconds, final String packageName, final String detectedLanguage) {
- mInputByUser = inputByUser;
- mTokens = Collections.unmodifiableList(tokens);
- mTimestampInSeconds = timestampInSeconds;
- mPackageName = packageName;
- mDetectedLanguage = detectedLanguage;
- }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
deleted file mode 100644
index 76451cc6b..000000000
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.personalization;
-
-import android.content.Context;
-
-import com.android.inputmethod.annotations.ExternallyReferenced;
-import com.android.inputmethod.latin.Dictionary;
-
-import java.io.File;
-import java.util.Locale;
-
-import javax.annotation.Nullable;
-
-public class PersonalizationDictionary extends DecayingExpandableBinaryDictionaryBase {
- /* package */ static final String NAME = PersonalizationDictionary.class.getSimpleName();
-
- // TODO: Make this constructor private
- /* package */ PersonalizationDictionary(final Context context, final Locale locale) {
- super(context, getDictName(NAME, locale, null /* dictFile */), locale,
- Dictionary.TYPE_PERSONALIZATION, null /* dictFile */);
- }
-
- // Note: This method is called by {@link DictionaryFacilitator} using Java reflection.
- @SuppressWarnings("unused")
- @ExternallyReferenced
- public static PersonalizationDictionary getDictionary(final Context context,
- final Locale locale, final File dictFile, final String dictNamePrefix,
- @Nullable final String account) {
- return PersonalizationHelper.getPersonalizationDictionary(context, locale);
- }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
index 4231450c1..1c1cb4f95 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -32,8 +32,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
/**
- * Helps handle and manage personalized dictionaries such as {@link UserHistoryDictionary} and
- * {@link PersonalizationDictionary}.
+ * Helps handle and manage personalized dictionaries such as {@link UserHistoryDictionary}.
*/
public class PersonalizationHelper {
private static final String TAG = PersonalizationHelper.class.getSimpleName();
@@ -41,8 +40,6 @@ public class PersonalizationHelper {
private static final ConcurrentHashMap<String, SoftReference<UserHistoryDictionary>>
sLangUserHistoryDictCache = new ConcurrentHashMap<>();
- private static final ConcurrentHashMap<String, SoftReference<PersonalizationDictionary>>
- sLangPersonalizationDictCache = new ConcurrentHashMap<>();
@Nonnull
public static UserHistoryDictionary getUserHistoryDictionary(
@@ -77,7 +74,6 @@ public class PersonalizationHelper {
DictionaryDecayBroadcastReciever.DICTIONARY_DECAY_INTERVAL_IN_MILLIS)
< currentTimestamp - sCurrentTimestampForTesting) {
runGCOnAllOpenedUserHistoryDictionaries();
- runGCOnAllOpenedPersonalizationDictionaries();
}
}
@@ -85,10 +81,6 @@ public class PersonalizationHelper {
runGCOnAllDictionariesIfRequired(sLangUserHistoryDictCache);
}
- public static void runGCOnAllOpenedPersonalizationDictionaries() {
- runGCOnAllDictionariesIfRequired(sLangPersonalizationDictCache);
- }
-
private static <T extends DecayingExpandableBinaryDictionaryBase>
void runGCOnAllDictionariesIfRequired(
final ConcurrentHashMap<String, SoftReference<T>> dictionaryMap) {
@@ -103,32 +95,6 @@ public class PersonalizationHelper {
}
}
- public static PersonalizationDictionary getPersonalizationDictionary(
- final Context context, final Locale locale) {
- final String localeStr = locale.toString();
- synchronized (sLangPersonalizationDictCache) {
- if (sLangPersonalizationDictCache.containsKey(localeStr)) {
- final SoftReference<PersonalizationDictionary> ref =
- sLangPersonalizationDictCache.get(localeStr);
- final PersonalizationDictionary dict = ref == null ? null : ref.get();
- if (dict != null) {
- if (DEBUG) {
- Log.w(TAG, "Use cached PersonalizationDictionary for " + locale);
- }
- return dict;
- }
- }
- final PersonalizationDictionary dict = new PersonalizationDictionary(context, locale);
- sLangPersonalizationDictCache.put(localeStr, new SoftReference<>(dict));
- return dict;
- }
- }
-
- public static void removeAllPersonalizationDictionaries(final Context context) {
- removeAllDictionaries(context, sLangPersonalizationDictCache,
- PersonalizationDictionary.NAME);
- }
-
public static void removeAllUserHistoryDictionaries(final Context context) {
removeAllDictionaries(context, sLangUserHistoryDictCache,
UserHistoryDictionary.NAME);