Index: content/browser/renderer_host/java/java_bound_object.cc |
diff --git a/content/browser/renderer_host/java/java_bound_object.cc b/content/browser/renderer_host/java/java_bound_object.cc |
index e139d4696a775748068d49d9434b00894d9a8b92..5020752154661d22e3ddd38fef9b18312a21984e 100644 |
--- a/content/browser/renderer_host/java/java_bound_object.cc |
+++ b/content/browser/renderer_host/java/java_bound_object.cc |
@@ -15,8 +15,8 @@ |
using base::StringPrintf; |
using base::android::AttachCurrentThread; |
using base::android::ConvertUTF8ToJavaString; |
+using base::android::GetMethodIDFromClassName; |
using base::android::JavaRef; |
-using base::android::MethodID; |
using base::android::ScopedJavaGlobalRef; |
using base::android::ScopedJavaLocalRef; |
using WebKit::WebBindings; |
@@ -31,6 +31,14 @@ using WebKit::WebBindings; |
namespace { |
+const char kJavaLangClass[] = "java/lang/Class"; |
+const char kJavaLangObject[] = "java/lang/Object"; |
+const char kGetClass[] = "getClass"; |
+const char kGetMethods[] = "getMethods"; |
+const char kReturningJavaLangClass[] = "()Ljava/lang/Class;"; |
+const char kReturningJavaLangReflectMethodArray[] = |
+ "()[Ljava/lang/reflect/Method;"; |
+ |
// Our special NPObject type. We extend an NPObject with a pointer to a |
// JavaBoundObject. We also add static methods for each of the NPObject |
// callbacks, which are registered by our NPClass. These methods simply |
@@ -481,34 +489,6 @@ jvalue CoerceJavaScriptValueToJavaValue(const NPVariant& variant, |
return jvalue(); |
} |
-class ObjectGetClassID : public MethodID { |
- public: |
- static ObjectGetClassID* GetInstance() { |
- return Singleton<ObjectGetClassID>::get(); |
- } |
- private: |
- friend struct DefaultSingletonTraits<ObjectGetClassID>; |
- ObjectGetClassID() |
- : MethodID(AttachCurrentThread(), "java/lang/Object", "getClass", |
- "()Ljava/lang/Class;") { |
- } |
- DISALLOW_COPY_AND_ASSIGN(ObjectGetClassID); |
-}; |
- |
-class ClassGetMethodsID : public MethodID { |
- public: |
- static ClassGetMethodsID* GetInstance() { |
- return Singleton<ClassGetMethodsID>::get(); |
- } |
- private: |
- friend struct DefaultSingletonTraits<ClassGetMethodsID>; |
- ClassGetMethodsID() |
- : MethodID(AttachCurrentThread(), "java/lang/Class", "getMethods", |
- "()[Ljava/lang/reflect/Method;") { |
- } |
- DISALLOW_COPY_AND_ASSIGN(ClassGetMethodsID); |
-}; |
- |
} // namespace |
@@ -591,11 +571,17 @@ void JavaBoundObject::EnsureMethodsAreSetUp() const { |
JNIEnv* env = AttachCurrentThread(); |
ScopedJavaLocalRef<jclass> clazz(env, static_cast<jclass>( |
- env->CallObjectMethod(java_object_, |
- ObjectGetClassID::GetInstance()->id()))); |
+ env->CallObjectMethod(java_object_, GetMethodIDFromClassName( |
+ env, |
+ kJavaLangObject, |
+ kGetClass, |
+ kReturningJavaLangClass)))); |
ScopedJavaLocalRef<jobjectArray> methods(env, static_cast<jobjectArray>( |
- env->CallObjectMethod(clazz.obj(), |
- ClassGetMethodsID::GetInstance()->id()))); |
+ env->CallObjectMethod(clazz.obj(), GetMethodIDFromClassName( |
+ env, |
+ kJavaLangClass, |
+ kGetMethods, |
+ kReturningJavaLangReflectMethodArray)))); |
size_t num_methods = env->GetArrayLength(methods.obj()); |
DCHECK(num_methods) << "Java objects always have public methods"; |
for (size_t i = 0; i < num_methods; ++i) { |