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

Commit 43ebd8a0 authored by satok's avatar satok
Browse files

Fix the locale of flags in BinaryDictionary

Bug: 6129372
Change-Id: I4958c2aabf651d7e26648a29b75fcc6c77813451
parent b082c95a
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -17,10 +17,14 @@
package com.android.inputmethod.latin;

import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;

import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.LocaleUtils.RunInLocale;

import java.util.Arrays;
import java.util.Locale;

/**
 * Implements a static, compacted, binary dictionary of standard words.
@@ -94,14 +98,23 @@ public class BinaryDictionary extends Dictionary {
     * @param flagArray the flags to limit the dictionary to, or null for default.
     */
    public BinaryDictionary(final Context context,
            final String filename, final long offset, final long length, Flag[] flagArray) {
            final String filename, final long offset, final long length, final Flag[] flagArray,
            Locale locale) {
        // Note: at the moment a binary dictionary is always of the "main" type.
        // Initializing this here will help transitioning out of the scheme where
        // the Suggest class knows everything about every single dictionary.
        mDicTypeId = Suggest.DIC_MAIN;
        // TODO: Stop relying on the state of SubtypeSwitcher, get it as a parameter
        final RunInLocale<Void> job = new RunInLocale<Void>() {
            @Override
            protected Void job(Resources res) {
                // TODO: remove this when all flags are moved to the native code
                mFlags = Flag.initFlags(null == flagArray ? ALL_CONFIG_FLAGS : flagArray, context,
                        SubtypeSwitcher.getInstance());
                return null;
            }
        };
        job.runInLocale(context.getResources(), locale);
        loadDictionary(filename, offset, length);
    }

+4 −3
Original line number Diff line number Diff line
@@ -59,7 +59,8 @@ public class DictionaryFactory {
        if (null != assetFileList) {
            for (final AssetFileAddress f : assetFileList) {
                final BinaryDictionary binaryDictionary =
                        new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, flagArray);
                        new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, flagArray,
                                locale);
                if (binaryDictionary.isValidDictionary()) {
                    dictList.add(binaryDictionary);
                }
@@ -119,7 +120,7 @@ public class DictionaryFactory {
                return null;
            }
            return new BinaryDictionary(context,
                    sourceDir, afd.getStartOffset(), afd.getLength(), null);
                    sourceDir, afd.getStartOffset(), afd.getLength(), null, locale);
        } catch (android.content.res.Resources.NotFoundException e) {
            Log.e(TAG, "Could not find the resource. resId=" + resId);
            return null;
@@ -147,7 +148,7 @@ public class DictionaryFactory {
            long startOffset, long length, Flag[] flagArray) {
        if (dictionary.isFile()) {
            return new BinaryDictionary(context, dictionary.getAbsolutePath(), startOffset, length,
                    flagArray);
                    flagArray, null);
        } else {
            Log.e(TAG, "Could not find the file. path=" + dictionary.getAbsolutePath());
            return null;