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

Commit b00c0541 authored by Mohammadinamul Sheik's avatar Mohammadinamul Sheik
Browse files

AOSP changes to use KeyboardLayout to support the new DictionaryFacilitator

Change-Id: Ie0c9ce805d9ad009fc9bbaac37b715aff90cd844
parent 0d3f01f3
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