diff options
author | bulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-09 22:00:22 +0000 |
---|---|---|
committer | bulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-09 22:00:22 +0000 |
commit | 52750882f4fccea37fb91131b15d62344ca2bb93 (patch) | |
tree | 52ccc5024bb0cf1c2296e129f775d48a03520b02 /base | |
parent | 89e09aeb12b3665e547f286ccc267ed35732e627 (diff) | |
download | chromium_src-52750882f4fccea37fb91131b15d62344ca2bb93.zip chromium_src-52750882f4fccea37fb91131b15d62344ca2bb93.tar.gz chromium_src-52750882f4fccea37fb91131b15d62344ca2bb93.tar.bz2 |
Android: moves jni_generator samples to use long for JNI.
BUG=317523
Review URL: https://codereview.chromium.org/132013003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243988 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
8 files changed, 40 insertions, 39 deletions
diff --git a/base/android/jni_generator/golden_sample_for_tests_jni.h b/base/android/jni_generator/golden_sample_for_tests_jni.h index 27277b2..b90bb9f 100644 --- a/base/android/jni_generator/golden_sample_for_tests_jni.h +++ b/base/android/jni_generator/golden_sample_for_tests_jni.h @@ -34,7 +34,7 @@ jclass g_InnerStructB_clazz = NULL; namespace base { namespace android { -static jint Init(JNIEnv* env, jobject jcaller, +static jlong Init(JNIEnv* env, jobject jcaller, jstring param); static jdouble GetDoubleFunction(JNIEnv* env, jobject jcaller); @@ -48,21 +48,21 @@ static jobject GetNonPODDatatype(JNIEnv* env, jobject jcaller); // Step 2: method stubs. static void Destroy(JNIEnv* env, jobject jcaller, - jint nativeCPPClass) { + jlong nativeCPPClass) { CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); CHECK_NATIVE_PTR(env, jcaller, native, "Destroy"); return native->Destroy(env, jcaller); } static jint Method(JNIEnv* env, jobject jcaller, - jint nativeCPPClass) { + jlong nativeCPPClass) { CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0); return native->Method(env, jcaller); } static jdouble MethodOtherP0(JNIEnv* env, jobject jcaller, - jint nativePtr) { + jlong nativePtr) { CPPClass::InnerClass* native = reinterpret_cast<CPPClass::InnerClass*>(nativePtr); CHECK_NATIVE_PTR(env, jcaller, native, "MethodOtherP0", 0); @@ -70,7 +70,7 @@ static jdouble MethodOtherP0(JNIEnv* env, jobject jcaller, } static void AddStructB(JNIEnv* env, jobject jcaller, - jint nativeCPPClass, + jlong nativeCPPClass, jobject b) { CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); CHECK_NATIVE_PTR(env, jcaller, native, "AddStructB"); @@ -78,14 +78,14 @@ static void AddStructB(JNIEnv* env, jobject jcaller, } static void IterateAndDoSomethingWithStructB(JNIEnv* env, jobject jcaller, - jint nativeCPPClass) { + jlong nativeCPPClass) { CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); CHECK_NATIVE_PTR(env, jcaller, native, "IterateAndDoSomethingWithStructB"); return native->IterateAndDoSomethingWithStructB(env, jcaller); } static jstring ReturnAString(JNIEnv* env, jobject jcaller, - jint nativeCPPClass) { + jlong nativeCPPClass) { CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); CHECK_NATIVE_PTR(env, jcaller, native, "ReturnAString", NULL); return native->ReturnAString(env, jcaller).Release(); @@ -315,10 +315,10 @@ static const JNINativeMethod kMethodsSampleForTests[] = { "(" "Ljava/lang/String;" ")" -"I", reinterpret_cast<void*>(Init) }, +"J", reinterpret_cast<void*>(Init) }, { "nativeDestroy", "(" -"I" +"J" ")" "V", reinterpret_cast<void*>(Destroy) }, { "nativeGetDoubleFunction", @@ -340,28 +340,28 @@ static const JNINativeMethod kMethodsSampleForTests[] = { "Ljava/lang/Object;", reinterpret_cast<void*>(GetNonPODDatatype) }, { "nativeMethod", "(" -"I" +"J" ")" "I", reinterpret_cast<void*>(Method) }, { "nativeMethodOtherP0", "(" -"I" +"J" ")" "D", reinterpret_cast<void*>(MethodOtherP0) }, { "nativeAddStructB", "(" -"I" +"J" "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructB;" ")" "V", reinterpret_cast<void*>(AddStructB) }, { "nativeIterateAndDoSomethingWithStructB", "(" -"I" +"J" ")" "V", reinterpret_cast<void*>(IterateAndDoSomethingWithStructB) }, { "nativeReturnAString", "(" -"I" +"J" ")" "Ljava/lang/String;", reinterpret_cast<void*>(ReturnAString) }, }; diff --git a/base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForTests.java b/base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForTests.java index 3886355..885a6c3 100644 --- a/base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForTests.java +++ b/base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForTests.java @@ -39,7 +39,7 @@ import java.util.List; // functions across boundaries, call only one (and then, internally in the other side, // call as many little functions as required). // -// - If a Java object "owns" a native object, stash the pointer in a "int mNativeClassName". +// - If a Java object "owns" a native object, stash the pointer in a "long mNativeClassName". // Note that it needs to have a "destruction path", i.e., it must eventually call a method // to delete the native object (for example, the java object has a "close()" method that // in turn deletes the native object). Avoid relying on finalizers: those run in a different @@ -78,7 +78,7 @@ import java.util.List; class SampleForTests { // Classes can store their C++ pointer counter part as an int that is normally initialized by // calling out a nativeInit() function. - int mNativeCPPObject; + long mNativeCPPObject; // You can define methods and attributes on the java class just like any other. // Methods without the @CalledByNative annotation won't be exposed to JNI. @@ -168,14 +168,14 @@ class SampleForTests { // The caller of this method should store it, and supply it as a the nativeCPPClass param to // subsequent native method calls (see the methods below that take an "int native..." as first // param). - private native int nativeInit(String param); + private native long nativeInit(String param); // This defines a function binding to the associated C++ class member function. The name is // derived from |nativeDestroy| and |nativeCPPClass| to arrive at CPPClass::Destroy() (i.e. native // prefixes stripped). // The |nativeCPPClass| is automatically cast to type CPPClass* in order to obtain the object on // which to invoke the member function. - private native void nativeDestroy(int nativeCPPClass); + private native void nativeDestroy(long nativeCPPClass); // This declares a C++ function which the application code must implement: // static jdouble GetDoubleFunction(JNIEnv* env, jobject obj); @@ -200,12 +200,12 @@ class SampleForTests { // Similar to nativeDestroy above, this will cast nativeCPPClass into pointer of CPPClass type and // call its Method member function. - private native int nativeMethod(int nativeCPPClass); + private native int nativeMethod(long nativeCPPClass); // Similar to nativeMethod above, but here the C++ fully qualified class name is taken from the // annotation rather than parameter name, which can thus be chosen freely. @NativeClassQualifiedName("CPPClass::InnerClass") - private native double nativeMethodOtherP0(int nativePtr); + private native double nativeMethodOtherP0(long nativePtr); // This "struct" will be created by the native side using |createInnerStructA|, // and used by the java-side somehow. @@ -281,7 +281,7 @@ class SampleForTests { nativeIterateAndDoSomethingWithStructB(mNativeCPPObject); } - native void nativeAddStructB(int nativeCPPClass, InnerStructB b); - native void nativeIterateAndDoSomethingWithStructB(int nativeCPPClass); - native String nativeReturnAString(int nativeCPPClass); + native void nativeAddStructB(long nativeCPPClass, InnerStructB b); + native void nativeIterateAndDoSomethingWithStructB(long nativeCPPClass); + native String nativeReturnAString(long nativeCPPClass); } diff --git a/base/android/jni_generator/jni_generator.gyp b/base/android/jni_generator/jni_generator.gyp index 2ea36b0..e93b446 100644 --- a/base/android/jni_generator/jni_generator.gyp +++ b/base/android/jni_generator/jni_generator.gyp @@ -33,6 +33,7 @@ ], 'variables': { 'jni_gen_package': 'example', + 'jni_generator_ptr_type': 'long', }, 'includes': [ '../../../build/jni_generator.gypi' ], }, diff --git a/base/android/jni_generator/jni_generator_tests.py b/base/android/jni_generator/jni_generator_tests.py index 6f1484c..3b97105 100755 --- a/base/android/jni_generator/jni_generator_tests.py +++ b/base/android/jni_generator/jni_generator_tests.py @@ -37,7 +37,7 @@ class TestOptions(object): self.script_name = SCRIPT_NAME self.includes = INCLUDES self.pure_native_methods = False - self.ptr_type = 'int' + self.ptr_type = 'long' self.jni_init_native_name = None self.eager_called_by_natives = False @@ -949,10 +949,10 @@ class Foo { package org.chromium.example.jni_generator; /** The pointer to the native Test. */ - int nativeTest; + long nativeTest; class Test { - private static native int nativeMethod(int nativeTest, int arg1); + private static native long nativeMethod(long nativeTest, int arg1); } """ options = TestOptions() @@ -966,11 +966,11 @@ class Foo { package org.chromium.example.jni_generator; /** The pointer to the native Test. */ - int nativeTest; + long nativeTest; class Test { private static native boolean initNativeClass(); - private static native int nativeMethod(int nativeTest, int arg1); + private static native int nativeMethod(long nativeTest, int arg1); } """ options = TestOptions() @@ -984,11 +984,11 @@ class Foo { package org.chromium.example.jni_generator; /** The pointer to the native Test. */ - int nativeTest; + long nativeTest; class Test { private static native boolean initNativeClass(); - private static native int nativeMethod(int nativeTest, int arg1); + private static native int nativeMethod(long nativeTest, int arg1); @CalledByNative private void testMethodWithParam(int iParam); @CalledByNative diff --git a/base/android/jni_generator/sample_for_tests.cc b/base/android/jni_generator/sample_for_tests.cc index 24190c6..6707742 100644 --- a/base/android/jni_generator/sample_for_tests.cc +++ b/base/android/jni_generator/sample_for_tests.cc @@ -59,7 +59,7 @@ base::android::ScopedJavaLocalRef<jstring> CPPClass::ReturnAString( } // Static free functions declared and called directly from java. -static jint Init(JNIEnv* env, jobject obj, jstring param) { +static jlong Init(JNIEnv* env, jobject obj, jstring param) { return 0; } diff --git a/base/android/jni_generator/testEagerCalledByNativesOption.golden b/base/android/jni_generator/testEagerCalledByNativesOption.golden index 7ed0b6d..bef4c5a 100644 --- a/base/android/jni_generator/testEagerCalledByNativesOption.golden +++ b/base/android/jni_generator/testEagerCalledByNativesOption.golden @@ -27,7 +27,7 @@ jmethodID g_Test_testStaticMethodWithNoParam = NULL; // Step 2: method stubs. static jint Method(JNIEnv* env, jobject jcaller, - jint nativeTest, + jlong nativeTest, jint arg1) { Test* native = reinterpret_cast<Test*>(nativeTest); CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0); @@ -67,7 +67,7 @@ static base::android::ScopedJavaLocalRef<jstring> static const JNINativeMethod kMethodsTest[] = { { "nativeMethod", "(" -"I" +"J" "I" ")" "I", reinterpret_cast<void*>(Method) }, diff --git a/base/android/jni_generator/testJNIInitNativeNameOption.golden b/base/android/jni_generator/testJNIInitNativeNameOption.golden index 4ede46a..434295a 100644 --- a/base/android/jni_generator/testJNIInitNativeNameOption.golden +++ b/base/android/jni_generator/testJNIInitNativeNameOption.golden @@ -24,7 +24,7 @@ jclass g_Test_clazz = NULL; // Step 2: method stubs. static jint Method(JNIEnv* env, jobject jcaller, - jint nativeTest, + jlong nativeTest, jint arg1) { Test* native = reinterpret_cast<Test*>(nativeTest); CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0); @@ -36,7 +36,7 @@ static jint Method(JNIEnv* env, jobject jcaller, static const JNINativeMethod kMethodsTest[] = { { "nativeMethod", "(" -"I" +"J" "I" ")" "I", reinterpret_cast<void*>(Method) }, diff --git a/base/android/jni_generator/testPureNativeMethodsOption.golden b/base/android/jni_generator/testPureNativeMethodsOption.golden index e876ab1..e7f8d53 100644 --- a/base/android/jni_generator/testPureNativeMethodsOption.golden +++ b/base/android/jni_generator/testPureNativeMethodsOption.golden @@ -23,8 +23,8 @@ jclass g_Test_clazz = NULL; } // namespace // Step 2: method stubs. -static jint Method(JNIEnv* env, jobject jcaller, - jint nativeTest, +static jlong Method(JNIEnv* env, jobject jcaller, + jlong nativeTest, jint arg1) { Test* native = reinterpret_cast<Test*>(nativeTest); CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0); @@ -36,10 +36,10 @@ static jint Method(JNIEnv* env, jobject jcaller, static const JNINativeMethod kMethodsTest[] = { { "nativeMethod", "(" -"I" +"J" "I" ")" -"I", reinterpret_cast<void*>(Method) }, +"J", reinterpret_cast<void*>(Method) }, }; static bool RegisterNativesImpl(JNIEnv* env) { |