| Index: content/browser/android/java/gin_java_script_to_java_types_coercion.cc
|
| diff --git a/content/browser/android/java/gin_java_script_to_java_types_coercion.cc b/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
|
| index 1a8081396c6e8bbf4907235ed30c3a155d966418..75f902f3b26703480d551437517bd4537865a484 100644
|
| --- a/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
|
| +++ b/content/browser/android/java/gin_java_script_to_java_types_coercion.cc
|
| @@ -12,8 +12,7 @@
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "content/common/android/gin_java_bridge_value.h"
|
| -
|
| -using base::android::ConvertUTF8ToJavaString;
|
| +#include "third_party/WebKit/public/platform/WebString.h"
|
|
|
| namespace content {
|
|
|
| @@ -22,6 +21,13 @@ namespace {
|
| const char kJavaLangString[] = "java/lang/String";
|
| const char kUndefined[] = "undefined";
|
|
|
| +// This is an intermediate solution until we fix http://crbug.com/391492.
|
| +jstring ConvertUTF8ToJString(JNIEnv* env, const std::string& string) {
|
| + base::string16 utf16(
|
| + blink::WebString::fromUTF8(string.c_str(), string.size()));
|
| + return env->NewString(utf16.data(), utf16.length());
|
| +}
|
| +
|
| double RoundDoubleTowardsZero(const double& x) {
|
| if (std::isnan(x)) {
|
| return 0.0;
|
| @@ -100,8 +106,7 @@ jvalue CoerceJavaScriptIntegerToJavaValue(JNIEnv* env,
|
| break;
|
| case JavaType::TypeString:
|
| result.l = coerce_to_string
|
| - ? ConvertUTF8ToJavaString(
|
| - env, base::Int64ToString(int_value)).Release()
|
| + ? ConvertUTF8ToJString(env, base::Int64ToString(int_value))
|
| : NULL;
|
| break;
|
| case JavaType::TypeBoolean:
|
| @@ -161,11 +166,10 @@ jvalue CoerceJavaScriptDoubleToJavaValue(JNIEnv* env,
|
| result.l = NULL;
|
| break;
|
| case JavaType::TypeString:
|
| - result.l =
|
| - coerce_to_string
|
| - ? ConvertUTF8ToJavaString(
|
| - env, base::StringPrintf("%.6lg", double_value)).Release()
|
| - : NULL;
|
| + result.l = coerce_to_string
|
| + ? ConvertUTF8ToJString(
|
| + env, base::StringPrintf("%.6lg", double_value))
|
| + : NULL;
|
| break;
|
| case JavaType::TypeBoolean:
|
| // LIVECONNECT_COMPLIANCE: Existing behavior is to convert to false. Spec
|
| @@ -203,10 +207,9 @@ jvalue CoerceJavaScriptBooleanToJavaValue(JNIEnv* env,
|
| result.l = NULL;
|
| break;
|
| case JavaType::TypeString:
|
| - result.l = coerce_to_string
|
| - ? ConvertUTF8ToJavaString(
|
| - env, boolean_value ? "true" : "false").Release()
|
| - : NULL;
|
| + result.l = coerce_to_string ? ConvertUTF8ToJString(
|
| + env, boolean_value ? "true" : "false")
|
| + : NULL;
|
| break;
|
| case JavaType::TypeByte:
|
| case JavaType::TypeChar:
|
| @@ -243,7 +246,7 @@ jvalue CoerceJavaScriptStringToJavaValue(JNIEnv* env,
|
| case JavaType::TypeString: {
|
| std::string string_result;
|
| value->GetAsString(&string_result);
|
| - result.l = ConvertUTF8ToJavaString(env, string_result).Release();
|
| + result.l = ConvertUTF8ToJString(env, string_result);
|
| break;
|
| }
|
| case JavaType::TypeObject:
|
| @@ -397,7 +400,7 @@ jvalue CoerceJavaScriptNullOrUndefinedToJavaValue(JNIEnv* env,
|
| // LIVECONNECT_COMPLIANCE: Existing behavior is to convert undefined to
|
| // "undefined". Spec requires converting undefined to NULL.
|
| result.l = (coerce_to_string && is_undefined)
|
| - ? ConvertUTF8ToJavaString(env, kUndefined).Release()
|
| + ? ConvertUTF8ToJString(env, kUndefined)
|
| : NULL;
|
| break;
|
| case JavaType::TypeByte:
|
| @@ -583,9 +586,8 @@ jvalue CoerceJavaScriptObjectToJavaValue(JNIEnv* env,
|
| case JavaType::TypeString:
|
| // LIVECONNECT_COMPLIANCE: Existing behavior is to convert to
|
| // "undefined". Spec requires calling toString() on the Java object.
|
| - result.l = coerce_to_string
|
| - ? ConvertUTF8ToJavaString(env, kUndefined).Release()
|
| - : NULL;
|
| + result.l =
|
| + coerce_to_string ? ConvertUTF8ToJString(env, kUndefined) : NULL;
|
| break;
|
| case JavaType::TypeByte:
|
| case JavaType::TypeShort:
|
|
|