Chromium Code Reviews| 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 9984c2a2866901f16fcfee565c18a625b94dfea2..d90c3c2a9f1ad3093abf03ea01ef5548cce9829e 100755 |
| --- a/base/android/jni_generator/jni_generator.py |
| +++ b/base/android/jni_generator/jni_generator.py |
| @@ -124,6 +124,14 @@ def JavaDataTypeToC(java_type): |
| return 'jobject' |
| +def JavaDataTypeToCForCalledByNativeParam(java_type): |
| + """Returns a C datatype to be when calling from native.""" |
| + if java_type == 'int': |
| + return 'jni_int_wrapper' |
| + else: |
| + return JavaDataTypeToC(java_type) |
| + |
| + |
| def JavaReturnValueToC(java_type): |
| """Returns a valid C return value for the given java type.""" |
| java_pod_type_map = { |
| @@ -655,7 +663,7 @@ class InlHeaderFileGenerator(object): |
| def GetContent(self): |
| """Returns the content of the JNI binding file.""" |
| template = Template("""\ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
|
bulach
2014/05/02 16:55:56
probably better to leave this as is?
|
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| @@ -672,6 +680,8 @@ class InlHeaderFileGenerator(object): |
| ${INCLUDES} |
| +#include "base/android/jni_int_wrapper.h" |
| + |
| // Step 1: forward declarations. |
| namespace { |
| $CLASS_PATH_DEFINITIONS |
| @@ -932,9 +942,10 @@ Java_${FULLY_QUALIFIED_CLASS}_${INIT_NATIVE_NAME}(JNIEnv* env, jclass clazz) { |
| for param in native.params]) |
| def GetCalledByNativeParamsInDeclaration(self, called_by_native): |
| - return ',\n '.join([JavaDataTypeToC(param.datatype) + ' ' + |
| - param.name |
| - for param in called_by_native.params]) |
| + return ',\n '.join([ |
| + JavaDataTypeToCForCalledByNativeParam(param.datatype) + ' ' + |
| + param.name |
| + for param in called_by_native.params]) |
| def GetForwardDeclaration(self, native): |
| template = Template(""" |
| @@ -978,6 +989,13 @@ static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS_IN_DECLARATION}) { |
| } |
| return template.substitute(values) |
| + def GetArgument(self, param): |
| + return param.name + ".asJint()" if param.datatype == 'int' else param.name |
|
bulach
2014/05/02 16:55:56
how about we make the jni_generator take a debug o
|
| + |
| + def GetArgumentsInCall(self, params): |
| + """Return a string of arguments to call from native into Java""" |
| + return [self.GetArgument(p) for p in params] |
| + |
| def GetCalledByNativeValues(self, called_by_native): |
| """Fills in necessary values for the CalledByNative methods.""" |
| if called_by_native.static or called_by_native.is_constructor: |
| @@ -992,7 +1010,7 @@ static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS_IN_DECLARATION}) { |
| called_by_native) |
| if params_in_declaration: |
| params_in_declaration = ', ' + params_in_declaration |
| - params_in_call = ', '.join(param.name for param in called_by_native.params) |
| + params_in_call = ', '.join(self.GetArgumentsInCall(called_by_native.params)) |
| if params_in_call: |
| params_in_call = ', ' + params_in_call |
| pre_call = '' |