Chromium Code Reviews| Index: base/android/jni_generator/jni_generator_tests.py |
| diff --git a/base/android/jni_generator/jni_generator_tests.py b/base/android/jni_generator/jni_generator_tests.py |
| index bf78d9c8d5a303d6b17a7ac6e7de881fa97f3e2e..e2abe030f30cd55f6b0488c0bd88db8bb553e4dd 100755 |
| --- a/base/android/jni_generator/jni_generator_tests.py |
| +++ b/base/android/jni_generator/jni_generator_tests.py |
| @@ -28,6 +28,7 @@ class TestOptions(object): |
| def __init__(self): |
| self.namespace = None |
| self.script_name = SCRIPT_NAME |
| + self.ptr_type = 'int' |
| class TestGenerator(unittest.TestCase): |
| @@ -95,7 +96,7 @@ class TestGenerator(unittest.TestCase): |
| double alpha, double beta, double gamma); |
| """ |
| jni_generator.JniParams.ExtractImportsAndInnerClasses(test_data) |
| - natives = jni_generator.ExtractNatives(test_data) |
| + natives = jni_generator.ExtractNatives(test_data, TestOptions()) |
| golden_natives = [ |
| NativeMethod(return_type='int', static=False, |
| name='Init', |
| @@ -445,7 +446,7 @@ static bool RegisterNativesImpl(JNIEnv* env) { |
| private native int nativeInit(); |
| } |
| """ |
| - natives = jni_generator.ExtractNatives(test_data) |
| + natives = jni_generator.ExtractNatives(test_data, TestOptions()) |
| golden_natives = [ |
| NativeMethod(return_type='int', static=False, |
| name='Init', params=[], |
| @@ -528,7 +529,7 @@ static bool RegisterNativesImpl(JNIEnv* env) { |
| private native int nativeInit(); |
| } |
| """ |
| - natives = jni_generator.ExtractNatives(test_data) |
| + natives = jni_generator.ExtractNatives(test_data, TestOptions()) |
| golden_natives = [ |
| NativeMethod(return_type='int', static=False, |
| name='Init', params=[], |
| @@ -634,7 +635,7 @@ static bool RegisterNativesImpl(JNIEnv* env) { |
| } |
| } |
| """ |
| - natives = jni_generator.ExtractNatives(test_data) |
| + natives = jni_generator.ExtractNatives(test_data, TestOptions()) |
| golden_natives = [ |
| NativeMethod(return_type='int', static=False, |
| name='Init', params=[], |
| @@ -2172,6 +2173,93 @@ class Foo { |
| self.assertTextEquals( |
| '[Ljava/nio/ByteBuffer;', JniParams.JavaToJni('java/nio/ByteBuffer[]')) |
| + def testNativesLong(self): |
| + test_options = TestOptions() |
| + test_options.ptr_type = 'long' |
| + test_data = """" |
| + private native void nativeDestroy(long nativeChromeBrowserProvider); |
| + """ |
| + jni_generator.JniParams.ExtractImportsAndInnerClasses(test_data) |
| + natives = jni_generator.ExtractNatives(test_data, test_options) |
| + golden_natives = [ |
| + NativeMethod(return_type='void', static=False, name='Destroy', |
| + params=[Param(datatype='long', |
| + name='nativeChromeBrowserProvider')], |
| + java_class_name=None, |
| + type='method', |
| + p0_type='ChromeBrowserProvider', |
| + ptr_type=test_options.ptr_type), |
| + ] |
| + self.assertListEquals(golden_natives, natives) |
| + h = jni_generator.InlHeaderFileGenerator('', 'org/chromium/TestJni', |
| + natives, [], test_options) |
| + golden_content = """\ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// This file is autogenerated by |
| +// base/android/jni_generator/jni_generator.py |
| +// For |
| +// org/chromium/TestJni |
| + |
| +#ifndef org_chromium_TestJni_JNI |
| +#define org_chromium_TestJni_JNI |
| + |
| +#include <jni.h> |
| + |
| +#include "base/android/jni_android.h" |
| +#include "base/android/scoped_java_ref.h" |
| +#include "base/basictypes.h" |
| +#include "base/logging.h" |
| + |
| +using base::android::ScopedJavaLocalRef; |
| + |
| +// Step 1: forward declarations. |
| +namespace { |
| +const char kTestJniClassPath[] = "org/chromium/TestJni"; |
| +// Leaking this jclass as we cannot use LazyInstance from some threads. |
| +jclass g_TestJni_clazz = NULL; |
| +} // namespace |
| + |
| +// Step 2: method stubs. |
| +static void Destroy(JNIEnv* env, jobject obj, |
| + jlong nativeChromeBrowserProvider) { |
| + DCHECK(nativeChromeBrowserProvider) << "Destroy"; |
| + ChromeBrowserProvider* native = |
| + reinterpret_cast<ChromeBrowserProvider*>(nativeChromeBrowserProvider); |
| + return native->Destroy(env, obj); |
| +} |
| + |
| +// Step 3: RegisterNatives. |
| + |
| +static bool RegisterNativesImpl(JNIEnv* env) { |
| + |
| + g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
| + base::android::GetClass(env, kTestJniClassPath).obj())); |
| + static const JNINativeMethod kMethodsTestJni[] = { |
|
Andrew Hayden (chromium.org)
2013/10/29 11:49:21
It looks like this is the only part that we care a
bulach
2013/10/29 18:22:20
there are two aspects:
1. first, I agree that this
|
| + { "nativeDestroy", |
| +"(" |
| +"J" |
| +")" |
| +"V", reinterpret_cast<void*>(Destroy) }, |
| + }; |
| + const int kMethodsTestJniSize = arraysize(kMethodsTestJni); |
| + |
| + if (env->RegisterNatives(g_TestJni_clazz, |
| + kMethodsTestJni, |
| + kMethodsTestJniSize) < 0) { |
| + LOG(ERROR) << "RegisterNatives failed in " << __FILE__; |
| + return false; |
| + } |
| + |
| + return true; |
| +} |
| + |
| +#endif // org_chromium_TestJni_JNI |
| +""" |
| + self.assertTextEquals(golden_content, h.GetContent()) |
| + |
| if __name__ == '__main__': |
| unittest.main() |