Index: content/browser/android/java/gin_java_method_invocation_helper.cc |
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 ae7d643af5607d7b2da8adf8a8a07041d36ec3ed..254296f74c618de523e65fd9a44fcec18bc28798 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: { |