| Index: base/android/jni_generator/jni_generator.py
|
| diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
|
| index 0a42f4c2cea7741225102907315780ce32073324..8cccb3e8d7d767b9465099705545de7556c42d4a 100644
|
| --- a/base/android/jni_generator/jni_generator.py
|
| +++ b/base/android/jni_generator/jni_generator.py
|
| @@ -605,7 +605,7 @@ ${KMETHODS}
|
| };
|
| const int kMethods${JAVA_CLASS}Size = arraysize(kMethods${JAVA_CLASS});
|
|
|
| - if (env->RegisterNatives(g_${JAVA_CLASS}_clazz.obj(),
|
| + if (env->RegisterNatives(g_${JAVA_CLASS}_clazz,
|
| kMethods${JAVA_CLASS},
|
| kMethods${JAVA_CLASS}Size) < 0) {
|
| LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
|
| @@ -724,7 +724,7 @@ ${FUNCTION_SIGNATURE} {""")
|
| static jmethodID g_${JAVA_CLASS}_${METHOD_ID_VAR_NAME} = 0;
|
| ${FUNCTION_HEADER}
|
| /* Must call RegisterNativesImpl() */
|
| - DCHECK(!g_${JAVA_CLASS}_clazz.is_null());
|
| + DCHECK(g_${JAVA_CLASS}_clazz);
|
| DCHECK(g_${JAVA_CLASS}_${METHOD_ID_VAR_NAME});
|
| ${RETURN_DECLARATION}
|
| ${PRE_CALL}env->Call${STATIC}${ENV_CALL}Method(${FIRST_PARAM_IN_CALL},
|
| @@ -734,7 +734,7 @@ ${FUNCTION_HEADER}
|
| }""")
|
| if called_by_native.static:
|
| first_param_in_declaration = ''
|
| - first_param_in_call = ('g_%s_clazz.obj()' %
|
| + first_param_in_call = ('g_%s_clazz' %
|
| (called_by_native.java_class_name or
|
| self.class_name))
|
| else:
|
| @@ -816,7 +816,7 @@ ${FUNCTION_HEADER}
|
| """Returns the ClassPath constants."""
|
| ret = []
|
| template = Template("""\
|
| -const char* const k${JAVA_CLASS}ClassPath = "${JNI_CLASS_PATH}";""")
|
| +const char k${JAVA_CLASS}ClassPath[] = "${JNI_CLASS_PATH}";""")
|
| native_classes = self.GetUniqueClasses(self.natives)
|
| called_by_native_classes = self.GetUniqueClasses(self.called_by_natives)
|
| all_classes = native_classes
|
| @@ -830,10 +830,8 @@ const char* const k${JAVA_CLASS}ClassPath = "${JNI_CLASS_PATH}";""")
|
| ret += ''
|
| for clazz in called_by_native_classes:
|
| template = Template("""\
|
| -// Leaking this JavaRef as we cannot use LazyInstance from some threads.
|
| -base::android::ScopedJavaGlobalRef<jclass>&
|
| - g_${JAVA_CLASS}_clazz =
|
| - *(new base::android::ScopedJavaGlobalRef<jclass>());""")
|
| +// Leaking this jclass as we cannot use LazyInstance from some threads.
|
| +jclass g_${JAVA_CLASS}_clazz = NULL;""")
|
| values = {
|
| 'JAVA_CLASS': clazz,
|
| }
|
| @@ -843,8 +841,8 @@ base::android::ScopedJavaGlobalRef<jclass>&
|
| def GetFindClasses(self):
|
| """Returns the imlementation of FindClass for all known classes."""
|
| template = Template("""\
|
| - g_${JAVA_CLASS}_clazz.Reset(
|
| - base::android::GetClass(env, k${JAVA_CLASS}ClassPath));""")
|
| + g_${JAVA_CLASS}_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
|
| + base::android::GetUnscopedClass(env, k${JAVA_CLASS}ClassPath)));""")
|
| ret = []
|
| for clazz in self.GetUniqueClasses(self.called_by_natives):
|
| values = {'JAVA_CLASS': clazz}
|
| @@ -854,10 +852,11 @@ base::android::ScopedJavaGlobalRef<jclass>&
|
| def GetMethodIDImpl(self, called_by_native):
|
| """Returns the implementation of GetMethodID."""
|
| template = Template("""\
|
| - g_${JAVA_CLASS}_${METHOD_ID_VAR_NAME} = base::android::Get${STATIC}MethodID(
|
| - env, g_${JAVA_CLASS}_clazz,
|
| - "${NAME}",
|
| - ${JNI_SIGNATURE});
|
| + g_${JAVA_CLASS}_${METHOD_ID_VAR_NAME} =
|
| + base::android::Get${STATIC}MethodID(
|
| + env, g_${JAVA_CLASS}_clazz,
|
| + "${NAME}",
|
| + ${JNI_SIGNATURE});
|
| """)
|
| values = {
|
| 'JAVA_CLASS': called_by_native.java_class_name or self.class_name,
|
|
|