summaryrefslogtreecommitdiffstats
path: root/base/android
diff options
context:
space:
mode:
authorkkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-28 07:19:26 +0000
committerkkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-28 07:19:26 +0000
commit7490f5bd894adf0b8662f7741dcbf3a5f895c867 (patch)
tree198b5f1abe9eb7f5caf773dc151552c3a295a7b7 /base/android
parentd616de0124e94e4cdf85a0229f4aa84aca8dc85d (diff)
downloadchromium_src-7490f5bd894adf0b8662f7741dcbf3a5f895c867.zip
chromium_src-7490f5bd894adf0b8662f7741dcbf3a5f895c867.tar.gz
chromium_src-7490f5bd894adf0b8662f7741dcbf3a5f895c867.tar.bz2
Added two ICU RTL function jni bindings.
BUG=222672 Review URL: https://chromiumcodereview.appspot.com/12665004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191113 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/android')
-rw-r--r--base/android/java/src/org/chromium/base/LocaleUtils.java27
-rw-r--r--base/android/locale_utils.cc11
2 files changed, 38 insertions, 0 deletions
diff --git a/base/android/java/src/org/chromium/base/LocaleUtils.java b/base/android/java/src/org/chromium/base/LocaleUtils.java
index e57b45a..8798faf 100644
--- a/base/android/java/src/org/chromium/base/LocaleUtils.java
+++ b/base/android/java/src/org/chromium/base/LocaleUtils.java
@@ -9,8 +9,14 @@ import java.util.Locale;
/**
* This class provides the locale related methods for the native library.
*/
+@JNINamespace("base::android")
public class LocaleUtils {
+ // This is mirrored from base/i18n/rtl.h. Please keep in sync.
+ public static final int UNKNOWN_DIRECTION = 0;
+ public static final int RIGHT_TO_LEFT = 1;
+ public static final int LEFT_TO_RIGHT = 2;
+
private LocaleUtils() { /* cannot be instantiated */ }
/**
@@ -45,4 +51,25 @@ public class LocaleUtils {
private static String getDisplayNameForLocale(Locale locale, Locale displayLocale) {
return locale.getDisplayName(displayLocale);
}
+
+ /**
+ * Jni binding to base::i18n::IsRTL.
+ * @return true if the current locale is right to left.
+ */
+ public static boolean isRtl() {
+ return nativeIsRTL();
+ }
+
+ /**
+ * Jni binding to base::i18n::GetFirstStrongCharacterDirection
+ * @param string String to decide the direction.
+ * @return One of the UNKNOWN_DIRECTION, RIGHT_TO_LEFT, and LEFT_TO_RIGHT.
+ */
+ public static int getFirstStrongCharacterDirection(String string) {
+ return nativeGetFirstStrongCharacterDirection(string);
+ }
+
+ private static native boolean nativeIsRTL();
+
+ private static native int nativeGetFirstStrongCharacterDirection(String string);
}
diff --git a/base/android/locale_utils.cc b/base/android/locale_utils.cc
index f9c030d..6bf0686 100644
--- a/base/android/locale_utils.cc
+++ b/base/android/locale_utils.cc
@@ -7,6 +7,7 @@
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/android/scoped_java_ref.h"
+#include "base/i18n/rtl.h"
#include "base/logging.h"
#include "base/string_util.h"
#include "jni/LocaleUtils_jni.h"
@@ -15,6 +16,16 @@
namespace base {
namespace android {
+jboolean IsRTL(JNIEnv* env, jclass clazz) {
+ return base::i18n::IsRTL();
+}
+
+jint GetFirstStrongCharacterDirection(JNIEnv* env, jclass clazz,
+ jstring string) {
+ return base::i18n::GetFirstStrongCharacterDirection(
+ base::android::ConvertJavaStringToUTF16(env, string));
+}
+
std::string GetDefaultLocale() {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jstring> locale = Java_LocaleUtils_getDefaultLocale(env);