// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file is autogenerated by
//     base/android/jni_generator/jni_generator.py
// For
//     org/chromium/example/jni_generator/Test

#ifndef org_chromium_example_jni_generator_Test_JNI
#define org_chromium_example_jni_generator_Test_JNI

#include <jni.h>

#include "base/android/jni_generator/jni_generator_helper.h"

#include "base/android/jni_int_wrapper.h"

// Step 1: forward declarations.
namespace {
const char kTestClassPath[] = "org/chromium/example/jni_generator/Test";
// Leaking this jclass as we cannot use LazyInstance from some threads.
jclass g_Test_clazz = NULL;
#define Test_clazz(env) g_Test_clazz

}  // namespace

// Step 2: method stubs.
static jint Method(JNIEnv* env, jobject jcaller,
    jlong nativeTest,
    jint arg1) {
  Test* native = reinterpret_cast<Test*>(nativeTest);
  CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0);
  return native->Method(env, jcaller, arg1);
}

// Step 3: RegisterNatives.

static const JNINativeMethod kMethodsTest[] = {
    { "nativeMethod",
"("
"J"
"I"
")"
"I", reinterpret_cast<void*>(Method) },
};

static bool RegisterNativesImpl(JNIEnv* env, jclass clazz) {
  g_Test_clazz = static_cast<jclass>(env->NewWeakGlobalRef(clazz));

  const int kMethodsTestSize = arraysize(kMethodsTest);

  if (env->RegisterNatives(Test_clazz(env),
                           kMethodsTest,
                           kMethodsTestSize) < 0) {
    jni_generator::HandleRegistrationError(
        env, Test_clazz(env), __FILE__);
    return false;
  }

  return true;
}

extern "C" JNIEXPORT bool JNICALL
Java_org_chromium_example_jni_generator_Test_nativeInitNativeClass(JNIEnv* env,
    jclass clazz) {
  return RegisterNativesImpl(env, clazz);
}

#endif  // org_chromium_example_jni_generator_Test_JNI
