From 43ebd8a035af31244a2d54fce5d8000a1fbada4c Mon Sep 17 00:00:00 2001
From: satok <satok@google.com>
Date: Wed, 4 Apr 2012 21:39:23 +0900
Subject: [PATCH] Fix the locale of flags in BinaryDictionary

Bug: 6129372
Change-Id: I4958c2aabf651d7e26648a29b75fcc6c77813451
---
 .../inputmethod/latin/BinaryDictionary.java   | 19 ++++++++++++++++---
 .../inputmethod/latin/DictionaryFactory.java  |  7 ++++---
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index c43683f2d0..92019c0ed5 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -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
-        mFlags = Flag.initFlags(null == flagArray ? ALL_CONFIG_FLAGS : flagArray, context,
-                SubtypeSwitcher.getInstance());
+        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);
     }
 
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
index 7be374db53..7a59d80f1a 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
@@ -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;
-- 
GitLab