Home | History | Annotate | Download | only in jni_generator
      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 
     21 JNI_REGISTRATION_EXPORT extern const char kClassPath_org_chromium_foo_Foo[];
     22 const char kClassPath_org_chromium_foo_Foo[] = "org/chromium/foo/Foo";
     23 // Leaking this jclass as we cannot use LazyInstance from some threads.
     24 JNI_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
     27 inline 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.
     38 static void JNI_Foo_DoSomething(JNIEnv* env, const base::android::JavaParamRef<jclass>& jcaller,
     39     const base::android::JavaParamRef<jobject>& callback);
     40 
     41 JNI_GENERATOR_EXPORT void Java_org_chromium_foo_Foo_nativeDoSomething(
     42     JNIEnv* env,
     43     jclass jcaller,
     44     jobject callback) {
     45   return JNI_Foo_DoSomething(env, base::android::JavaParamRef<jclass>(env, jcaller),
     46       base::android::JavaParamRef<jobject>(env, callback));
     47 }
     48 
     49 
     50 static base::subtle::AtomicWord g_org_chromium_foo_Foo_calledByNative = 0;
     51 static void Java_Foo_calledByNative(JNIEnv* env, const base::android::JavaRef<jobject>& callback) {
     52   CHECK_CLAZZ(env, org_chromium_foo_Foo_clazz(env),
     53       org_chromium_foo_Foo_clazz(env));
     54   jmethodID method_id = base::android::MethodID::LazyGet<
     55       base::android::MethodID::TYPE_STATIC>(
     56           env, org_chromium_foo_Foo_clazz(env),
     57           "calledByNative",
     58           "(Lorg/chromium/foo/Bar$Callback;)V",
     59           &g_org_chromium_foo_Foo_calledByNative);
     60 
     61      env->CallStaticVoidMethod(org_chromium_foo_Foo_clazz(env),
     62           method_id, callback.obj());
     63   jni_generator::CheckException(env);
     64 }
     65 
     66 #endif  // org_chromium_foo_Foo_JNI
     67