diff options
author | yfriedman <yfriedman@chromium.org> | 2014-10-20 12:40:16 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-20 19:40:34 +0000 |
commit | 38b46138112e7077a41ab8dd4815a22a15ff0527 (patch) | |
tree | 671710b0ccf9b51c45cc10842a2802b438800a10 /base | |
parent | 96a960536bdd4d6c6ceec62498a577f1c367ab73 (diff) | |
download | chromium_src-38b46138112e7077a41ab8dd4815a22a15ff0527.zip chromium_src-38b46138112e7077a41ab8dd4815a22a15ff0527.tar.gz chromium_src-38b46138112e7077a41ab8dd4815a22a15ff0527.tar.bz2 |
[Android] Simplify logic for grabbing initial country-code.
The old way involved start-up code reading a value and setting a global
in template_url_prepopulate_data. Since the value can be computed
on-demand from device-information, just fetch it as needed instead.
BUG=169106
TBR=thakis
Review URL: https://codereview.chromium.org/628263004
Cr-Commit-Position: refs/heads/master@{#300317}
Diffstat (limited to 'base')
-rw-r--r-- | base/BUILD.gn | 3 | ||||
-rw-r--r-- | base/android/base_jni_registrar.cc | 2 | ||||
-rw-r--r-- | base/android/java/src/org/chromium/base/BaseSwitches.java | 3 | ||||
-rw-r--r-- | base/android/java/src/org/chromium/base/LocaleUtils.java | 14 | ||||
-rw-r--r-- | base/android/locale_utils.cc | 31 | ||||
-rw-r--r-- | base/android/locale_utils.h | 27 | ||||
-rw-r--r-- | base/base.gyp | 1 | ||||
-rw-r--r-- | base/base.gypi | 2 |
8 files changed, 83 insertions, 0 deletions
diff --git a/base/BUILD.gn b/base/BUILD.gn index d783ee0..0bbc91b 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn @@ -39,6 +39,8 @@ component("base") { "android/fifo_utils.h", "android/important_file_writer_android.cc", "android/important_file_writer_android.h", + "android/locale_utils.cc", + "android/locale_utils.h", "android/scoped_java_ref.cc", "android/scoped_java_ref.h", "android/jni_android.cc", @@ -1398,6 +1400,7 @@ if (is_android) { "android/java/src/org/chromium/base/ImportantFileWriterAndroid.java", "android/java/src/org/chromium/base/JNIUtils.java", "android/java/src/org/chromium/base/library_loader/LibraryLoader.java", + "android/java/src/org/chromium/base/LocaleUtils.java", "android/java/src/org/chromium/base/MemoryPressureListener.java", "android/java/src/org/chromium/base/JavaHandlerThread.java", "android/java/src/org/chromium/base/PathService.java", diff --git a/base/android/base_jni_registrar.cc b/base/android/base_jni_registrar.cc index b6d8a28..c0f0af7 100644 --- a/base/android/base_jni_registrar.cc +++ b/base/android/base_jni_registrar.cc @@ -16,6 +16,7 @@ #include "base/android/jni_android.h" #include "base/android/jni_registrar.h" #include "base/android/jni_utils.h" +#include "base/android/locale_utils.h" #include "base/android/memory_pressure_listener_android.h" #include "base/android/path_service_android.h" #include "base/android/path_utils.h" @@ -42,6 +43,7 @@ static RegistrationMethod kBaseRegisteredMethods[] = { { "ImportantFileWriterAndroid", base::android::RegisterImportantFileWriterAndroid }, { "JNIUtils", base::android::RegisterJNIUtils }, + { "LocaleUtils", base::android::RegisterLocaleUtils }, { "MemoryPressureListenerAndroid", base::android::MemoryPressureListenerAndroid::Register }, { "JavaHandlerThread", base::android::JavaHandlerThread::RegisterBindings }, diff --git a/base/android/java/src/org/chromium/base/BaseSwitches.java b/base/android/java/src/org/chromium/base/BaseSwitches.java index fe13d7b..11e10f5 100644 --- a/base/android/java/src/org/chromium/base/BaseSwitches.java +++ b/base/android/java/src/org/chromium/base/BaseSwitches.java @@ -23,6 +23,9 @@ public abstract class BaseSwitches { // Adds additional thread idle time information into the trace event output. public static final String ENABLE_IDLE_TRACING = "enable-idle-tracing"; + // Default country code to be used for search engine localization. + public static final String DEFAULT_COUNTRY_CODE_AT_INSTALL = "default-country-code"; + // Prevent instantiation. private BaseSwitches() {} } diff --git a/base/android/java/src/org/chromium/base/LocaleUtils.java b/base/android/java/src/org/chromium/base/LocaleUtils.java index 31d4127..4f97d3a 100644 --- a/base/android/java/src/org/chromium/base/LocaleUtils.java +++ b/base/android/java/src/org/chromium/base/LocaleUtils.java @@ -20,6 +20,7 @@ public class LocaleUtils { * @return the default locale, translating Android deprecated * language codes into the modern ones used by Chromium. */ + @CalledByNative public static String getDefaultLocale() { Locale locale = Locale.getDefault(); String language = locale.getLanguage(); @@ -38,4 +39,17 @@ public class LocaleUtils { } return country.isEmpty() ? language : language + "-" + country; } + + /** + * Get the default country code set during install. + * @return country code. + */ + @CalledByNative + private static String getDefaultCountryCode() { + CommandLine commandLine = CommandLine.getInstance(); + return commandLine.hasSwitch(BaseSwitches.DEFAULT_COUNTRY_CODE_AT_INSTALL) ? + commandLine.getSwitchValue(BaseSwitches.DEFAULT_COUNTRY_CODE_AT_INSTALL) : + Locale.getDefault().getCountry(); + } + } diff --git a/base/android/locale_utils.cc b/base/android/locale_utils.cc new file mode 100644 index 0000000..af46f89 --- /dev/null +++ b/base/android/locale_utils.cc @@ -0,0 +1,31 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/android/locale_utils.h" + +#include "base/android/jni_android.h" +#include "base/android/jni_string.h" +#include "jni/LocaleUtils_jni.h" + +namespace base { +namespace android { + +std::string GetDefaultCountryCode() { + JNIEnv* env = base::android::AttachCurrentThread(); + return ConvertJavaStringToUTF8(Java_LocaleUtils_getDefaultCountryCode(env)); +} + +std::string GetDefaultLocale() { + JNIEnv* env = base::android::AttachCurrentThread(); + ScopedJavaLocalRef<jstring> locale = Java_LocaleUtils_getDefaultLocale( + env); + return ConvertJavaStringToUTF8(locale); +} + +bool RegisterLocaleUtils(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +} // namespace android +} // namespace base diff --git a/base/android/locale_utils.h b/base/android/locale_utils.h new file mode 100644 index 0000000..9e03b83 --- /dev/null +++ b/base/android/locale_utils.h @@ -0,0 +1,27 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_ANDROID_LOCALE_UTILS_H_ +#define BASE_ANDROID_LOCALE_UTILS_H_ + +#include <jni.h> + +#include <string> + +#include "base/base_export.h" + +namespace base { +namespace android { + +BASE_EXPORT std::string GetDefaultCountryCode(); + +// Return the current default locale of the device. +BASE_EXPORT std::string GetDefaultLocale(); + +BASE_EXPORT bool RegisterLocaleUtils(JNIEnv* env); + +} // namespace android +} // namespace base + +#endif // BASE_ANDROID_LOCALE_UTILS_H_ diff --git a/base/base.gyp b/base/base.gyp index 95f6f7d..871b8e5 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -1276,6 +1276,7 @@ 'android/java/src/org/chromium/base/ImportantFileWriterAndroid.java', 'android/java/src/org/chromium/base/JNIUtils.java', 'android/java/src/org/chromium/base/library_loader/LibraryLoader.java', + 'android/java/src/org/chromium/base/LocaleUtils.java', 'android/java/src/org/chromium/base/MemoryPressureListener.java', 'android/java/src/org/chromium/base/JavaHandlerThread.java', 'android/java/src/org/chromium/base/PathService.java', diff --git a/base/base.gypi b/base/base.gypi index 5cd8b8c..2dfde09 100644 --- a/base/base.gypi +++ b/base/base.gypi @@ -45,6 +45,8 @@ 'android/fifo_utils.h', 'android/important_file_writer_android.cc', 'android/important_file_writer_android.h', + 'android/locale_utils.h', + 'android/locale_utils.cc', 'android/scoped_java_ref.cc', 'android/scoped_java_ref.h', 'android/jni_android.cc', |