summaryrefslogtreecommitdiffstats
path: root/content/browser/android/java/gin_java_method_invocation_helper.cc
diff options
context:
space:
mode:
authormnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-09 13:13:16 +0000
committermnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-09 13:13:16 +0000
commited921a04a86cc068cd1e7452da7ddb1861da246a (patch)
treedfe1d6b6dbd75efe47bdd993116d2c2c085fc5fd /content/browser/android/java/gin_java_method_invocation_helper.cc
parent3b4669164d75d4574cdbd3409ec18e2166f87965 (diff)
downloadchromium_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.cc13
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: {