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

Unified Diff: content/browser/renderer_host/java/java_bound_object.cc

Issue 8769005: Don't use Singleton to cache JNI method IDs in Java Bridge (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename test file, fix comments Created 9 years 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
« no previous file with comments | « base/base.gyp ('k') | content/browser/renderer_host/java/java_method.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « base/base.gyp ('k') | content/browser/renderer_host/java/java_method.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698