diff options
author | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-28 07:19:26 +0000 |
---|---|---|
committer | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-28 07:19:26 +0000 |
commit | 7490f5bd894adf0b8662f7741dcbf3a5f895c867 (patch) | |
tree | 198b5f1abe9eb7f5caf773dc151552c3a295a7b7 /base/android | |
parent | d616de0124e94e4cdf85a0229f4aa84aca8dc85d (diff) | |
download | chromium_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.java | 27 | ||||
-rw-r--r-- | base/android/locale_utils.cc | 11 |
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); |