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

Commit eae44530 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android Git Automerger
Browse files

am fe87f5f4: Pass additionalFeaturesOptions for getSuggestions().

* commit 'fe87f5f4':
  Pass additionalFeaturesOptions for getSuggestions().
parents 137572f0 fe87f5f4
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.util.SparseArray;

import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.settings.AdditionalFeaturesSettingUtils;
import com.android.inputmethod.latin.settings.NativeSuggestOptions;
import com.android.inputmethod.latin.utils.CollectionUtils;
import com.android.inputmethod.latin.utils.JniUtils;
@@ -120,15 +119,16 @@ public final class BinaryDictionary extends Dictionary {
    @Override
    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final String prevWord, final ProximityInfo proximityInfo,
            final boolean blockOffensiveWords) {
            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
        return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords,
                0 /* sessionId */);
                additionalFeaturesOptions, 0 /* sessionId */);
    }

    @Override
    public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer,
            final String prevWord, final ProximityInfo proximityInfo,
            final boolean blockOffensiveWords, final int sessionId) {
            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
            final int sessionId) {
        if (!isValidDictionary()) return null;

        Arrays.fill(mInputCodePoints, Constants.NOT_A_CODE);
@@ -148,8 +148,7 @@ public final class BinaryDictionary extends Dictionary {
        final InputPointers ips = composer.getInputPointers();
        final int inputSize = isGesture ? ips.getPointerSize() : composerSize;
        mNativeSuggestOptions.setIsGesture(isGesture);
        mNativeSuggestOptions.setAdditionalFeaturesOptions(
                AdditionalFeaturesSettingUtils.getAdditionalNativeSuggestOptions());
        mNativeSuggestOptions.setAdditionalFeaturesOptions(additionalFeaturesOptions);
        // proximityInfo and/or prevWordForBigrams may not be null.
        final int count = getSuggestionsNative(mNativeDict, proximityInfo.getNativeProximityInfo(),
                getTraverseSession(sessionId).getSession(), ips.getXCoordinates(),
+7 −4
Original line number Diff line number Diff line
@@ -72,20 +72,23 @@ public abstract class Dictionary {
     * @param prevWord the previous word, or null if none
     * @param proximityInfo the object for key proximity. May be ignored by some implementations.
     * @param blockOffensiveWords whether to block potentially offensive words
     * @param additionalFeaturesOptions options about additional features used for the suggestion.
     * @return the list of suggestions (possibly null if none)
     */
    // TODO: pass more context than just the previous word, to enable better suggestions (n-gram
    // and more)
    abstract public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final String prevWord, final ProximityInfo proximityInfo,
            final boolean blockOffensiveWords);
            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions);

    // The default implementation of this method ignores sessionId.
    // Subclasses that want to use sessionId need to override this method.
    public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer,
            final String prevWord, final ProximityInfo proximityInfo,
            final boolean blockOffensiveWords, final int sessionId) {
        return getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords);
            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
            final int sessionId) {
        return getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords,
                additionalFeaturesOptions);
    }

    /**
@@ -156,7 +159,7 @@ public abstract class Dictionary {
        @Override
        public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
                final String prevWord, final ProximityInfo proximityInfo,
                final boolean blockOffensiveWords) {
                final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
            return null;
        }

+3 −3
Original line number Diff line number Diff line
@@ -58,18 +58,18 @@ public final class DictionaryCollection extends Dictionary {
    @Override
    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final String prevWord, final ProximityInfo proximityInfo,
            final boolean blockOffensiveWords) {
            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
        final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries;
        if (dictionaries.isEmpty()) return null;
        // 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,
                prevWord, proximityInfo, blockOffensiveWords);
                prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions);
        if (null == suggestions) suggestions = CollectionUtils.newArrayList();
        final int length = dictionaries.size();
        for (int i = 1; i < length; ++ i) {
            final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getSuggestions(composer,
                    prevWord, proximityInfo, blockOffensiveWords);
                    prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions);
            if (null != sugg) suggestions.addAll(sugg);
        }
        return suggestions;
+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ public class DictionaryWriter extends AbstractDictionaryWriter {
    @Override
    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final String prevWord, final ProximityInfo proximityInfo,
            boolean blockOffensiveWords) {
            boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
        // This class doesn't support suggestion.
        return null;
    }
+3 −3
Original line number Diff line number Diff line
@@ -272,19 +272,19 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
    @Override
    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
            final String prevWord, final ProximityInfo proximityInfo,
            final boolean blockOffensiveWords) {
            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
        asyncReloadDictionaryIfRequired();
        // Write lock because getSuggestions in native updates session status.
        if (mLocalDictionaryController.writeLock().tryLock()) {
            try {
                final ArrayList<SuggestedWordInfo> inMemDictSuggestion =
                        mDictionaryWriter.getSuggestions(composer, prevWord, proximityInfo,
                                blockOffensiveWords);
                                blockOffensiveWords, additionalFeaturesOptions);
                // TODO: Remove checking mIsUpdatable and use native suggestion.
                if (mBinaryDictionary != null && !mIsUpdatable) {
                    final ArrayList<SuggestedWordInfo> binarySuggestion =
                            mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo,
                                    blockOffensiveWords);
                                    blockOffensiveWords, additionalFeaturesOptions);
                    if (inMemDictSuggestion == null) {
                        return binarySuggestion;
                    } else if (binarySuggestion == null) {
Loading