| 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 254296f74c618de523e65fd9a44fcec18bc28798..b8145475dde059b004950bbb66446567894e07b3 100644
|
| --- a/content/browser/android/java/gin_java_method_invocation_helper.cc
|
| +++ b/content/browser/android/java/gin_java_method_invocation_helper.cc
|
| @@ -147,19 +147,29 @@ void GinJavaMethodInvocationHelper::Invoke() {
|
| return;
|
| }
|
|
|
| + GinJavaBridgeError coercion_error = kGinJavaBridgeNoError;
|
| std::vector<jvalue> parameters(method->num_parameters());
|
| for (size_t i = 0; i < method->num_parameters(); ++i) {
|
| const base::Value* argument;
|
| arguments_->Get(i, &argument);
|
| - parameters[i] = CoerceJavaScriptValueToJavaValue(
|
| - env, argument, method->parameter_type(i), true, object_refs_);
|
| + parameters[i] = CoerceJavaScriptValueToJavaValue(env,
|
| + argument,
|
| + method->parameter_type(i),
|
| + true,
|
| + object_refs_,
|
| + &coercion_error);
|
| }
|
| - if (method->is_static()) {
|
| - InvokeMethod(
|
| - NULL, cls.obj(), method->return_type(), method->id(), ¶meters[0]);
|
| +
|
| + if (coercion_error == kGinJavaBridgeNoError) {
|
| + if (method->is_static()) {
|
| + InvokeMethod(
|
| + NULL, cls.obj(), method->return_type(), method->id(), ¶meters[0]);
|
| + } else {
|
| + InvokeMethod(
|
| + obj.obj(), NULL, method->return_type(), method->id(), ¶meters[0]);
|
| + }
|
| } else {
|
| - InvokeMethod(
|
| - obj.obj(), NULL, method->return_type(), method->id(), ¶meters[0]);
|
| + SetInvocationError(coercion_error);
|
| }
|
|
|
| // Now that we're done with the jvalue, release any local references created
|
|
|