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

Unified Diff: content/browser/android/java/java_method.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/java_method.cc
diff --git a/content/browser/android/java/java_method.cc b/content/browser/android/java/java_method.cc
index d1ebbb5287fe622cfe3656d3a0579ca41948a0cd..9da0102cf33bb36c59103fc9a3abce4ec5cca72b 100644
--- a/content/browser/android/java/java_method.cc
+++ b/content/browser/android/java/java_method.cc
@@ -8,7 +8,6 @@
#include "base/android/jni_string.h"
#include "base/lazy_instance.h"
#include "base/memory/singleton.h"
-#include "base/strings/string_util.h" // For ReplaceSubstringsAfterOffset
#include "content/browser/android/java/jni_helper.h"
using base::android::AttachCurrentThread;
@@ -50,43 +49,11 @@ struct ModifierClassTraits :
base::LazyInstance<ScopedJavaGlobalRef<jclass>, ModifierClassTraits>
g_java_lang_reflect_modifier_class = LAZY_INSTANCE_INITIALIZER;
-std::string BinaryNameToJNIName(const std::string& binary_name,
- JavaType* type) {
+std::string BinaryNameToJNISignature(const std::string& binary_name,
+ JavaType* type) {
DCHECK(type);
*type = JavaType::CreateFromBinaryName(binary_name);
- switch (type->type) {
- case JavaType::TypeBoolean:
- return "Z";
- case JavaType::TypeByte:
- return "B";
- case JavaType::TypeChar:
- return "C";
- case JavaType::TypeShort:
- return "S";
- case JavaType::TypeInt:
- return "I";
- case JavaType::TypeLong:
- return "J";
- case JavaType::TypeFloat:
- return "F";
- case JavaType::TypeDouble:
- return "D";
- case JavaType::TypeVoid:
- return "V";
- case JavaType::TypeArray: {
- // For array types, the binary name uses the JNI name encodings.
- std::string jni_name = binary_name;
- ReplaceSubstringsAfterOffset(&jni_name, 0, ".", "/");
- return jni_name;
- }
- case JavaType::TypeString:
- case JavaType::TypeObject:
- std::string jni_name = "L" + binary_name + ";";
- ReplaceSubstringsAfterOffset(&jni_name, 0, ".", "/");
- return jni_name;
- }
- NOTREACHED();
- return std::string();
+ return type->JNISignature();
}
} // namespace
@@ -191,7 +158,7 @@ void JavaMethod::EnsureTypesAndIDAreSetUp() const {
kGetName,
kReturningJavaLangString))));
std::string name_utf8 = ConvertJavaStringToUTF8(name);
- signature += BinaryNameToJNIName(name_utf8, &parameter_types_[i]);
+ signature += BinaryNameToJNISignature(name_utf8, &parameter_types_[i]);
}
signature += ")";
@@ -208,8 +175,8 @@ void JavaMethod::EnsureTypesAndIDAreSetUp() const {
kJavaLangClass,
kGetName,
kReturningJavaLangString))));
- signature += BinaryNameToJNIName(ConvertJavaStringToUTF8(name),
- &return_type_);
+ signature += BinaryNameToJNISignature(ConvertJavaStringToUTF8(name),
+ &return_type_);
// Determine whether the method is static.
jint modifiers = env->CallIntMethod(
« no previous file with comments | « content/browser/android/java/gin_java_script_to_java_types_coercion.cc ('k') | content/browser/android/java/java_type.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698