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

Commit 12776925 authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Pass the previous word to getSuggestions"

parents 40edd14c ac27e454
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -135,11 +135,12 @@ public class BinaryDictionary extends Dictionary {
        }
    }

    // proximityInfo may not be null.
    // proximityInfo and/or prevWordForBigrams may not be null.
    @Override
    public void getWords(final WordComposer codes, final WordCallback callback,
            final ProximityInfo proximityInfo) {
        final int count = getSuggestions(codes, proximityInfo, mOutputChars, mScores);
    public void getWords(final WordComposer codes, final CharSequence prevWordForBigrams,
            final WordCallback callback, final ProximityInfo proximityInfo) {
        final int count = getSuggestions(codes, prevWordForBigrams, proximityInfo, mOutputChars,
                mScores);

        for (int j = 0; j < count; ++j) {
            if (mScores[j] < 1) break;
@@ -161,7 +162,8 @@ public class BinaryDictionary extends Dictionary {

    // proximityInfo may not be null.
    /* package for test */ int getSuggestions(final WordComposer codes,
            final ProximityInfo proximityInfo, char[] outputChars, int[] scores) {
            final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo,
            char[] outputChars, int[] scores) {
        if (!isValidDictionary()) return -1;

        final int codesSize = codes.size();
@@ -175,6 +177,7 @@ public class BinaryDictionary extends Dictionary {
        Arrays.fill(outputChars, (char) 0);
        Arrays.fill(scores, 0);

        // TODO: pass the previous word to native code
        return getSuggestionsNative(
                mNativeDict, proximityInfo.getNativeProximityInfo(),
                codes.getXCoordinates(), codes.getYCoordinates(), mInputCodes, codesSize,
+3 −1
Original line number Diff line number Diff line
@@ -61,11 +61,13 @@ public abstract class Dictionary {
     * Searches for words in the dictionary that match the characters in the composer. Matched
     * words are added through the callback object.
     * @param composer the key sequence to match
     * @param prevWordForBigrams the previous word, or null if none
     * @param callback the callback object to send matched words to as possible candidates
     * @param proximityInfo the object for key proximity. May be ignored by some implementations.
     * @see WordCallback#addWord(char[], int, int, int, int, int)
     */
    abstract public void getWords(final WordComposer composer, final WordCallback callback,
    abstract public void getWords(final WordComposer composer,
            final CharSequence prevWordForBigrams, final WordCallback callback,
            final ProximityInfo proximityInfo);

    /**
+3 −3
Original line number Diff line number Diff line
@@ -50,10 +50,10 @@ public class DictionaryCollection extends Dictionary {
    }

    @Override
    public void getWords(final WordComposer composer, final WordCallback callback,
            final ProximityInfo proximityInfo) {
    public void getWords(final WordComposer composer, final CharSequence prevWordForBigrams,
            final WordCallback callback, final ProximityInfo proximityInfo) {
        for (final Dictionary dict : mDictionaries)
            dict.getWords(composer, callback, proximityInfo);
            dict.getWords(composer, prevWordForBigrams, callback, proximityInfo);
    }

    @Override
+6 −5
Original line number Diff line number Diff line
@@ -173,20 +173,21 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
    }

    @Override
    public void getWords(final WordComposer codes, final WordCallback callback,
            final ProximityInfo proximityInfo) {
    public void getWords(final WordComposer codes, final CharSequence prevWordForBigrams,
            final WordCallback callback, final ProximityInfo proximityInfo) {
        asyncReloadDictionaryIfRequired();
        getWordsInner(codes, callback, proximityInfo);
        getWordsInner(codes, prevWordForBigrams, callback, proximityInfo);
    }

    protected final void getWordsInner(final WordComposer codes, final WordCallback callback,
    protected final void getWordsInner(final WordComposer codes,
            final CharSequence prevWordForBigrams, final WordCallback callback,
            final ProximityInfo proximityInfo) {
        // Ensure that there are no concurrent calls to getWords. If there are, do nothing and
        // return.
        if (mLocalDictionaryController.tryLock()) {
            try {
                if (mBinaryDictionary != null) {
                    mBinaryDictionary.getWords(codes, callback, proximityInfo);
                    mBinaryDictionary.getWords(codes, prevWordForBigrams, callback, proximityInfo);
                }
            } finally {
                mLocalDictionaryController.unlock();
+5 −4
Original line number Diff line number Diff line
@@ -192,8 +192,8 @@ public class ExpandableDictionary extends Dictionary {
    }

    @Override
    public void getWords(final WordComposer codes, final WordCallback callback,
            final ProximityInfo proximityInfo) {
    public void getWords(final WordComposer codes, final CharSequence prevWordForBigrams,
            final WordCallback callback, final ProximityInfo proximityInfo) {
        synchronized (mUpdatingLock) {
            // If we need to update, start off a background task
            if (mRequiresReload) startDictionaryLoadingTaskLocked();
@@ -203,10 +203,11 @@ public class ExpandableDictionary extends Dictionary {
        if (codes.size() >= BinaryDictionary.MAX_WORD_LENGTH) {
            return;
        }
        getWordsInner(codes, callback, proximityInfo);
        getWordsInner(codes, prevWordForBigrams, callback, proximityInfo);
    }

    protected final void getWordsInner(final WordComposer codes, final WordCallback callback,
    protected final void getWordsInner(final WordComposer codes,
            final CharSequence prevWordForBigrams, final WordCallback callback,
            @SuppressWarnings("unused") final ProximityInfo proximityInfo) {
        mInputLength = codes.size();
        if (mCodes.length < mInputLength) mCodes = new int[mInputLength][];
Loading