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

Commit bb0eca57 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Rename PrevWordsInfo to NgramContext.

Bug: 14425059
Change-Id: Id06a71681fa8b5e589e29fba10fe5c1cfed66984
parent bbd6a26b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -19,6 +19,6 @@
# to preserve changing those methods' signature.
-keep class com.android.inputmethod.latin.AssetFileAddress
-keep class com.android.inputmethod.latin.Dictionary
-keep class com.android.inputmethod.latin.PrevWordsInfo
-keep class com.android.inputmethod.latin.NgramContext
-keep class com.android.inputmethod.latin.makedict.ProbabilityInfo
-keep class com.android.inputmethod.latin.utils.LanguageModelParam
+20 −20
Original line number Diff line number Diff line
@@ -255,7 +255,7 @@ public final class BinaryDictionary extends Dictionary {

    @Override
    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
            final NgramContext ngramContext, final ProximityInfo proximityInfo,
            final SettingsValuesForSuggestion settingsValuesForSuggestion,
            final int sessionId, final float weightForLocale,
            final float[] inOutWeightOfLangModelVsSpatialModel) {
@@ -264,7 +264,7 @@ public final class BinaryDictionary extends Dictionary {
        }
        final DicTraverseSession session = getTraverseSession(sessionId);
        Arrays.fill(session.mInputCodePoints, Constants.NOT_A_CODE);
        prevWordsInfo.outputToArray(session.mPrevWordCodePointArrays,
        ngramContext.outputToArray(session.mPrevWordCodePointArrays,
                session.mIsBeginningOfSentenceArray);
        final InputPointers inputPointers = composer.getInputPointers();
        final boolean isGesture = composer.isBatchMode();
@@ -299,7 +299,7 @@ public final class BinaryDictionary extends Dictionary {
                inputPointers.getYCoordinates(), inputPointers.getTimes(),
                inputPointers.getPointerIds(), session.mInputCodePoints, inputSize,
                session.mNativeSuggestOptions.getOptions(), session.mPrevWordCodePointArrays,
                session.mIsBeginningOfSentenceArray, prevWordsInfo.getPrevWordCount(),
                session.mIsBeginningOfSentenceArray, ngramContext.getPrevWordCount(),
                session.mOutputSuggestionCount, session.mOutputCodePoints, session.mOutputScores,
                session.mSpaceIndices, session.mOutputTypes,
                session.mOutputAutoCommitFirstWordConfidence,
@@ -357,17 +357,17 @@ public final class BinaryDictionary extends Dictionary {
    }

    @UsedForTesting
    public boolean isValidNgram(final PrevWordsInfo prevWordsInfo, final String word) {
        return getNgramProbability(prevWordsInfo, word) != NOT_A_PROBABILITY;
    public boolean isValidNgram(final NgramContext ngramContext, final String word) {
        return getNgramProbability(ngramContext, word) != NOT_A_PROBABILITY;
    }

    public int getNgramProbability(final PrevWordsInfo prevWordsInfo, final String word) {
        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
    public int getNgramProbability(final NgramContext ngramContext, final String word) {
        if (!ngramContext.isValid() || TextUtils.isEmpty(word)) {
            return NOT_A_PROBABILITY;
        }
        final int[][] prevWordCodePointArrays = new int[prevWordsInfo.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[prevWordsInfo.getPrevWordCount()];
        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[][] prevWordCodePointArrays = new int[ngramContext.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[ngramContext.getPrevWordCount()];
        ngramContext.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
        return getNgramProbabilityNative(mNativeDict, prevWordCodePointArrays,
                isBeginningOfSentenceArray, wordCodePoints);
@@ -456,14 +456,14 @@ public final class BinaryDictionary extends Dictionary {
    }

    // Add an n-gram entry to the binary dictionary with timestamp in native code.
    public boolean addNgramEntry(final PrevWordsInfo prevWordsInfo, final String word,
    public boolean addNgramEntry(final NgramContext ngramContext, final String word,
            final int probability, final int timestamp) {
        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
        if (!ngramContext.isValid() || TextUtils.isEmpty(word)) {
            return false;
        }
        final int[][] prevWordCodePointArrays = new int[prevWordsInfo.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[prevWordsInfo.getPrevWordCount()];
        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[][] prevWordCodePointArrays = new int[ngramContext.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[ngramContext.getPrevWordCount()];
        ngramContext.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
        if (!addNgramEntryNative(mNativeDict, prevWordCodePointArrays,
                isBeginningOfSentenceArray, wordCodePoints, probability, timestamp)) {
@@ -474,13 +474,13 @@ public final class BinaryDictionary extends Dictionary {
    }

    // Remove an n-gram entry from the binary dictionary in native code.
    public boolean removeNgramEntry(final PrevWordsInfo prevWordsInfo, final String word) {
        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
    public boolean removeNgramEntry(final NgramContext ngramContext, final String word) {
        if (!ngramContext.isValid() || TextUtils.isEmpty(word)) {
            return false;
        }
        final int[][] prevWordCodePointArrays = new int[prevWordsInfo.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[prevWordsInfo.getPrevWordCount()];
        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[][] prevWordCodePointArrays = new int[ngramContext.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[ngramContext.getPrevWordCount()];
        ngramContext.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
        if (!removeNgramEntryNative(mNativeDict, prevWordCodePointArrays,
                isBeginningOfSentenceArray, wordCodePoints)) {
+6 −6
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
     */
    private void addNameLocked(final String name) {
        int len = StringUtils.codePointCount(name);
        PrevWordsInfo prevWordsInfo = PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
        NgramContext ngramContext = NgramContext.EMPTY_PREV_WORDS_INFO;
        // TODO: Better tokenization for non-Latin writing systems
        for (int i = 0; i < len; i++) {
            if (Character.isLetter(name.codePointAt(i))) {
@@ -233,19 +233,19 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
                final int wordLen = StringUtils.codePointCount(word);
                if (wordLen <= MAX_WORD_LENGTH && wordLen > 1) {
                    if (DEBUG) {
                        Log.d(TAG, "addName " + name + ", " + word + ", "  + prevWordsInfo);
                        Log.d(TAG, "addName " + name + ", " + word + ", "  + ngramContext);
                    }
                    runGCIfRequiredLocked(true /* mindsBlockByGC */);
                    addUnigramLocked(word, FREQUENCY_FOR_CONTACTS,
                            null /* shortcut */, 0 /* shortcutFreq */, false /* isNotAWord */,
                            false /* isBlacklisted */, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
                    if (!prevWordsInfo.isValid() && mUseFirstLastBigrams) {
                    if (!ngramContext.isValid() && mUseFirstLastBigrams) {
                        runGCIfRequiredLocked(true /* mindsBlockByGC */);
                        addNgramEntryLocked(prevWordsInfo, word, FREQUENCY_FOR_CONTACTS_BIGRAM,
                        addNgramEntryLocked(ngramContext, word, FREQUENCY_FOR_CONTACTS_BIGRAM,
                                BinaryDictionary.NOT_A_VALID_TIMESTAMP);
                    }
                    prevWordsInfo = prevWordsInfo.getNextPrevWordsInfo(
                            new PrevWordsInfo.WordInfo(word));
                    ngramContext = ngramContext.getNextNgramContext(
                            new NgramContext.WordInfo(word));
                }
            }
        }
+4 −5
Original line number Diff line number Diff line
@@ -81,10 +81,9 @@ public abstract class Dictionary {
    }

    /**
     * Searches for suggestions for a given context. For the moment the context is only the
     * previous word.
     * Searches for suggestions for a given context.
     * @param composer the key sequence to match with coordinate info, as a WordComposer
     * @param prevWordsInfo the information of previous words.
     * @param ngramContext the context for n-gram.
     * @param proximityInfo the object for key proximity. May be ignored by some implementations.
     * @param settingsValuesForSuggestion the settings values used for the suggestion.
     * @param sessionId the session id.
@@ -96,7 +95,7 @@ public abstract class Dictionary {
     * @return the list of suggestions (possibly null if none)
     */
    abstract public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
            final NgramContext ngramContext, final ProximityInfo proximityInfo,
            final SettingsValuesForSuggestion settingsValuesForSuggestion,
            final int sessionId, final float weightForLocale,
            final float[] inOutWeightOfLangModelVsSpatialModel);
@@ -191,7 +190,7 @@ public abstract class Dictionary {

        @Override
        public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
                final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
                final NgramContext ngramContext, final ProximityInfo proximityInfo,
                final SettingsValuesForSuggestion settingsValuesForSuggestion,
                final int sessionId, final float weightForLocale,
                final float[] inOutWeightOfLangModelVsSpatialModel) {
+3 −3
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ public final class DictionaryCollection extends Dictionary {

    @Override
    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
            final NgramContext ngramContext, final ProximityInfo proximityInfo,
            final SettingsValuesForSuggestion settingsValuesForSuggestion,
            final int sessionId, final float weightForLocale,
            final float[] inOutWeightOfLangModelVsSpatialModel) {
@@ -69,13 +69,13 @@ public final class DictionaryCollection extends Dictionary {
        // To avoid creating unnecessary objects, we get the list out of the first
        // dictionary and add the rest to it if not null, hence the get(0)
        ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getSuggestions(composer,
                prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId,
                ngramContext, proximityInfo, settingsValuesForSuggestion, sessionId,
                weightForLocale, inOutWeightOfLangModelVsSpatialModel);
        if (null == suggestions) suggestions = new ArrayList<>();
        final int length = dictionaries.size();
        for (int i = 1; i < length; ++ i) {
            final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getSuggestions(composer,
                    prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId,
                    ngramContext, proximityInfo, settingsValuesForSuggestion, sessionId,
                    weightForLocale, inOutWeightOfLangModelVsSpatialModel);
            if (null != sugg) suggestions.addAll(sugg);
        }
Loading