summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authoryfriedman <yfriedman@chromium.org>2014-10-20 12:40:16 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-20 19:40:34 +0000
commit38b46138112e7077a41ab8dd4815a22a15ff0527 (patch)
tree671710b0ccf9b51c45cc10842a2802b438800a10 /base
parent96a960536bdd4d6c6ceec62498a577f1c367ab73 (diff)
downloadchromium_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.gn3
-rw-r--r--base/android/base_jni_registrar.cc2
-rw-r--r--base/android/java/src/org/chromium/base/BaseSwitches.java3
-rw-r--r--base/android/java/src/org/chromium/base/LocaleUtils.java14
-rw-r--r--base/android/locale_utils.cc31
-rw-r--r--base/android/locale_utils.h27
-rw-r--r--base/base.gyp1
-rw-r--r--base/base.gypi2
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',