Index: trunk/src/base/android/jni_generator/jni_generator.py |
=================================================================== |
--- trunk/src/base/android/jni_generator/jni_generator.py (revision 290812) |
+++ trunk/src/base/android/jni_generator/jni_generator.py (working copy) |
@@ -731,7 +731,7 @@ |
def GetContent(self): |
"""Returns the content of the JNI binding file.""" |
template = Template("""\ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -947,11 +947,11 @@ |
template = Template("""\ |
const int kMethods${JAVA_CLASS}Size = arraysize(kMethods${JAVA_CLASS}); |
- if (env->RegisterNatives(${JAVA_CLASS}_clazz(env), |
+ if (env->RegisterNatives(g_${JAVA_CLASS}_clazz, |
kMethods${JAVA_CLASS}, |
kMethods${JAVA_CLASS}Size) < 0) { |
jni_generator::HandleRegistrationError( |
- env, ${JAVA_CLASS}_clazz(env), __FILE__); |
+ env, g_${JAVA_CLASS}_clazz, __FILE__); |
return false; |
} |
""") |
@@ -1122,10 +1122,11 @@ |
def GetCalledByNativeValues(self, called_by_native): |
"""Fills in necessary values for the CalledByNative methods.""" |
- java_class = called_by_native.java_class_name or self.class_name |
if called_by_native.static or called_by_native.is_constructor: |
first_param_in_declaration = '' |
- first_param_in_call = ('%s_clazz(env)' % java_class) |
+ first_param_in_call = ('g_%s_clazz' % |
+ (called_by_native.java_class_name or |
+ self.class_name)) |
else: |
first_param_in_declaration = ', jobject obj' |
first_param_in_call = 'obj' |
@@ -1159,7 +1160,7 @@ |
else: |
return_clause = 'return ret;' |
return { |
- 'JAVA_CLASS': java_class, |
+ 'JAVA_CLASS': called_by_native.java_class_name or self.class_name, |
'RETURN_TYPE': return_type, |
'OPTIONAL_ERROR_RETURN': optional_error_return, |
'RETURN_DECLARATION': return_declaration, |
@@ -1203,7 +1204,7 @@ |
${FUNCTION_HEADER} |
/* Must call RegisterNativesImpl() */ |
CHECK_CLAZZ(env, ${FIRST_PARAM_IN_CALL}, |
- ${JAVA_CLASS}_clazz(env)${OPTIONAL_ERROR_RETURN}); |
+ g_${JAVA_CLASS}_clazz${OPTIONAL_ERROR_RETURN}); |
jmethodID method_id = |
${GET_METHOD_ID_IMPL} |
${RETURN_DECLARATION} |
@@ -1262,56 +1263,22 @@ |
} |
ret += [template.substitute(values)] |
ret += '' |
- |
- class_getter_methods = [] |
- if self.options.native_exports: |
+ for clazz in called_by_native_classes: |
template = Template("""\ |
// Leaking this jclass as we cannot use LazyInstance from some threads. |
-base::subtle::AtomicWord g_${JAVA_CLASS}_clazz = 0; |
-jclass ${JAVA_CLASS}_clazz(JNIEnv* env) { |
- return base::android::LazyGetClass(env, k${JAVA_CLASS}ClassPath, \ |
- &g_${JAVA_CLASS}_clazz); |
-}""") |
- else: |
- template = Template("""\ |
-// Leaking this jclass as we cannot use LazyInstance from some threads. |
-jclass g_${JAVA_CLASS}_clazz = NULL; |
-jclass ${JAVA_CLASS}_clazz(JNIEnv*) { return g_${JAVA_CLASS}_clazz; }""") |
- |
- for clazz in called_by_native_classes: |
+jclass g_${JAVA_CLASS}_clazz = NULL;""") |
values = { |
'JAVA_CLASS': clazz, |
} |
- class_getter_methods += [template.substitute(values)] |
- |
- template = Template("""\ |
-#if __clang__ |
-#pragma clang diagnostic push |
-#pragma clang diagnostic ignored "-Wunused-function" |
-#endif |
-${CLASS_GETER_METHODS} |
-#if __clang__ |
-#pragma clang diagnostic pop |
-#endif""") |
- values = { |
- 'CLASS_GETER_METHODS': '\n'.join(class_getter_methods) |
- } |
- ret += [template.substitute(values)] |
+ ret += [template.substitute(values)] |
return '\n'.join(ret) |
def GetFindClasses(self): |
"""Returns the imlementation of FindClass for all known classes.""" |
if self.init_native: |
- if self.options.native_exports: |
- template = Template("""\ |
- base::subtle::Release_Store(&g_${JAVA_CLASS}_clazz, |
- static_cast<base::subtle::AtomicWord>(env->NewWeakGlobalRef(clazz));""") |
- else: |
- template = Template("""\ |
+ template = Template("""\ |
g_${JAVA_CLASS}_clazz = static_cast<jclass>(env->NewWeakGlobalRef(clazz));""") |
else: |
- if self.options.native_exports: |
- return '\n' |
template = Template("""\ |
g_${JAVA_CLASS}_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
base::android::GetClass(env, k${JAVA_CLASS}ClassPath).obj()));""") |
@@ -1326,13 +1293,13 @@ |
if self.options.eager_called_by_natives: |
template = Template("""\ |
env->Get${STATIC_METHOD_PART}MethodID( |
- ${JAVA_CLASS}_clazz(env), |
+ g_${JAVA_CLASS}_clazz, |
"${JNI_NAME}", ${JNI_SIGNATURE});""") |
else: |
template = Template("""\ |
base::android::MethodID::LazyGet< |
base::android::MethodID::TYPE_${STATIC}>( |
- env, ${JAVA_CLASS}_clazz(env), |
+ env, g_${JAVA_CLASS}_clazz, |
"${JNI_NAME}", |
${JNI_SIGNATURE}, |
&g_${JAVA_CLASS}_${METHOD_ID_VAR_NAME}); |