| Index: base/android/jni_generator/golden_sample_for_tests_jni.h
|
| diff --git a/base/android/jni_generator/golden_sample_for_tests_jni.h b/base/android/jni_generator/golden_sample_for_tests_jni.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..10bc63358bb1f1d8fddca6d1c7ba74aa64e3e7e6
|
| --- /dev/null
|
| +++ b/base/android/jni_generator/golden_sample_for_tests_jni.h
|
| @@ -0,0 +1,297 @@
|
| +// 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_tests.py
|
| +// For
|
| +// org/chromium/example/jni_generator/SampleForTests
|
| +
|
| +#ifndef org_chromium_example_jni_generator_SampleForTests_JNI
|
| +#define org_chromium_example_jni_generator_SampleForTests_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* const kInnerClassClassPath =
|
| + "org/chromium/example/jni_generator/SampleForTests$InnerClass";
|
| +const char* const kSampleForTestsClassPath =
|
| + "org/chromium/example/jni_generator/SampleForTests";
|
| +// Leaking this JavaRef as we cannot use LazyInstance from some threads.
|
| +base::android::ScopedJavaGlobalRef<jclass>&
|
| + g_InnerClass_clazz =
|
| + *(new base::android::ScopedJavaGlobalRef<jclass>());
|
| +// Leaking this JavaRef as we cannot use LazyInstance from some threads.
|
| +base::android::ScopedJavaGlobalRef<jclass>&
|
| + g_SampleForTests_clazz =
|
| + *(new base::android::ScopedJavaGlobalRef<jclass>());
|
| +} // namespace
|
| +
|
| +static jint Init(JNIEnv* env, jobject obj);
|
| +
|
| +
|
| +static jdouble GetDoubleFunction(JNIEnv* env, jobject obj);
|
| +
|
| +
|
| +static jfloat GetFloatFunction(JNIEnv* env, jclass clazz);
|
| +
|
| +
|
| +static void SetNonPODDatatype(JNIEnv* env, jobject obj,
|
| + jobject rect);
|
| +
|
| +
|
| +static jobject GetNonPODDatatype(JNIEnv* env, jobject obj);
|
| +
|
| +
|
| +static jint InnerFunction(JNIEnv* env, jclass clazz);
|
| +
|
| +
|
| +// Step 2: method stubs.
|
| +static void Destroy(JNIEnv* env, jobject obj,
|
| + jint nativeCPPClass) {
|
| + DCHECK(nativeCPPClass) << "Destroy";
|
| + CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
|
| + return native->Destroy(env, obj);
|
| +}
|
| +
|
| +static jint Method(JNIEnv* env, jobject obj,
|
| + jint nativeCPPClass) {
|
| + DCHECK(nativeCPPClass) << "Method";
|
| + CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
|
| + return native->Method(env, obj);
|
| +}
|
| +
|
| +static jdouble MethodOtherP0(JNIEnv* env, jobject obj,
|
| + jint nativeCPPClass) {
|
| + DCHECK(nativeCPPClass) << "MethodOtherP0";
|
| + cpp_namespace::CPPClass* native =
|
| + reinterpret_cast<cpp_namespace::CPPClass*>(nativeCPPClass);
|
| + return native->MethodOtherP0(env, obj);
|
| +}
|
| +
|
| +static jstring InnerMethod(JNIEnv* env, jobject obj,
|
| + jint nativeCPPClass) {
|
| + DCHECK(nativeCPPClass) << "InnerMethod";
|
| + CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
|
| + return native->InnerMethod(env, obj).Release();
|
| +}
|
| +
|
| +
|
| +static jmethodID g_SampleForTests_javaMethod = 0;
|
| +static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj, jint foo,
|
| + jint bar) {
|
| + /* Must call RegisterNativesImpl() */
|
| + DCHECK(!g_SampleForTests_clazz.is_null());
|
| + DCHECK(g_SampleForTests_javaMethod);
|
| + jint ret =
|
| + env->CallIntMethod(obj,
|
| + g_SampleForTests_javaMethod, foo, bar);
|
| + base::android::CheckException(env);
|
| + return ret;
|
| +}
|
| +
|
| +static jmethodID g_SampleForTests_staticJavaMethod = 0;
|
| +static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
|
| + /* Must call RegisterNativesImpl() */
|
| + DCHECK(!g_SampleForTests_clazz.is_null());
|
| + DCHECK(g_SampleForTests_staticJavaMethod);
|
| + jboolean ret =
|
| + env->CallStaticBooleanMethod(g_SampleForTests_clazz.obj(),
|
| + g_SampleForTests_staticJavaMethod);
|
| + base::android::CheckException(env);
|
| + return ret;
|
| +}
|
| +
|
| +static jmethodID g_SampleForTests_packagePrivateJavaMethod = 0;
|
| +static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject
|
| + obj) {
|
| + /* Must call RegisterNativesImpl() */
|
| + DCHECK(!g_SampleForTests_clazz.is_null());
|
| + DCHECK(g_SampleForTests_packagePrivateJavaMethod);
|
| +
|
| + env->CallVoidMethod(obj,
|
| + g_SampleForTests_packagePrivateJavaMethod);
|
| + base::android::CheckException(env);
|
| +
|
| +}
|
| +
|
| +static jmethodID g_SampleForTests_methodThatThrowsException = 0;
|
| +static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject
|
| + obj) {
|
| + /* Must call RegisterNativesImpl() */
|
| + DCHECK(!g_SampleForTests_clazz.is_null());
|
| + DCHECK(g_SampleForTests_methodThatThrowsException);
|
| +
|
| + env->CallVoidMethod(obj,
|
| + g_SampleForTests_methodThatThrowsException);
|
| +
|
| +
|
| +}
|
| +
|
| +static jmethodID g_InnerClass_JavaInnerMethod = 0;
|
| +static jfloat Java_InnerClass_JavaInnerMethod(JNIEnv* env, jobject obj) {
|
| + /* Must call RegisterNativesImpl() */
|
| + DCHECK(!g_InnerClass_clazz.is_null());
|
| + DCHECK(g_InnerClass_JavaInnerMethod);
|
| + jfloat ret =
|
| + env->CallFloatMethod(obj,
|
| + g_InnerClass_JavaInnerMethod);
|
| + base::android::CheckException(env);
|
| + return ret;
|
| +}
|
| +
|
| +static jmethodID g_InnerClass_javaInnerFunction = 0;
|
| +static void Java_InnerClass_javaInnerFunction(JNIEnv* env) {
|
| + /* Must call RegisterNativesImpl() */
|
| + DCHECK(!g_InnerClass_clazz.is_null());
|
| + DCHECK(g_InnerClass_javaInnerFunction);
|
| +
|
| + env->CallStaticVoidMethod(g_InnerClass_clazz.obj(),
|
| + g_InnerClass_javaInnerFunction);
|
| + base::android::CheckException(env);
|
| +
|
| +}
|
| +
|
| +// Step 3: GetMethodIDs and RegisterNatives.
|
| +
|
| +
|
| +static void GetMethodIDsImpl(JNIEnv* env) {
|
| + g_InnerClass_clazz.Reset(
|
| + base::android::GetClass(env, kInnerClassClassPath));
|
| + g_SampleForTests_clazz.Reset(
|
| + base::android::GetClass(env, kSampleForTestsClassPath));
|
| + g_SampleForTests_javaMethod = base::android::GetMethodID(
|
| + env, g_SampleForTests_clazz,
|
| + "javaMethod",
|
| +
|
| +"("
|
| +"I"
|
| +"I"
|
| +")"
|
| +"I");
|
| +
|
| + g_SampleForTests_staticJavaMethod = base::android::GetStaticMethodID(
|
| + env, g_SampleForTests_clazz,
|
| + "staticJavaMethod",
|
| +
|
| +"("
|
| +")"
|
| +"Z");
|
| +
|
| + g_SampleForTests_packagePrivateJavaMethod = base::android::GetMethodID(
|
| + env, g_SampleForTests_clazz,
|
| + "packagePrivateJavaMethod",
|
| +
|
| +"("
|
| +")"
|
| +"V");
|
| +
|
| + g_SampleForTests_methodThatThrowsException = base::android::GetMethodID(
|
| + env, g_SampleForTests_clazz,
|
| + "methodThatThrowsException",
|
| +
|
| +"("
|
| +")"
|
| +"V");
|
| +
|
| + g_InnerClass_JavaInnerMethod = base::android::GetMethodID(
|
| + env, g_InnerClass_clazz,
|
| + "JavaInnerMethod",
|
| +
|
| +"("
|
| +")"
|
| +"F");
|
| +
|
| + g_InnerClass_javaInnerFunction = base::android::GetStaticMethodID(
|
| + env, g_InnerClass_clazz,
|
| + "javaInnerFunction",
|
| +
|
| +"("
|
| +")"
|
| +"V");
|
| +
|
| +}
|
| +
|
| +static bool RegisterNativesImpl(JNIEnv* env) {
|
| + GetMethodIDsImpl(env);
|
| +
|
| + static const JNINativeMethod kMethodsInnerClass[] = {
|
| + { "nativeInnerFunction",
|
| +"("
|
| +")"
|
| +"I", reinterpret_cast<void*>(InnerFunction) },
|
| + { "nativeInnerMethod",
|
| +"("
|
| +"I"
|
| +")"
|
| +"Ljava/lang/String;", reinterpret_cast<void*>(InnerMethod) },
|
| + };
|
| + const int kMethodsInnerClassSize = arraysize(kMethodsInnerClass);
|
| +
|
| + if (env->RegisterNatives(g_InnerClass_clazz.obj(),
|
| + kMethodsInnerClass,
|
| + kMethodsInnerClassSize) < 0) {
|
| + LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
|
| + return false;
|
| + }
|
| +
|
| + static const JNINativeMethod kMethodsSampleForTests[] = {
|
| + { "nativeInit",
|
| +"("
|
| +")"
|
| +"I", reinterpret_cast<void*>(Init) },
|
| + { "nativeDestroy",
|
| +"("
|
| +"I"
|
| +")"
|
| +"V", reinterpret_cast<void*>(Destroy) },
|
| + { "nativeGetDoubleFunction",
|
| +"("
|
| +")"
|
| +"D", reinterpret_cast<void*>(GetDoubleFunction) },
|
| + { "nativeGetFloatFunction",
|
| +"("
|
| +")"
|
| +"F", reinterpret_cast<void*>(GetFloatFunction) },
|
| + { "nativeSetNonPODDatatype",
|
| +"("
|
| +"Landroid/graphics/Rect;"
|
| +")"
|
| +"V", reinterpret_cast<void*>(SetNonPODDatatype) },
|
| + { "nativeGetNonPODDatatype",
|
| +"("
|
| +")"
|
| +"Ljava/lang/Object;", reinterpret_cast<void*>(GetNonPODDatatype) },
|
| + { "nativeMethod",
|
| +"("
|
| +"I"
|
| +")"
|
| +"I", reinterpret_cast<void*>(Method) },
|
| + { "nativeMethodOtherP0",
|
| +"("
|
| +"I"
|
| +")"
|
| +"D", reinterpret_cast<void*>(MethodOtherP0) },
|
| + };
|
| + const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests);
|
| +
|
| + if (env->RegisterNatives(g_SampleForTests_clazz.obj(),
|
| + kMethodsSampleForTests,
|
| + kMethodsSampleForTestsSize) < 0) {
|
| + LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
|
| + return false;
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +#endif // org_chromium_example_jni_generator_SampleForTests_JNI
|
|
|