• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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