Chromium Code Reviews| Index: ui/android/java/src/org/chromium/ui/base/ResourceBundle.java |
| diff --git a/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java b/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java |
| index adbf8afac277330364f11daeafffa525c5224d7e..7aed41cb80743c84023acf0575662381df5ee35b 100644 |
| --- a/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java |
| +++ b/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java |
| @@ -5,16 +5,15 @@ |
| package org.chromium.ui.base; |
| import android.content.Context; |
| -import android.content.res.Resources; |
| -import android.content.res.TypedArray; |
| -import org.chromium.base.ResourceExtractor; |
| +import org.chromium.base.LocaleUtils; |
| import org.chromium.base.ThreadUtils; |
| import org.chromium.base.annotations.CalledByNative; |
| import org.chromium.base.annotations.JNINamespace; |
| import org.chromium.base.annotations.SuppressFBWarnings; |
| import java.io.File; |
| +import java.util.ArrayList; |
| import java.util.Locale; |
| /** |
| @@ -23,54 +22,31 @@ import java.util.Locale; |
| */ |
| @JNINamespace("ui") |
| public class ResourceBundle { |
| - private static ResourceExtractor.ResourceEntry[] sActiveLocaleResources; |
| + private static final String ASSET_DIR = "assets"; |
| + private static final String FALLBACK_LOCALE = "en-US"; |
| + private static ArrayList<String> sActiveLocaleResources; |
|
agrieve
2016/09/21 20:34:02
nit: This never needs to grow/shrink after it's in
estevenson
2016/09/21 22:35:18
Done.
|
| /** |
| - * Applies the reverse mapping done by locale_pak_resources.py. |
| - */ |
| - private static String toChromeLocaleName(String srcFileName) { |
| - srcFileName = srcFileName.replace(".lpak", ".pak"); |
| - String[] parts = srcFileName.split("_"); |
| - if (parts.length > 1) { |
| - int dotIdx = parts[1].indexOf('.'); |
| - return parts[0] + "-" + parts[1].substring(0, dotIdx).toUpperCase(Locale.ENGLISH) |
| - + parts[1].substring(dotIdx); |
| - } |
| - return srcFileName; |
| - } |
| - |
| - /** |
| - * Initializes the list of locale packs for the active locale that are |
| - * present within the apk. |
| + * Initializes the list of locale packs for the active locale that are present within the apk. |
| * |
| * @param context Any context |
| - * @param localePaksResId Resource ID locale_paks (generated by |
| - * locale_pak_resources.py) |
| + * @param localePakFiles pak files |
| */ |
| @SuppressFBWarnings("LI_LAZY_INIT_UPDATE_STATIC") // Not thread-safe. |
| - public static void initializeLocalePaks(Context context, int localePaksResId) { |
| + public static void initializeLocalePaks(Context context, String[] localePakFiles) { |
| ThreadUtils.assertOnUiThread(); |
| assert sActiveLocaleResources == null; |
| - Resources resources = context.getResources(); |
| - TypedArray resIds = resources.obtainTypedArray(localePaksResId); |
| - try { |
| - int len = resIds.length(); |
| - sActiveLocaleResources = new ResourceExtractor.ResourceEntry[len]; |
| - for (int i = 0; i < len; ++i) { |
| - int resId = resIds.getResourceId(i, 0); |
| - String resPath = resources.getString(resId); |
| - String srcBaseName = new File(resPath).getName(); |
| - String dstBaseName = toChromeLocaleName(srcBaseName); |
| - sActiveLocaleResources[i] = new ResourceExtractor.ResourceEntry(resId, resPath, |
| - dstBaseName); |
| + String language = LocaleUtils.getLanguage(Locale.getDefault()); |
| + sActiveLocaleResources = new ArrayList<String>(localePakFiles.length); |
| + for (String pakFileName : localePakFiles) { |
| + if (pakFileName.startsWith(language) || pakFileName.startsWith(FALLBACK_LOCALE)) { |
| + sActiveLocaleResources.add(pakFileName); |
| } |
| - } finally { |
| - resIds.recycle(); |
| } |
| } |
| - @SuppressFBWarnings("MS_EXPOSE_REP") // Don't modify the array. |
| - public static ResourceExtractor.ResourceEntry[] getActiveLocaleResources() { |
| + @SuppressFBWarnings("MS_EXPOSE_REP") // Don't modify the list. |
| + public static ArrayList<String> getActiveLocaleResources() { |
| return sActiveLocaleResources; |
| } |
| @@ -80,9 +56,9 @@ public class ResourceBundle { |
| return null; |
| } |
| String fileName = locale + ".pak"; |
| - for (ResourceExtractor.ResourceEntry entry : sActiveLocaleResources) { |
| - if (fileName.equals(entry.extractedFileName)) { |
| - return entry.pathWithinApk; |
| + for (String resName : sActiveLocaleResources) { |
| + if (fileName.equals(resName)) { |
| + return new File(ASSET_DIR, resName).toString(); |
| } |
| } |
| return null; |