Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(404)

Unified Diff: content/browser/android/java/gin_java_method_invocation_helper.cc

Issue 393733002: [Android] Check for Java object types covariance in Java Bridge (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated findbugs_known_bugs Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(), &parameters[0]);
+
+ if (coercion_error == kGinJavaBridgeNoError) {
+ if (method->is_static()) {
+ InvokeMethod(
+ NULL, cls.obj(), method->return_type(), method->id(), &parameters[0]);
+ } else {
+ InvokeMethod(
+ obj.obj(), NULL, method->return_type(), method->id(), &parameters[0]);
+ }
} else {
- InvokeMethod(
- obj.obj(), NULL, method->return_type(), method->id(), &parameters[0]);
+ SetInvocationError(coercion_error);
}
// Now that we're done with the jvalue, release any local references created

Powered by Google App Engine
This is Rietveld 408576698