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>& callback1,
     40     const base::android::JavaParamRef<jobject>& callback2);
     41 
     42 JNI_GENERATOR_EXPORT void Java_org_chromium_foo_Foo_nativeDoSomething(
     43     JNIEnv* env,
     44     jclass jcaller,
     45     jobject callback1,
     46     jobject callback2) {
     47   return JNI_Foo_DoSomething(env, base::android::JavaParamRef<jclass>(env, jcaller),
     48       base::android::JavaParamRef<jobject>(env, callback1),
     49       base::android::JavaParamRef<jobject>(env, callback2));
     50 }
     51 
     52 
     53 static base::subtle::AtomicWord g_org_chromium_foo_Foo_calledByNative = 0;
     54 static void Java_Foo_calledByNative(JNIEnv* env, const base::android::JavaRef<jobject>& callback1,
     55     const base::android::JavaRef<jobject>& callback2) {
     56   CHECK_CLAZZ(env, org_chromium_foo_Foo_clazz(env),
     57       org_chromium_foo_Foo_clazz(env));
     58   jmethodID method_id = base::android::MethodID::LazyGet<
     59       base::android::MethodID::TYPE_STATIC>(
     60           env, org_chromium_foo_Foo_clazz(env),
     61           "calledByNative",
     62           "(Lorg/chromium/foo/Bar1$Callback;Lorg/chromium/foo/Bar2$Callback;)V",
     63           &g_org_chromium_foo_Foo_calledByNative);
     64 
     65      env->CallStaticVoidMethod(org_chromium_foo_Foo_clazz(env),
     66           method_id, callback1.obj(), callback2.obj());
     67   jni_generator::CheckException(env);
     68 }
     69 
     70 #endif  // org_chromium_foo_Foo_JNI
     71