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 6// This file is autogenerated by 7// base/android/jni_generator/jni_generator.py 8// For 9// org/chromium/foo/Foo 10 11#ifndef org_chromium_foo_Foo_JNI 12#define org_chromium_foo_Foo_JNI 13 14#include <jni.h> 15 16#include "base/android/jni_generator/jni_generator_helper.h" 17 18 19// Step 1: Forward declarations. 20 21JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_foo_Foo[]; 22const char kClassPath_org_chromium_foo_Foo[] = "org/chromium/foo/Foo"; 23// Leaking this jclass as we cannot use LazyInstance from some threads. 24JNI_REGISTRATION_EXPORT base::subtle::AtomicWord g_org_chromium_foo_Foo_clazz = 0; 25#ifndef org_chromium_foo_Foo_clazz_defined 26#define org_chromium_foo_Foo_clazz_defined 27inline jclass org_chromium_foo_Foo_clazz(JNIEnv* env) { 28 return base::android::LazyGetClass(env, kClassPath_org_chromium_foo_Foo, 29 &g_org_chromium_foo_Foo_clazz); 30} 31#endif 32 33 34// Step 2: Constants (optional). 35 36 37// Step 3: Method stubs. 38namespace org { 39namespace chromium_foo { 40 41JNI_GENERATOR_EXPORT void Java_org_chromium_foo_Foo_nativeInstanceMethod( 42 JNIEnv* env, 43 jobject jcaller, 44 jlong nativeInstance) { 45 TRACE_EVENT0("jni", "org::chromium_foo::Instance::InstanceMethod"); Instance* native = 46 reinterpret_cast<Instance*>(nativeInstance); 47 CHECK_NATIVE_PTR(env, jcaller, native, "InstanceMethod"); 48 return native->InstanceMethod(env, base::android::JavaParamRef<jobject>(env, jcaller)); 49} 50 51static void JNI_Foo_StaticMethod(JNIEnv* env, const base::android::JavaParamRef<jclass>& jcaller); 52 53JNI_GENERATOR_EXPORT void Java_org_chromium_foo_Foo_nativeStaticMethod( 54 JNIEnv* env, 55 jclass jcaller) { 56 TRACE_EVENT0("jni", "org::chromium_foo::JNI_Foo_StaticMethod"); return JNI_Foo_StaticMethod(env, 57 base::android::JavaParamRef<jclass>(env, jcaller)); 58} 59 60 61static base::subtle::AtomicWord g_org_chromium_foo_Foo_Constructor = 0; 62static base::android::ScopedJavaLocalRef<jobject> Java_Foo_Constructor(JNIEnv* env) { 63 CHECK_CLAZZ(env, org_chromium_foo_Foo_clazz(env), 64 org_chromium_foo_Foo_clazz(env), NULL); 65 jmethodID method_id = base::android::MethodID::LazyGet< 66 base::android::MethodID::TYPE_INSTANCE>( 67 env, org_chromium_foo_Foo_clazz(env), 68 "<init>", 69 "()V", 70 &g_org_chromium_foo_Foo_Constructor); 71 72 TRACE_EVENT0("jni", "org.chromium.foo.Foo.<init>"); jobject ret = 73 env->NewObject(org_chromium_foo_Foo_clazz(env), 74 method_id); 75 jni_generator::CheckException(env); 76 return base::android::ScopedJavaLocalRef<jobject>(env, ret); 77} 78 79static base::subtle::AtomicWord g_org_chromium_foo_Foo_callbackFromNative = 0; 80static void Java_Foo_callbackFromNative(JNIEnv* env, const base::android::JavaRef<jobject>& obj) { 81 CHECK_CLAZZ(env, obj.obj(), 82 org_chromium_foo_Foo_clazz(env)); 83 jmethodID method_id = base::android::MethodID::LazyGet< 84 base::android::MethodID::TYPE_INSTANCE>( 85 env, org_chromium_foo_Foo_clazz(env), 86 "callbackFromNative", 87 "()V", 88 &g_org_chromium_foo_Foo_callbackFromNative); 89 90 TRACE_EVENT0("jni", "org.chromium.foo.Foo.callbackFromNative"); 91 env->CallVoidMethod(obj.obj(), 92 method_id); 93 jni_generator::CheckException(env); 94} 95 96} // namespace chromium_foo 97} // namespace org 98 99#endif // org_chromium_foo_Foo_JNI 100