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 |