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

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: Created 9 years, 1 month 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/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..7251ae8ec41ec380f036a3ccbdaf748ac003525c 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;
@@ -481,33 +481,22 @@ jvalue CoerceJavaScriptValueToJavaValue(const NPVariant& variant,
return jvalue();
}
-class ObjectGetClassID : public MethodID {
- public:
- static ObjectGetClassID* GetInstance() {
- return Singleton<ObjectGetClassID>::get();
M-A Ruel 2011/12/01 14:36:03 If you had used LazyInstance in the first place, y
joth 2011/12/02 11:39:02 I don't quite follow this bit- - both Singleton<>
- }
- private:
- friend struct DefaultSingletonTraits<ObjectGetClassID>;
- ObjectGetClassID()
- : MethodID(AttachCurrentThread(), "java/lang/Object", "getClass",
- "()Ljava/lang/Class;") {
- }
- DISALLOW_COPY_AND_ASSIGN(ObjectGetClassID);
-};
+jmethodID GetObjectGetClassID() {
+ static jmethodID id = GetMethodIDFromClassName(AttachCurrentThread(),
M-A Ruel 2011/12/01 14:36:03 I'm really not a fan of static locals. Especially
+ "java/lang/Object",
+ "getClass",
+ "()Ljava/lang/Class;");
+ return id;
+}
-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);
-};
+jmethodID GetClassGetMethodsID() {
+ static jmethodID id = GetMethodIDFromClassName(
+ AttachCurrentThread(),
+ "java/lang/Class",
+ "getMethods",
+ "()[Ljava/lang/reflect/Method;");
+ return id;
+}
} // namespace
@@ -591,11 +580,9 @@ 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_, GetObjectGetClassID())));
ScopedJavaLocalRef<jobjectArray> methods(env, static_cast<jobjectArray>(
- env->CallObjectMethod(clazz.obj(),
- ClassGetMethodsID::GetInstance()->id())));
+ env->CallObjectMethod(clazz.obj(), GetClassGetMethodsID())));
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) {

Powered by Google App Engine
This is Rietveld 408576698