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

Unified Diff: base/android/jni_generator/jni_generator.py

Issue 2154293002: jni_generator: handle inner class natives properly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months 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: 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 b0134d6ae12e241c4506b91dc6b82cb65f533ed3..61d366e897becc5acfceda45705ada91cac05c31 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -1155,7 +1155,7 @@ ${FUNCTION_HEADER}
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)
- if self.options.native_exports:
+ if self.options.native_exports and not self.options.native_exports_optional:
all_classes = called_by_native_classes
else:
all_classes = native_classes
@@ -1169,7 +1169,6 @@ const char k${JAVA_CLASS}ClassPath[] = "${JNI_CLASS_PATH}";""")
ret += [template.substitute(values)]
ret += ''
- class_getter_methods = []
if self.options.native_exports:
template = Template("""\
// Leaking this jclass as we cannot use LazyInstance from some threads.
@@ -1183,7 +1182,7 @@ base::android::LazyGetClass(env, k${JAVA_CLASS}ClassPath, \
jclass g_${JAVA_CLASS}_clazz = NULL;
#define ${JAVA_CLASS}_clazz(env) g_${JAVA_CLASS}_clazz""")
- for clazz in called_by_native_classes:
+ for clazz in all_classes:
values = {
'JAVA_CLASS': clazz,
}
@@ -1199,7 +1198,9 @@ jclass g_${JAVA_CLASS}_clazz = NULL;
g_${JAVA_CLASS}_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
base::android::GetClass(env, k${JAVA_CLASS}ClassPath).obj()));""")
ret = []
- for clazz in self.GetUniqueClasses(self.called_by_natives):
+ all_classes = self.GetUniqueClasses(self.natives)
+ all_classes.update(self.GetUniqueClasses(self.called_by_natives))
+ for clazz in all_classes:
values = {'JAVA_CLASS': clazz}
ret += [template.substitute(values)]
return '\n'.join(ret)

Powered by Google App Engine
This is Rietveld 408576698