1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// This file is autogenerated by 6// base/android/jni_generator/jni_generator.py 7// For 8// org/chromium/example/jni_generator/Test 9 10#ifndef org_chromium_example_jni_generator_Test_JNI 11#define org_chromium_example_jni_generator_Test_JNI 12 13#include <jni.h> 14 15#include "base/android/jni_generator/jni_generator_helper.h" 16 17#include "base/android/jni_int_wrapper.h" 18 19// Step 1: forward declarations. 20namespace { 21const char kTestClassPath[] = "org/chromium/example/jni_generator/Test"; 22// Leaking this jclass as we cannot use LazyInstance from some threads. 23jclass g_Test_clazz = NULL; 24#define Test_clazz(env) g_Test_clazz 25jmethodID g_Test_testMethodWithParam = NULL; 26jmethodID g_Test_testStaticMethodWithParam = NULL; 27jmethodID g_Test_testMethodWithNoParam = NULL; 28jmethodID g_Test_testStaticMethodWithNoParam = NULL; 29} // namespace 30 31// Step 2: method stubs. 32static jint Method(JNIEnv* env, jobject jcaller, 33 jlong nativeTest, 34 jint arg1) { 35 Test* native = reinterpret_cast<Test*>(nativeTest); 36 CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0); 37 return native->Method(env, jcaller, arg1); 38} 39 40namespace { 41 42static void testMethodWithParam(JNIEnv* env, jobject obj, JniIntWrapper iParam) 43 { 44 env->CallVoidMethod(obj, 45 g_Test_testMethodWithParam, as_jint(iParam)); 46 47} 48 49static jint testStaticMethodWithParam(JNIEnv* env, JniIntWrapper iParam) { 50 jint ret = env->CallStaticIntMethod(Test_clazz(env), 51 g_Test_testStaticMethodWithParam, as_jint(iParam)); 52 return ret; 53} 54 55static jdouble testMethodWithNoParam(JNIEnv* env) { 56 jdouble ret = env->CallStaticDoubleMethod(Test_clazz(env), 57 g_Test_testMethodWithNoParam); 58 return ret; 59} 60 61static base::android::ScopedJavaLocalRef<jstring> 62 testStaticMethodWithNoParam(JNIEnv* env) { 63 jstring ret = 64 static_cast<jstring>(env->CallStaticObjectMethod(Test_clazz(env), 65 g_Test_testStaticMethodWithNoParam)); 66 return base::android::ScopedJavaLocalRef<jstring>(env, ret); 67} 68} // namespace 69 70// Step 3: RegisterNatives. 71 72static const JNINativeMethod kMethodsTest[] = { 73 { "nativeMethod", 74"(" 75"J" 76"I" 77")" 78"I", reinterpret_cast<void*>(Method) }, 79}; 80 81static bool RegisterNativesImpl(JNIEnv* env, jclass clazz) { 82 g_Test_clazz = static_cast<jclass>(env->NewWeakGlobalRef(clazz)); 83 84 const int kMethodsTestSize = arraysize(kMethodsTest); 85 86 if (env->RegisterNatives(Test_clazz(env), 87 kMethodsTest, 88 kMethodsTestSize) < 0) { 89 jni_generator::HandleRegistrationError( 90 env, Test_clazz(env), __FILE__); 91 return false; 92 } 93 94 g_Test_testMethodWithParam = env->GetMethodID( 95 Test_clazz(env), 96 "testMethodWithParam", 97"(" 98"I" 99")" 100"V"); 101 if (g_Test_testMethodWithParam == NULL) { 102 return false; 103 } 104 105 g_Test_testStaticMethodWithParam = env->GetStaticMethodID( 106 Test_clazz(env), 107 "testStaticMethodWithParam", 108"(" 109"I" 110")" 111"I"); 112 if (g_Test_testStaticMethodWithParam == NULL) { 113 return false; 114 } 115 116 g_Test_testMethodWithNoParam = env->GetStaticMethodID( 117 Test_clazz(env), 118 "testMethodWithNoParam", 119"(" 120")" 121"D"); 122 if (g_Test_testMethodWithNoParam == NULL) { 123 return false; 124 } 125 126 g_Test_testStaticMethodWithNoParam = env->GetStaticMethodID( 127 Test_clazz(env), 128 "testStaticMethodWithNoParam", 129"(" 130")" 131"Ljava/lang/String;"); 132 if (g_Test_testStaticMethodWithNoParam == NULL) { 133 return false; 134 } 135 136 return true; 137} 138 139extern "C" JNIEXPORT bool JNICALL 140Java_org_chromium_example_jni_generator_Test_nativeInitNativeClass(JNIEnv* env, 141 jclass clazz) { 142 return RegisterNativesImpl(env, clazz); 143} 144 145#endif // org_chromium_example_jni_generator_Test_JNI 146