Prepare to implement distracter filter

It was implemented according to the Plan B in the
design doc:
http://go/ime-misspelling-filter

This CL is to create a DistracterFilter instance
and pass it to PersonalizationDictionarySessionRegistrar.

This patch should be checked in together with
Id633b4fd45693

Bug: 13142176
Change-Id: Ia4957e64218c9619fcf9bb91795a187617c72a2e
This commit is contained in:
Xiaojun Bi 2014-04-16 09:24:08 -07:00
parent 4ad798fc0f
commit 281dd99346
4 changed files with 67 additions and 5 deletions

View file

@ -536,7 +536,6 @@ public class DictionaryFacilitatorForSuggest {
return maxFreq;
}
public void clearUserHistoryDictionary() {
final UserHistoryDictionary userHistoryDict = mDictionaries.mUserHistoryDictionary;
if (userHistoryDict == null) {

View file

@ -84,6 +84,7 @@ import com.android.inputmethod.latin.utils.ApplicationUtils;
import com.android.inputmethod.latin.utils.CapsModeUtils;
import com.android.inputmethod.latin.utils.CoordinateUtils;
import com.android.inputmethod.latin.utils.DialogUtils;
import com.android.inputmethod.latin.utils.DistracterFilter;
import com.android.inputmethod.latin.utils.ImportantNoticeUtils;
import com.android.inputmethod.latin.utils.IntentUtils;
import com.android.inputmethod.latin.utils.JniUtils;
@ -540,6 +541,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
refreshPersonalizationDictionarySession();
}
private DistracterFilter createDistracterFilter() {
final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
final Keyboard keyboard = mainKeyboardView.getKeyboard();
final DistracterFilter distracterFilter = new DistracterFilter(mInputLogic.mSuggest,
keyboard);
return distracterFilter;
}
private void refreshPersonalizationDictionarySession() {
final DictionaryFacilitatorForSuggest dictionaryFacilitator =
mInputLogic.mSuggest.mDictionaryFacilitator;
@ -564,7 +573,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
PersonalizationHelper.removeAllPersonalizationDictionaries(this);
PersonalizationDictionarySessionRegistrar.resetAll(this);
} else {
PersonalizationDictionarySessionRegistrar.init(this, dictionaryFacilitator);
final DistracterFilter distracterFilter = createDistracterFilter();
PersonalizationDictionarySessionRegistrar.init(
this, dictionaryFacilitator, distracterFilter);
}
}
@ -662,8 +673,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mInputLogic.mConnection.finishComposingText();
mInputLogic.mConnection.endBatchEdit();
}
final DistracterFilter distracterFilter = createDistracterFilter();
PersonalizationDictionarySessionRegistrar.onConfigurationChanged(this, conf,
mInputLogic.mSuggest.mDictionaryFacilitator);
mInputLogic.mSuggest.mDictionaryFacilitator, distracterFilter);
super.onConfigurationChanged(conf);
}

View file

@ -20,14 +20,17 @@ import android.content.Context;
import android.content.res.Configuration;
import com.android.inputmethod.latin.DictionaryFacilitatorForSuggest;
import com.android.inputmethod.latin.utils.DistracterFilter;
public class PersonalizationDictionarySessionRegistrar {
public static void init(final Context context,
final DictionaryFacilitatorForSuggest dictionaryFacilitator) {
final DictionaryFacilitatorForSuggest dictionaryFacilitator,
final DistracterFilter distracterFilter) {
}
public static void onConfigurationChanged(final Context context, final Configuration conf,
final DictionaryFacilitatorForSuggest dictionaryFacilitator) {
final DictionaryFacilitatorForSuggest dictionaryFacilitator,
final DistracterFilter distracterFilter) {
}
public static void onUpdateData(final Context context, final String type) {

View file

@ -0,0 +1,48 @@
/*
* 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.utils;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.Suggest;
/**
* This class is used to prevent distracters/misspellings being added to personalization
* or user history dictionaries
*/
public class DistracterFilter {
private final Suggest mSuggest;
private final Keyboard mKeyboard;
/**
* Create a DistracterFilter instance.
*
* @param suggest an instance of Suggest which will be used to obtain a list of suggestions
* for a potential distracter/misspelling
* @param keyboard the keyboard that is currently being used. This information is needed
* when calling mSuggest.getSuggestedWords(...) to obtain a list of suggestions.
*/
public DistracterFilter(final Suggest suggest, final Keyboard keyboard) {
mSuggest = suggest;
mKeyboard = keyboard;
}
public boolean isDistractorToWordsInDictionaries(final String prevWord,
final String targetWord) {
// TODO: to be implemented
return false;
}
}