// 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 of the same format as file that generated by
//     base/android/jni_generator/jni_generator.py
// For
//     com/google/vr/ndk/base/GvrApi

// Local modification includes:
// 1. Remove all implementaiton, only keep definition.
// 2. Use absolute path instead of relative path.
// 3. Removed all helper functions such as: Create.
// 4. Removed external functions that don't have implementation in shim file.
// 5. Changed RectF, Point, and PoseTracker to correct package name.
// 6. Added function RegisterGvrApiNatives at the end of this file.
// 7. Added "vr" as an argument to base::android::LazyGetClass.

#ifndef com_google_vr_ndk_base_GvrApi_JNI
#define com_google_vr_ndk_base_GvrApi_JNI

#include "base/android/jni_android.h"
// ----------------------------------------------------------------------------
// Native JNI methods
// ----------------------------------------------------------------------------
#include <jni.h>
#include <atomic>
#include <type_traits>

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

// Step 1: forward declarations.
namespace {
const char kGvrApiClassPath[] = "com/google/vr/ndk/base/GvrApi";
// Leaking this jclass as we cannot use LazyInstance from some threads.
std::atomic<jclass> g_GvrApi_clazz __attribute__((unused)) (nullptr);
#define GvrApi_clazz(env) \
  base::android::LazyGetClass(env, kGvrApiClassPath, "vr", &g_GvrApi_clazz)

}  // namespace

namespace GvrApi {
// Step 2: method stubs.

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListCreate(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListDestroy(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewportList);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetSize(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewportList);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetItem(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewportList,
    jint index,
    jlong nativeBufferViewport);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListSetItem(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewportList,
    jint index,
    jlong nativeBufferViewport);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportCreate(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportDestroy(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceUv(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jobject out);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceUv(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jfloat left,
    jfloat top,
    jfloat right,
    jfloat bottom);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceFov(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jobject out);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceFov(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jfloat left,
    jfloat top,
    jfloat right,
    jfloat bottom);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTransform(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jfloatArray matrix);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTransform(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jfloatArray matrix);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportEqual(JNIEnv* env,
                                                             jclass jcaller,
                                                             jlong nativeA,
                                                             jlong nativeB);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTargetEye(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTargetEye(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jint eye);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceBufferIndex(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceBufferIndex(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jint index);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetExternalSurfaceId(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurfaceId(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jint id);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurface(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jlong nativeExternalSurface);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetReprojection(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetReprojection(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jint reprojection);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceLayer(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferViewport,
    jint layerIndex);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecCreate(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecDestroy(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSize(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec,
    jobject size);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSize(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec,
    jint width,
    jint height);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetColorFormat(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec,
    jint format);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetDepthStencilFormat(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec,
    jint format);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetMultiviewLayers(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec,
    jint numLayers);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSamples(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSamples(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec,
    jint samples);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceCreateWithListeners(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeGvrContext,
    jobject surfaceListener,
    jobject frameListener,
    jobject handler);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceDestroy(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetId(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec);

JNI_GENERATOR_EXPORT jobject
Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetSurface(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeBufferSpec);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainCreate(JNIEnv* env,
                                                         jclass jcaller,
                                                         jlong nativeContext,
                                                         jlongArray specs);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainDestroy(JNIEnv* env,
                                                          jclass jcaller,
                                                          jlong nativeContext);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferCount(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeSwapChain);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferSize(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeSwapChain,
    jint bufferIndex,
    jobject size);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainResizeBuffer(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeSwapChain,
    jint bufferIndex,
    jint width,
    jint height);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainAcquireFrame(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeSwapChain);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeFrameBindBuffer(JNIEnv* env,
                                                         jclass jcaller,
                                                         jlong nativeFrame,
                                                         jint bufferIndex);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeFrameUnbind(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeFrame);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetFramebufferObject(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeFrame,
    jint bufferIndex);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetBufferSize(JNIEnv* env,
                                                            jclass jcaller,
                                                            jlong nativeFrame,
                                                            jint bufferIndex,
                                                            jobject size);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeFrameSubmit(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeFrame,
    jlong nativeBufferViewportList,
    jfloatArray headSpaceFromStartSpace);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeUsingDynamicLibrary(JNIEnv* env,
                                                             jclass jcaller);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeUsingShimLibrary(JNIEnv* env,
                                                          jclass jcaller);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetApplicationState(JNIEnv* env,
                                                             jclass jcaller,
                                                             jclass classLoader,
                                                             jobject context);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetDynamicLibraryLoadingEnabled(
    JNIEnv* env,
    jclass jcaller,
    jboolean enabled);

JNI_GENERATOR_EXPORT jlong Java_com_google_vr_ndk_base_GvrApi_nativeCreate(
    JNIEnv* env,
    jobject jcaller,
    jclass classLoader,
    jobject context,
    jlong synchronizer,
    jint widthPixels,
    jint heightPixels,
    jfloat xDpi,
    jfloat yDpi,
    jobject optionalPoseTrackingForTesting);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeRequestContextSharing(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jobject eglListener);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeGetError(JNIEnv* env,
                                                  jobject jcaller,
                                                  jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeClearError(JNIEnv* env,
                                                    jobject jcaller,
                                                    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jstring
Java_com_google_vr_ndk_base_GvrApi_nativeGetErrorString(JNIEnv* env,
                                                        jclass jcaller,
                                                        jint errorCode);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeGetUserPrefs(JNIEnv* env,
                                                      jobject jcaller,
                                                      jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeUserPrefsGetControllerHandedness(
    JNIEnv* env,
    jclass jcaller,
    jlong nativeUserPrefs);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativePause(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeResume(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeReleaseGvrContext(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeInitializeGl(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceCreatedReprojectionThread(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceChangedReprojectionThread(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetRecommendedBufferViewports(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jlong nativeBufferViewportList);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenBufferViewports(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jlong nativeBufferViewportList);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetMaximumEffectiveRenderTargetSize(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jobject size);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenTargetSize(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jobject size);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeDistortToScreen(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jint textureId,
    jlong nativeBufferViewportList,
    jfloatArray headSpaceFromStartSpace,
    jlong timeNs);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultFramebufferActive(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jobject
Java_com_google_vr_ndk_base_GvrApi_nativeRenderReprojectionThread(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeOnPauseReprojectionThread(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceRotation(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jfloatArray outRotation,
    jlong timeNs);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceTransform(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jfloatArray outTransform,
    jlong timeNs);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetIgnoreManualPauseResumeTracker(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jboolean shouldIgnore);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativePauseTracking(JNIEnv* env,
                                                       jobject jcaller,
                                                       jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jbyteArray
Java_com_google_vr_ndk_base_GvrApi_nativePauseTrackingGetState(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeResumeTracking(JNIEnv* env,
                                                        jobject jcaller,
                                                        jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeResumeTrackingSetState(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jbyteArray trackerStateBytes);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeResetTracking(JNIEnv* env,
                                                       jobject jcaller,
                                                       jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeRecenterTracking(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetEyeFromHeadMatrix(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jint eye,
    jfloatArray out);

JNI_GENERATOR_EXPORT jintArray
Java_com_google_vr_ndk_base_GvrApi_nativeGetWindowBounds(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jfloatArray
Java_com_google_vr_ndk_base_GvrApi_nativeComputeDistortedPoint(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jint eyeType,
    jfloatArray uvIn);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultViewerProfile(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jstring viewerProfileUri);

JNI_GENERATOR_EXPORT jstring
Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerVendor(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jstring
Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerModel(JNIEnv* env,
                                                        jobject jcaller,
                                                        jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerType(JNIEnv* env,
                                                       jobject jcaller,
                                                       jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeSetAsyncReprojectionEnabled(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jboolean enabled);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeGetAsyncReprojectionEnabled(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeIsFeatureSupported(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jint feature);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeReconnectSensors(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetIdleListener(JNIEnv* env,
                                                         jobject jcaller,
                                                         jlong nativeGvrContext,
                                                         jobject idleListener);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeSetViewerParams(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jbyteArray serializedViewerParams);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetDisplayMetrics(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jint widthPixels,
    jint heightPixels,
    jfloat xDpi,
    jfloat yDpi);

JNI_GENERATOR_EXPORT jfloat
Java_com_google_vr_ndk_base_GvrApi_nativeGetBorderSizeMeters(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetSurfaceSize(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext,
    jint surfaceWidthPixels,
    jint surfaceHeightPixels);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeSetLensOffset(JNIEnv* env,
                                                       jobject jcaller,
                                                       jlong nativeGvrContext,
                                                       jfloat x,
                                                       jfloat y,
                                                       jfloat rotation);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeDumpDebugData(JNIEnv* env,
                                                       jobject jcaller,
                                                       jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeUsingVrDisplayService(
    JNIEnv* env,
    jobject jcaller,
    jlong nativeGvrContext);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeCreateEvent(JNIEnv* env, jclass clazz);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeCreateValue(JNIEnv* env, jclass clazz);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeDestroyEvent(
    JNIEnv* env,
    jclass clazz,
    jlong native_object);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeDestroyValue(
    JNIEnv* env,
    jclass clazz,
    jlong native_object);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeGetCurrentProperties(
    JNIEnv* env,
    jobject object,
    jlong native_object);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeGetEventFlags(JNIEnv* env,
                                                       jclass clazz,
                                                       jlong native_object);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeGetEventTimestamp(JNIEnv* env,
                                                           jclass clazz,
                                                           jlong native_object);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeGetEventType(JNIEnv* env,
                                                      jclass clazz,
                                                      jlong native_object);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativeGetProperty(JNIEnv* env,
                                                     jclass clazz,
                                                     jlong native_properties,
                                                     jint property_key,
                                                     jlong native_value);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventFlags(
    JNIEnv* env,
    jclass clazz,
    jlong native_object);

JNI_GENERATOR_EXPORT void
Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventStartSpaceFromTrackingSpaceTransform(
    JNIEnv* env,
    jclass clazz,
    jlong native_object,
    jfloatArray rotation_out_array);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventType(
    JNIEnv* env,
    jclass clazz,
    jlong native_object);

JNI_GENERATOR_EXPORT jboolean
Java_com_google_vr_ndk_base_GvrApi_nativePollEvent(JNIEnv* env,
                                                   jobject object,
                                                   jlong native_object,
                                                   jlong event_out);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFlags(JNIEnv* env,
                                                      jclass clazz,
                                                      jlong native_object);

JNI_GENERATOR_EXPORT jfloat
Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFloat(JNIEnv* env,
                                                      jclass clazz,
                                                      jlong native_object);

JNI_GENERATOR_EXPORT jint
Java_com_google_vr_ndk_base_GvrApi_nativeValueAsInt(JNIEnv* env,
                                                    jclass clazz,
                                                    jlong native_object);

JNI_GENERATOR_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeValueAsMat4f(
    JNIEnv* env,
    jclass clazz,
    jlong native_object,
    jfloatArray mat4_out_array);

JNI_GENERATOR_EXPORT jlong
Java_com_google_vr_ndk_base_GvrApi_nativeValueGetFlags(JNIEnv* env,
                                                       jclass clazz,
                                                       jlong native_object);

// Step 3: RegisterNatives.

static const JNINativeMethod kMethodsGvrApi[] = {
    {"nativeBufferViewportListCreate",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListCreate)},
    {"nativeBufferViewportListDestroy",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListDestroy)},
    {"nativeBufferViewportListGetSize",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetSize)},
    {"nativeBufferViewportListGetItem",
     "("
     "J"
     "I"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetItem)},
    {"nativeBufferViewportListSetItem",
     "("
     "J"
     "I"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListSetItem)},
    {"nativeBufferViewportCreate",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportCreate)},
    {"nativeBufferViewportDestroy",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportDestroy)},
    {"nativeBufferViewportGetSourceUv",
     "("
     "J"
     "Landroid/graphics/RectF;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceUv)},
    {"nativeBufferViewportSetSourceUv",
     "("
     "J"
     "F"
     "F"
     "F"
     "F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceUv)},
    {"nativeBufferViewportGetSourceFov",
     "("
     "J"
     "Landroid/graphics/RectF;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceFov)},
    {"nativeBufferViewportSetSourceFov",
     "("
     "J"
     "F"
     "F"
     "F"
     "F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceFov)},
    {"nativeBufferViewportGetTransform",
     "("
     "J"
     "[F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTransform)},
    {"nativeBufferViewportSetTransform",
     "("
     "J"
     "[F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTransform)},
    {"nativeBufferViewportEqual",
     "("
     "J"
     "J"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportEqual)},
    {"nativeBufferViewportGetTargetEye",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTargetEye)},
    {"nativeBufferViewportSetTargetEye",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTargetEye)},
    {"nativeBufferViewportGetSourceBufferIndex",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceBufferIndex)},
    {"nativeBufferViewportSetSourceBufferIndex",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceBufferIndex)},
    {"nativeBufferViewportGetExternalSurfaceId",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetExternalSurfaceId)},
    {"nativeBufferViewportSetExternalSurfaceId",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurfaceId)},
    {"nativeBufferViewportSetExternalSurface",
     "("
     "J"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurface)},
    {"nativeBufferViewportGetReprojection",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetReprojection)},
    {"nativeBufferViewportSetReprojection",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetReprojection)},
    {"nativeBufferViewportSetSourceLayer",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceLayer)},
    {"nativeBufferSpecCreate",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecCreate)},
    {"nativeBufferSpecDestroy",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecDestroy)},
    {"nativeBufferSpecGetSize",
     "("
     "J"
     "Landroid/graphics/Point;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSize)},
    {"nativeBufferSpecSetSize",
     "("
     "J"
     "I"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSize)},
    {"nativeBufferSpecSetColorFormat",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetColorFormat)},
    {"nativeBufferSpecSetDepthStencilFormat",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetDepthStencilFormat)},
    {"nativeBufferSpecSetMultiviewLayers",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetMultiviewLayers)},
    {"nativeBufferSpecGetSamples",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSamples)},
    {"nativeBufferSpecSetSamples",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSamples)},
    {"nativeExternalSurfaceCreateWithListeners",
     "("
     "J"
     "Ljava/lang/Runnable;"
     "Ljava/lang/Runnable;"
     "Landroid/os/Handler;"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceCreateWithListeners)},
    {"nativeExternalSurfaceDestroy",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceDestroy)},
    {"nativeExternalSurfaceGetId",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetId)},
    {"nativeExternalSurfaceGetSurface",
     "("
     "J"
     ")"
     "Landroid/view/Surface;",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetSurface)},
    {"nativeSwapChainCreate",
     "("
     "J"
     "[J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainCreate)},
    {"nativeSwapChainDestroy",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainDestroy)},
    {"nativeSwapChainGetBufferCount",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferCount)},
    {"nativeSwapChainGetBufferSize",
     "("
     "J"
     "I"
     "Landroid/graphics/Point;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferSize)},
    {"nativeSwapChainResizeBuffer",
     "("
     "J"
     "I"
     "I"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainResizeBuffer)},
    {"nativeSwapChainAcquireFrame",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainAcquireFrame)},
    {"nativeFrameBindBuffer",
     "("
     "J"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeFrameBindBuffer)},
    {"nativeFrameUnbind",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeFrameUnbind)},
    {"nativeFrameGetFramebufferObject",
     "("
     "J"
     "I"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetFramebufferObject)},
    {"nativeFrameGetBufferSize",
     "("
     "J"
     "I"
     "Landroid/graphics/Point;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetBufferSize)},
    {"nativeFrameSubmit",
     "("
     "J"
     "J"
     "[F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeFrameSubmit)},
    {"nativeUsingDynamicLibrary",
     "("
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeUsingDynamicLibrary)},
    {"nativeUsingShimLibrary",
     "("
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeUsingShimLibrary)},
    {"nativeSetApplicationState",
     "("
     "Ljava/lang/ClassLoader;"
     "Landroid/content/Context;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetApplicationState)},
    {"nativeSetDynamicLibraryLoadingEnabled",
     "("
     "Z"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetDynamicLibraryLoadingEnabled)},
    {"nativeCreate",
     "("
     "Ljava/lang/ClassLoader;"
     "Landroid/content/Context;"
     "J"
     "I"
     "I"
     "F"
     "F"
     "Lcom/google/vr/ndk/base/GvrApi$PoseTracker;"
     ")"
     "J",
     reinterpret_cast<void*>(Java_com_google_vr_ndk_base_GvrApi_nativeCreate)},
    {"nativeRequestContextSharing",
     "("
     "J"
     "Lcom/google/vr/cardboard/EglReadyListener;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeRequestContextSharing)},
    {"nativeGetError",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetError)},
    {"nativeClearError",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeClearError)},
    {"nativeGetErrorString",
     "("
     "I"
     ")"
     "Ljava/lang/String;",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetErrorString)},
    {"nativeGetUserPrefs",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetUserPrefs)},
    {"nativeUserPrefsGetControllerHandedness",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeUserPrefsGetControllerHandedness)},
    {"nativePause",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(Java_com_google_vr_ndk_base_GvrApi_nativePause)},
    {"nativeResume",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(Java_com_google_vr_ndk_base_GvrApi_nativeResume)},
    {"nativeReleaseGvrContext",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeReleaseGvrContext)},
    {"nativeInitializeGl",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeInitializeGl)},
    {"nativeOnSurfaceCreatedReprojectionThread",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceCreatedReprojectionThread)},
    {"nativeOnSurfaceChangedReprojectionThread",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceChangedReprojectionThread)},
    {"nativeGetRecommendedBufferViewports",
     "("
     "J"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetRecommendedBufferViewports)},
    {"nativeGetScreenBufferViewports",
     "("
     "J"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenBufferViewports)},
    {"nativeGetMaximumEffectiveRenderTargetSize",
     "("
     "J"
     "Landroid/graphics/Point;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetMaximumEffectiveRenderTargetSize)},
    {"nativeGetScreenTargetSize",
     "("
     "J"
     "Landroid/graphics/Point;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenTargetSize)},
    {"nativeDistortToScreen",
     "("
     "J"
     "I"
     "J"
     "[F"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeDistortToScreen)},
    {"nativeSetDefaultFramebufferActive",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultFramebufferActive)},
    {"nativeRenderReprojectionThread",
     "("
     "J"
     ")"
     "Landroid/graphics/Point;",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeRenderReprojectionThread)},
    {"nativeOnPauseReprojectionThread",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeOnPauseReprojectionThread)},
    {"nativeGetHeadSpaceFromStartSpaceRotation",
     "("
     "J"
     "[F"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceRotation)},
    {"nativeGetHeadSpaceFromStartSpaceTransform",
     "("
     "J"
     "[F"
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceTransform)},
    {"nativeSetIgnoreManualPauseResumeTracker",
     "("
     "J"
     "Z"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetIgnoreManualPauseResumeTracker)},
    {"nativePauseTracking",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativePauseTracking)},
    {"nativePauseTrackingGetState",
     "("
     "J"
     ")"
     "[B",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativePauseTrackingGetState)},
    {"nativeResumeTracking",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeResumeTracking)},
    {"nativeResumeTrackingSetState",
     "("
     "J"
     "[B"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeResumeTrackingSetState)},
    {"nativeResetTracking",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeResetTracking)},
    {"nativeRecenterTracking",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeRecenterTracking)},
    {"nativeGetEyeFromHeadMatrix",
     "("
     "J"
     "I"
     "[F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetEyeFromHeadMatrix)},
    {"nativeGetWindowBounds",
     "("
     "J"
     ")"
     "[I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetWindowBounds)},
    {"nativeComputeDistortedPoint",
     "("
     "J"
     "I"
     "[F"
     ")"
     "[F",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeComputeDistortedPoint)},
    {"nativeSetDefaultViewerProfile",
     "("
     "J"
     "Ljava/lang/String;"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultViewerProfile)},
    {"nativeGetViewerVendor",
     "("
     "J"
     ")"
     "Ljava/lang/String;",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerVendor)},
    {"nativeGetViewerModel",
     "("
     "J"
     ")"
     "Ljava/lang/String;",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerModel)},
    {"nativeGetViewerType",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerType)},
    {"nativeSetAsyncReprojectionEnabled",
     "("
     "J"
     "Z"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetAsyncReprojectionEnabled)},
    {"nativeGetAsyncReprojectionEnabled",
     "("
     "J"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetAsyncReprojectionEnabled)},
    {"nativeIsFeatureSupported",
     "("
     "J"
     "I"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeIsFeatureSupported)},
    {"nativeReconnectSensors",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeReconnectSensors)},
    {"nativeSetIdleListener",
     "("
     "J"
     "Lcom/google/vr/ndk/base/GvrApi$IdleListener;"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetIdleListener)},
    {"nativeSetViewerParams",
     "("
     "J"
     "[B"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetViewerParams)},
    {"nativeSetDisplayMetrics",
     "("
     "J"
     "I"
     "I"
     "F"
     "F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetDisplayMetrics)},
    {"nativeGetBorderSizeMeters",
     "("
     "J"
     ")"
     "F",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetBorderSizeMeters)},
    {"nativeSetSurfaceSize",
     "("
     "J"
     "I"
     "I"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetSurfaceSize)},
    {"nativeSetLensOffset",
     "("
     "J"
     "F"
     "F"
     "F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeSetLensOffset)},
    {"nativeDumpDebugData",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeDumpDebugData)},
    {"nativeUsingVrDisplayService",
     "("
     "J"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeUsingVrDisplayService)},
    {"nativeCreateEvent",
     "("
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeCreateEvent)},
    {"nativeCreateValue",
     "("
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeCreateValue)},
    {"nativeDestroyEvent",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeDestroyEvent)},
    {"nativeDestroyValue",
     "("
     "J"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeDestroyValue)},
    {"nativeGetCurrentProperties",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetCurrentProperties)},
    {"nativeGetEventFlags",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetEventFlags)},
    {"nativeGetEventTimestamp",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetEventTimestamp)},
    {"nativeGetEventType",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetEventType)},
    {"nativeGetProperty",
     "("
     "J"
     "I"
     "J"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetProperty)},
    {"nativeGetRecenterEventFlags",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventFlags)},
    {"nativeGetRecenterEventStartSpaceFromTrackingSpaceTransform",
     "("
     "J"
     "[F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventStartSpaceFromTrackingSpaceTransform)},
    {"nativeGetRecenterEventType",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventType)},
    {"nativePollEvent",
     "("
     "J"
     "J"
     ")"
     "Z",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativePollEvent)},
    {"nativeValueAsFlags",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFlags)},
    {"nativeValueAsFloat",
     "("
     "J"
     ")"
     "F",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFloat)},
    {"nativeValueAsInt",
     "("
     "J"
     ")"
     "I",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeValueAsInt)},
    {"nativeValueAsMat4f",
     "("
     "J"
     "[F"
     ")"
     "V",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeValueAsMat4f)},
    {"nativeValueGetFlags",
     "("
     "J"
     ")"
     "J",
     reinterpret_cast<void*>(
         Java_com_google_vr_ndk_base_GvrApi_nativeValueGetFlags)},
};

static bool RegisterNativesImpl(JNIEnv* env) {
  if (base::android::IsSelectiveJniRegistrationEnabled(env))
    return true;

  const int kMethodsGvrApiSize = std::extent<decltype(kMethodsGvrApi)>();

  if (env->RegisterNatives(GvrApi_clazz(env), kMethodsGvrApi,
                           kMethodsGvrApiSize) < 0) {
    jni_generator::HandleRegistrationError(env, GvrApi_clazz(env), __FILE__);
    return false;
  }

  return true;
}

static bool RegisterGvrApiNatives(JNIEnv* env) {
  return RegisterNativesImpl(env);
}

}  // namespace GvrApi

#endif  // com_google_vr_ndk_base_GvrApi_JNI
