diff options
author | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-09 13:13:16 +0000 |
---|---|---|
committer | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-09 13:13:16 +0000 |
commit | ed921a04a86cc068cd1e7452da7ddb1861da246a (patch) | |
tree | dfe1d6b6dbd75efe47bdd993116d2c2c085fc5fd /content/browser/android/java/gin_java_method_invocation_helper.cc | |
parent | 3b4669164d75d4574cdbd3409ec18e2166f87965 (diff) | |
download | chromium_src-ed921a04a86cc068cd1e7452da7ddb1861da246a.zip chromium_src-ed921a04a86cc068cd1e7452da7ddb1861da246a.tar.gz chromium_src-ed921a04a86cc068cd1e7452da7ddb1861da246a.tar.bz2 |
[Android] Use Blink UTF8<->UTF16 strings conversion in Gin Java Bridge
This patch is mainly for merging into M37. In trunk, we should fix
base:: conversion routines instead.
Blink UTF conversion routines are considerably faster than the ones
from base::, especially on strings that only contain Latin-1 characters,
so use them instead. This gives a 9% speed gain on Cordova's "exec"
benchmark.
BUG=391492
Review URL: https://codereview.chromium.org/377173002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282017 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/android/java/gin_java_method_invocation_helper.cc')
-rw-r--r-- | content/browser/android/java/gin_java_method_invocation_helper.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/content/browser/android/java/gin_java_method_invocation_helper.cc b/content/browser/android/java/gin_java_method_invocation_helper.cc index ae7d643..254296f 100644 --- a/content/browser/android/java/gin_java_method_invocation_helper.cc +++ b/content/browser/android/java/gin_java_method_invocation_helper.cc @@ -8,13 +8,13 @@ #include "base/android/event_log.h" #include "base/android/jni_android.h" -#include "base/android/jni_string.h" #include "base/float_util.h" #include "content/browser/android/java/gin_java_script_to_java_types_coercion.h" #include "content/browser/android/java/java_method.h" #include "content/browser/android/java/jni_helper.h" #include "content/common/android/gin_java_bridge_value.h" #include "content/public/browser/browser_thread.h" +#include "third_party/WebKit/public/platform/WebString.h" using base::android::AttachCurrentThread; using base::android::ScopedJavaLocalRef; @@ -26,6 +26,15 @@ namespace { // See frameworks/base/core/java/android/webkit/EventLogTags.logtags const int kObjectGetClassInvocationAttemptLogTag = 70151; +// This is an intermediate solution until we fix http://crbug.com/391492. +std::string ConvertJavaStringToUTF8(JNIEnv* env, jstring str) { + const jchar* chars = env->GetStringChars(str, NULL); + DCHECK(chars); + blink::WebString utf16(chars, env->GetStringLength(str)); + env->ReleaseStringChars(str, chars); + return utf16.utf8(); +} + } // namespace GinJavaMethodInvocationHelper::GinJavaMethodInvocationHelper( @@ -301,7 +310,7 @@ void GinJavaMethodInvocationHelper::InvokeMethod(jobject object, break; } result_wrapper.AppendString( - base::android::ConvertJavaStringToUTF8(scoped_java_string)); + ConvertJavaStringToUTF8(env, scoped_java_string.obj())); break; } case JavaType::TypeObject: { |