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

Unified Diff: android/jni_generator/jni_generator.py

Issue 2045303002: Update to Chromium //base at Chromium commit 3e81715e6d3a4324362635aea46ce1f1a163cca1. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/domokit/base@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « android/jni_generator/golden_sample_for_tests_jni.h ('k') | android/jni_generator/jni_generator_tests.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android/jni_generator/jni_generator.py
diff --git a/android/jni_generator/jni_generator.py b/android/jni_generator/jni_generator.py
index f7c13936f9d9c83e93ab11b96cdc39e50df30223..33f83ecc6f4fc9161cb7b16bb81358ffae54a275 100755
--- a/android/jni_generator/jni_generator.py
+++ b/android/jni_generator/jni_generator.py
@@ -113,8 +113,10 @@ def JavaDataTypeToC(java_type):
java_type_map = {
'void': 'void',
'String': 'jstring',
+ 'Throwable': 'jthrowable',
'java/lang/String': 'jstring',
'java/lang/Class': 'jclass',
+ 'java/lang/Throwable': 'jthrowable',
}
if java_type in java_pod_type_map:
@@ -430,6 +432,8 @@ def ExtractNatives(contents, ptr_type):
def GetStaticCastForReturnType(return_type):
type_map = { 'String' : 'jstring',
'java/lang/String' : 'jstring',
+ 'Throwable': 'jthrowable',
+ 'java/lang/Throwable': 'jthrowable',
'boolean[]': 'jbooleanArray',
'byte[]': 'jbyteArray',
'char[]': 'jcharArray',
@@ -525,7 +529,8 @@ def MangleCalledByNatives(called_by_natives):
# Regex to match the JNI return types that should be included in a
# ScopedJavaLocalRef.
-RE_SCOPED_JNI_RETURN_TYPES = re.compile('jobject|jclass|jstring|.*Array')
+RE_SCOPED_JNI_RETURN_TYPES = re.compile(
+ 'jobject|jclass|jstring|jthrowable|.*Array')
# Regex to match a string like "@CalledByNative public void foo(int bar)".
RE_CALLED_BY_NATIVE = re.compile(
@@ -1067,12 +1072,18 @@ Java_${FULLY_QUALIFIED_CLASS}_${INIT_NATIVE_NAME}(JNIEnv* env, jclass clazz) {
stub_visibility = 'extern "C" __attribute__((visibility("default")))\n'
else:
stub_visibility = 'static '
- return_type = JavaDataTypeToC(native.return_type)
+ return_type = return_declaration = JavaDataTypeToC(native.return_type)
+ post_call = ''
+ if re.match(RE_SCOPED_JNI_RETURN_TYPES, return_type):
+ post_call = '.Release()'
+ return_declaration = 'ScopedJavaLocalRef<' + return_type + '>'
values = {
'RETURN': return_type,
+ 'RETURN_DECLARATION': return_declaration,
'NAME': native.name,
'PARAMS': self.GetParamsInDeclaration(native),
'PARAMS_IN_CALL': params_in_call,
+ 'POST_CALL': post_call,
'STUB_NAME': self.GetStubName(native),
'STUB_VISIBILITY': stub_visibility,
}
@@ -1081,14 +1092,10 @@ Java_${FULLY_QUALIFIED_CLASS}_${INIT_NATIVE_NAME}(JNIEnv* env, jclass clazz) {
optional_error_return = JavaReturnValueToC(native.return_type)
if optional_error_return:
optional_error_return = ', ' + optional_error_return
- post_call = ''
- if re.match(RE_SCOPED_JNI_RETURN_TYPES, return_type):
- post_call = '.Release()'
values.update({
'OPTIONAL_ERROR_RETURN': optional_error_return,
'PARAM0_NAME': native.params[0].name,
'P0_TYPE': native.p0_type,
- 'POST_CALL': post_call,
})
template = Template("""\
${STUB_VISIBILITY}${RETURN} ${STUB_NAME}(JNIEnv* env,
@@ -1100,10 +1107,10 @@ ${STUB_VISIBILITY}${RETURN} ${STUB_NAME}(JNIEnv* env,
""")
else:
template = Template("""
-static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS});
+static ${RETURN_DECLARATION} ${NAME}(JNIEnv* env, ${PARAMS});
${STUB_VISIBILITY}${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS}) {
- return ${NAME}(${PARAMS_IN_CALL});
+ return ${NAME}(${PARAMS_IN_CALL})${POST_CALL};
}
""")
@@ -1151,7 +1158,7 @@ ${STUB_VISIBILITY}${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS}) {
pre_call = ' ' + pre_call
return_declaration = return_type + ' ret ='
if re.match(RE_SCOPED_JNI_RETURN_TYPES, return_type):
- return_type = 'base::android::ScopedJavaLocalRef<' + return_type + '>'
+ return_type = 'ScopedJavaLocalRef<' + return_type + '>'
return_clause = 'return ' + return_type + '(env, ret);'
else:
return_clause = 'return ret;'
« no previous file with comments | « android/jni_generator/golden_sample_for_tests_jni.h ('k') | android/jni_generator/jni_generator_tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698