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

Commit 576c96af authored by Jean Chalard's avatar Jean Chalard
Browse files

[ML3] Put the locale in SuggestedWordInfo

...and remove it from SuggestionResults.

Change-Id: Iae85ec7e82e2caf18cc6d7656aa46dc150707cdd
parent 146cb98e
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -83,7 +83,6 @@ public final class BinaryDictionary extends Dictionary {
    public static final String DIR_NAME_SUFFIX_FOR_RECORD_MIGRATION = ".migrating";

    private long mNativeDict;
    private final Locale mLocale;
    private final long mDictSize;
    private final String mDictFilePath;
    private final boolean mUseFullEditDistance;
@@ -117,8 +116,7 @@ public final class BinaryDictionary extends Dictionary {
    public BinaryDictionary(final String filename, final long offset, final long length,
            final boolean useFullEditDistance, final Locale locale, final String dictType,
            final boolean isUpdatable) {
        super(dictType);
        mLocale = locale;
        super(dictType, locale);
        mDictSize = length;
        mDictFilePath = filename;
        mIsUpdatable = isUpdatable;
@@ -138,8 +136,7 @@ public final class BinaryDictionary extends Dictionary {
    public BinaryDictionary(final String filename, final boolean useFullEditDistance,
            final Locale locale, final String dictType, final long formatVersion,
            final Map<String, String> attributeMap) {
        super(dictType);
        mLocale = locale;
        super(dictType, locale);
        mDictSize = 0;
        mDictFilePath = filename;
        // On memory dictionary is always updatable.
+6 −3
Original line number Diff line number Diff line
@@ -16,12 +16,12 @@

package com.android.inputmethod.latin;

import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;

import java.util.ArrayList;
import java.util.Locale;

/**
 * Abstract base class for a dictionary that can do a fuzzy search for words based on a set of key
@@ -62,9 +62,12 @@ public abstract class Dictionary {
    // Contextual dictionary.
    public static final String TYPE_CONTEXTUAL = "contextual";
    public final String mDictType;
    // The locale for this dictionary. May be null if unknown (phony dictionary for example).
    public final Locale mLocale;

    public Dictionary(final String dictType) {
    public Dictionary(final String dictType, final Locale locale) {
        mDictType = dictType;
        mLocale = locale;
    }

    /**
@@ -162,7 +165,7 @@ public abstract class Dictionary {
    private static class PhonyDictionary extends Dictionary {
        // This class is not publicly instantiable.
        private PhonyDictionary(final String type) {
            super(type);
            super(type, null);
        }

        @Override
+9 −6
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
import java.util.concurrent.CopyOnWriteArrayList;

/**
@@ -34,13 +35,14 @@ public final class DictionaryCollection extends Dictionary {
    private final String TAG = DictionaryCollection.class.getSimpleName();
    protected final CopyOnWriteArrayList<Dictionary> mDictionaries;

    public DictionaryCollection(final String dictType) {
        super(dictType);
    public DictionaryCollection(final String dictType, final Locale locale) {
        super(dictType, locale);
        mDictionaries = new CopyOnWriteArrayList<>();
    }

    public DictionaryCollection(final String dictType, final Dictionary... dictionaries) {
        super(dictType);
    public DictionaryCollection(final String dictType, final Locale locale,
            final Dictionary... dictionaries) {
        super(dictType, locale);
        if (null == dictionaries) {
            mDictionaries = new CopyOnWriteArrayList<>();
        } else {
@@ -49,8 +51,9 @@ public final class DictionaryCollection extends Dictionary {
        }
    }

    public DictionaryCollection(final String dictType, final Collection<Dictionary> dictionaries) {
        super(dictType);
    public DictionaryCollection(final String dictType, final Locale locale,
            final Collection<Dictionary> dictionaries) {
        super(dictType, locale);
        mDictionaries = new CopyOnWriteArrayList<>(dictionaries);
        mDictionaries.removeAll(Collections.singleton(null));
    }
+1 −1
Original line number Diff line number Diff line
@@ -503,7 +503,7 @@ public class DictionaryFacilitator {
            final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) {
        final Dictionaries dictionaries = mDictionaries;
        final SuggestionResults suggestionResults =
                new SuggestionResults(dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS);
                new SuggestionResults(SuggestedWords.MAX_SUGGESTIONS);
        final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT };
        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) {
            final Dictionary dictionary = dictionaries.getDict(dictType);
+3 −3
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ public final class DictionaryFactory {
            final Locale locale, final boolean useFullEditDistance) {
        if (null == locale) {
            Log.e(TAG, "No locale defined for dictionary");
            return new DictionaryCollection(Dictionary.TYPE_MAIN,
            return new DictionaryCollection(Dictionary.TYPE_MAIN, locale,
                    createReadOnlyBinaryDictionary(context, locale));
        }

@@ -75,7 +75,7 @@ public final class DictionaryFactory {
        // If the list is empty, that means we should not use any dictionary (for example, the user
        // explicitly disabled the main dictionary), so the following is okay. dictList is never
        // null, but if for some reason it is, DictionaryCollection handles it gracefully.
        return new DictionaryCollection(Dictionary.TYPE_MAIN, dictList);
        return new DictionaryCollection(Dictionary.TYPE_MAIN, locale, dictList);
    }

    /**
@@ -188,7 +188,7 @@ public final class DictionaryFactory {
    public static Dictionary createDictionaryForTest(final AssetFileAddress[] dictionaryList,
            final boolean useFullEditDistance, Locale locale) {
        final DictionaryCollection dictionaryCollection =
                new DictionaryCollection(Dictionary.TYPE_MAIN);
                new DictionaryCollection(Dictionary.TYPE_MAIN, locale);
        for (final AssetFileAddress address : dictionaryList) {
            final ReadOnlyBinaryDictionary readOnlyBinaryDictionary = new ReadOnlyBinaryDictionary(
                    address.mFilename, address.mOffset, address.mLength, useFullEditDistance,
Loading