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

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

Issue 2219923002: JNI: allow either JavaRef or bare objects in Java calls. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unreachable line Created 4 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 1946d48d39d4e0870a63471cc16a0bddf3c9c64d..4e700feab5e12dcd9983c80554a7c06d0ac53907 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -153,7 +153,11 @@ def JavaDataTypeToCForCalledByNativeParam(java_type):
if java_type == 'int':
return 'JniIntWrapper'
else:
- return JavaDataTypeToC(java_type)
+ c_type = JavaDataTypeToC(java_type)
+ if re.match(RE_SCOPED_JNI_TYPES, c_type):
+ return 'const base::android::JavaRefOrBare<' + c_type + '>&'
+ else:
+ return c_type
def JavaReturnValueToC(java_type):
@@ -1032,8 +1036,12 @@ ${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS_IN_STUB}) {
return template.substitute(values)
def GetArgument(self, param):
- return ('as_jint(' + param.name + ')'
- if param.datatype == 'int' else param.name)
+ if param.datatype == 'int':
+ return 'as_jint(' + param.name + ')'
+ elif re.match(RE_SCOPED_JNI_TYPES, JavaDataTypeToC(param.datatype)):
+ return param.name + '.obj()'
+ else:
+ return param.name
def GetArgumentsInCall(self, params):
"""Return a string of arguments to call from native into Java"""
@@ -1046,8 +1054,9 @@ ${RETURN} ${STUB_NAME}(JNIEnv* env, ${PARAMS_IN_STUB}) {
first_param_in_declaration = ''
first_param_in_call = ('%s_clazz(env)' % java_class)
else:
- first_param_in_declaration = ', jobject obj'
- first_param_in_call = 'obj'
+ first_param_in_declaration = (
+ ', const base::android::JavaRefOrBare<jobject>& obj')
+ first_param_in_call = 'obj.obj()'
params_in_declaration = self.GetCalledByNativeParamsInDeclaration(
called_by_native)
if params_in_declaration:
« 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