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

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

Issue 1288183004: jni_generator: Make all object-returning natives return ScopedJavaLocalRef. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add some newlines for readability Created 5 years, 4 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 f7c13936f9d9c83e93ab11b96cdc39e50df30223..6017441cb6af71053a45a21838a76537cc733c13 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -1067,12 +1067,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 +1087,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 +1102,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 +1153,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;'

Powered by Google App Engine
This is Rietveld 408576698