| 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) {
|
|
|