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

Side by Side Diff: base/android/jni_generator/jni_generator.py

Issue 960873002: Update from https://crrev.com/318214 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Extracts native methods from a Java file and generates the JNI bindings. 6 """Extracts native methods from a Java file and generates the JNI bindings.
7 If you change this, please run and update the tests.""" 7 If you change this, please run and update the tests."""
8 8
9 import collections 9 import collections
10 import errno 10 import errno
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 'METHOD_ID_VAR_NAME': called_by_native.method_id_var_name, 915 'METHOD_ID_VAR_NAME': called_by_native.method_id_var_name,
916 'GET_METHOD_ID_IMPL': self.GetMethodIDImpl(called_by_native), 916 'GET_METHOD_ID_IMPL': self.GetMethodIDImpl(called_by_native),
917 } 917 }
918 ret += [template.substitute(values)] 918 ret += [template.substitute(values)]
919 return '\n'.join(ret) 919 return '\n'.join(ret)
920 920
921 def GetRegisterNativesString(self): 921 def GetRegisterNativesString(self):
922 """Returns the code for RegisterNatives.""" 922 """Returns the code for RegisterNatives."""
923 template = Template("""\ 923 template = Template("""\
924 ${REGISTER_NATIVES_SIGNATURE} { 924 ${REGISTER_NATIVES_SIGNATURE} {
925 ${EARLY_EXIT}${CLASSES} 925 ${EARLY_EXIT}
926 ${CLASSES}
926 ${NATIVES} 927 ${NATIVES}
927 ${CALLED_BY_NATIVES} 928 ${CALLED_BY_NATIVES}
928 return true; 929 return true;
929 } 930 }
930 """) 931 """)
931 signature = 'static bool RegisterNativesImpl(JNIEnv* env' 932 signature = 'static bool RegisterNativesImpl(JNIEnv* env'
932 if self.init_native: 933 if self.init_native:
933 signature += ', jclass clazz)' 934 signature += ', jclass clazz)'
934 else: 935 else:
935 signature += ')' 936 signature += ')'
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1066 return template.substitute(values) 1067 return template.substitute(values)
1067 else: 1068 else:
1068 return native.name 1069 return native.name
1069 1070
1070 def GetForwardDeclaration(self, native): 1071 def GetForwardDeclaration(self, native):
1071 template_str = """ 1072 template_str = """
1072 static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS}); 1073 static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS});
1073 """ 1074 """
1074 if self.options.native_exports: 1075 if self.options.native_exports:
1075 template_str += """ 1076 template_str += """
1076 __attribute__((visibility("default"), alias("${NAME}"))) 1077 __attribute__((visibility("default")))
1077 ${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS}); 1078 ${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS}) {
1079 return ${NAME}(${PARAMS_IN_CALL});
1080 }
1078 """ 1081 """
1079 template = Template(template_str) 1082 template = Template(template_str)
1080 params_in_call = [] 1083 params_in_call = []
1081 if not self.options.pure_native_methods: 1084 if not self.options.pure_native_methods:
1082 params_in_call = ['env', 'jcaller'] 1085 params_in_call = ['env', 'jcaller']
1083 params_in_call = ', '.join(params_in_call + [p.name for p in native.params]) 1086 params_in_call = ', '.join(params_in_call + [p.name for p in native.params])
1084 1087
1085 values = {'RETURN': JavaDataTypeToC(native.return_type), 1088 values = {'RETURN': JavaDataTypeToC(native.return_type),
1086 'NAME': native.name, 1089 'NAME': native.name,
1087 'PARAMS': self.GetParamsInDeclaration(native), 1090 'PARAMS': self.GetParamsInDeclaration(native),
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1305 } 1308 }
1306 ret += [template.substitute(values)] 1309 ret += [template.substitute(values)]
1307 1310
1308 return '\n'.join(ret) 1311 return '\n'.join(ret)
1309 1312
1310 def GetFindClasses(self): 1313 def GetFindClasses(self):
1311 """Returns the imlementation of FindClass for all known classes.""" 1314 """Returns the imlementation of FindClass for all known classes."""
1312 if self.init_native: 1315 if self.init_native:
1313 if self.options.native_exports: 1316 if self.options.native_exports:
1314 template = Template("""\ 1317 template = Template("""\
1315 base::subtle::Release_Store(&g_${JAVA_CLASS}_clazz, 1318 base::subtle::Release_Store(&g_${JAVA_CLASS}_clazz,
1316 static_cast<base::subtle::AtomicWord>(env->NewWeakGlobalRef(clazz));""") 1319 static_cast<base::subtle::AtomicWord>(env->NewWeakGlobalRef(clazz));""")
1317 else: 1320 else:
1318 template = Template("""\ 1321 template = Template("""\
1319 g_${JAVA_CLASS}_clazz = static_cast<jclass>(env->NewWeakGlobalRef(clazz));""") 1322 g_${JAVA_CLASS}_clazz = static_cast<jclass>(env->NewWeakGlobalRef(clazz));""")
1320 else: 1323 else:
1321 if self.options.native_exports: 1324 if self.options.native_exports:
1322 return '\n' 1325 return '\n'
1323 template = Template("""\ 1326 template = Template("""\
1324 g_${JAVA_CLASS}_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 1327 g_${JAVA_CLASS}_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1325 base::android::GetClass(env, k${JAVA_CLASS}ClassPath).obj()));""") 1328 base::android::GetClass(env, k${JAVA_CLASS}ClassPath).obj()));""")
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 GenerateJNIHeader(input_file, output_file, options) 1548 GenerateJNIHeader(input_file, output_file, options)
1546 1549
1547 if options.depfile: 1550 if options.depfile:
1548 build_utils.WriteDepfile( 1551 build_utils.WriteDepfile(
1549 options.depfile, 1552 options.depfile,
1550 build_utils.GetPythonDependencies()) 1553 build_utils.GetPythonDependencies())
1551 1554
1552 1555
1553 if __name__ == '__main__': 1556 if __name__ == '__main__':
1554 sys.exit(main(sys.argv)) 1557 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « base/android/jni_generator/golden_sample_for_tests_jni.h ('k') | base/android/jni_generator/testCalledByNatives.golden » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698