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

Commit 281dd993 authored by Xiaojun Bi's avatar Xiaojun Bi
Browse files

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
parent 4ad798fc
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -536,7 +536,6 @@ public class DictionaryFacilitatorForSuggest {
        return maxFreq;
    }


    public void clearUserHistoryDictionary() {
        final UserHistoryDictionary userHistoryDict = mDictionaries.mUserHistoryDictionary;
        if (userHistoryDict == null) {
+14 −2
Original line number Diff line number Diff line
@@ -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);
    }

+5 −2
Original line number Diff line number Diff line
@@ -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) {
+48 −0
Original line number Diff line number Diff line
/*
 * 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;
    }
}