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

Commit bae68484 authored by Mohammadinamul Sheik's avatar Mohammadinamul Sheik Committed by Android (Google) Code Review
Browse files

Merge "AOSP changes to use KeyboardLayout to support the new DictionaryFacilitator"

parents c71e4d65 b00c0541
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -175,10 +175,12 @@ public final class Constants {
    public static final int MAX_CHARACTERS_FOR_RECAPITALIZATION = 1024 * 100;

    // Must be equal to MAX_WORD_LENGTH in native/jni/src/defines.h
    // TODO: create a overlay and update the value appropriately for the new decoder.
    public static final int DICTIONARY_MAX_WORD_LENGTH = 48;

    // (MAX_PREV_WORD_COUNT_FOR_N_GRAM + 1)-gram is supported in Java side. Needs to modify
    // MAX_PREV_WORD_COUNT_FOR_N_GRAM in native/jni/src/defines.h for suggestions.
    // TODO: create a overlay and update the value appropriately for the new decoder.
    public static final int MAX_PREV_WORD_COUNT_FOR_N_GRAM = 3;

    // Key events coming any faster than this are long-presses.
@@ -330,6 +332,10 @@ public final class Constants {
     */
    public static final int DEFAULT_GESTURE_POINTS_CAPACITY = 128;

    public static final int MAX_IME_DECODER_RESULTS = 20;
    public static final int DECODER_SCORE_SCALAR = 1000000;
    public static final int DECODER_MAX_SCORE = 1000000000;

    private Constants() {
        // This utility class is not publicly instantiable.
    }
+3 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.util.Pair;
import android.view.inputmethod.InputMethodSubtype;

import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.keyboard.KeyboardLayout;
import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
import com.android.inputmethod.latin.utils.SuggestionResults;

@@ -131,7 +132,8 @@ public interface DictionaryFacilitator {
    // TODO: Revise the way to fusion suggestion results.
    SuggestionResults getSuggestionResults(final WordComposer composer,
            final NgramContext ngramContext, final long proximityInfoHandle,
            final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId);
            final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId,
            final int inputStyle, final KeyboardLayout keyboardLayout);

    boolean isValidWord(final String word, final boolean ignoreCase);

+6 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.util.Pair;
import android.view.inputmethod.InputMethodSubtype;

import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.keyboard.KeyboardLayout;
import com.android.inputmethod.latin.NgramContext.WordInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.common.Constants;
@@ -699,9 +700,11 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
    }

    // TODO: Revise the way to fusion suggestion results.
    public SuggestionResults getSuggestionResults(final WordComposer composer,
            final NgramContext ngramContext, final long proximityInfoHandle,
            final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) {
    @Override
    public SuggestionResults getSuggestionResults(WordComposer composer,
            NgramContext ngramContext, long proximityInfoHandle,
            SettingsValuesForSuggestion settingsValuesForSuggestion, int sessionId,
            int inputStyle, KeyboardLayout keyboardLayout) {
        final DictionaryGroup[] dictionaryGroups = mDictionaryGroups;
        final SuggestionResults suggestionResults = new SuggestionResults(
                SuggestedWords.MAX_SUGGESTIONS, ngramContext.isBeginningOfSentenceContext());
+2 −1
Original line number Diff line number Diff line
@@ -1520,7 +1520,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
            return;
        }
        mInputLogic.getSuggestedWords(mSettings.getCurrent(), keyboard.getProximityInfo(),
                mKeyboardSwitcher.getKeyboardShiftMode(), inputStyle, sequenceNumber, callback);
                mKeyboardSwitcher.getKeyboardShiftMode(), inputStyle, sequenceNumber, callback,
                keyboard.getKeyboardLayout());
    }

    @Override
+30 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.common.Constants;
import com.android.inputmethod.latin.common.StringUtils;

import java.util.ArrayList;
import java.util.Arrays;

import javax.annotation.Nonnull;
@@ -38,6 +39,10 @@ public class NgramContext {
    public static final NgramContext BEGINNING_OF_SENTENCE =
            new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO);

    public static final String BEGINNING_OF_SENTENCE_TAG = "<S>";

    public static final String CONTEXT_SEPARATOR = " ";

    /**
     * Word information used to represent previous words information.
     */
@@ -114,6 +119,31 @@ public class NgramContext {
        return new NgramContext(prevWordsInfo);
    }


    /**
     * Extracts the previous words context.
     *
     * @return a String with the previous words separated by white space.
     */
    public String extractPrevWordsContext() {
        final ArrayList<String> terms = new ArrayList<>();
        for (int i = mPrevWordsInfo.length - 1; i >= 0; --i) {
            if (mPrevWordsInfo[i] != null && mPrevWordsInfo[i].isValid()) {
                final NgramContext.WordInfo wordInfo = mPrevWordsInfo[i];
                if (wordInfo.mIsBeginningOfSentence) {
                    terms.add(BEGINNING_OF_SENTENCE_TAG);
                } else {
                    final String term = wordInfo.mWord.toString();
                    if (!term.isEmpty()) {
                        terms.add(term);
                    }
                }
            }
        }
        return terms.size() == 0 ? BEGINNING_OF_SENTENCE_TAG
                : TextUtils.join(CONTEXT_SEPARATOR, terms);
    }

    public boolean isValid() {
        return mPrevWordsCount > 0 && mPrevWordsInfo[0].isValid();
    }
Loading