Fix for Geolocation webTCT failures
[platform/framework/web/chromium-efl.git] / third_party / gvr-android-sdk / display_synchronizer_jni.h
1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This file is of the same format as file that generated by
6 //     third_party/jni_zero/jni_zero.py
7 // For
8 //     com/google/vr/cardboard/DisplaySynchronizer
9
10 // Local modification includes:
11 // 1. Remove all implementation, only keep definition.
12 // 2. Use absolute path instead of relative path.
13 // 3. Removed all helper functions such as: Create.
14 // 4. Added function RegisterDisplaySynchronizerNatives at the end of this file.
15 // 5. Added "vr" as an argument to base::android::LazyGetClass.
16
17 #ifndef com_google_vr_cardboard_DisplaySynchronizer_JNI
18 #define com_google_vr_cardboard_DisplaySynchronizer_JNI
19
20 #include "base/android/jni_android.h"
21 // ----------------------------------------------------------------------------
22 // Native JNI methods
23 // ----------------------------------------------------------------------------
24 #include <jni.h>
25 #include <atomic>
26 #include <type_traits>
27
28 #include "third_party/jni_zero/jni_int_wrapper.h"
29 #include "third_party/jni_zero/jni_zero_helper.h"
30
31 // Step 1: forward declarations.
32 namespace {
33
34 const char kDisplaySynchronizerClassPath[] =
35     "com/google/vr/cardboard/DisplaySynchronizer";
36 // Leaking this jclass as we cannot use LazyInstance from some threads.
37 std::atomic<jclass> g_DisplaySynchronizer_clazz __attribute__((unused))
38     (nullptr);
39 #define DisplaySynchronizer_clazz(env)                                  \
40   base::android::LazyGetClass(env, kDisplaySynchronizerClassPath, "vr", \
41                               &g_DisplaySynchronizer_clazz)
42
43 }  // namespace
44
45 namespace DisplaySynchronizer {
46
47 extern "C" __attribute__((visibility("default"))) jlong
48 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate(
49     JNIEnv* env,
50     jobject jcaller,
51     jclass classLoader,
52     jobject appContext);
53
54 // Step 2: method stubs.
55 extern "C" __attribute__((visibility("default"))) void
56 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy(
57     JNIEnv* env,
58     jobject jcaller,
59     jlong nativeDisplaySynchronizer);
60
61 extern "C" __attribute__((visibility("default"))) void
62 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset(
63     JNIEnv* env,
64     jobject jcaller,
65     jlong nativeDisplaySynchronizer,
66     jlong expectedInterval,
67     jlong vsyncOffset);
68
69 extern "C" __attribute__((visibility("default"))) void
70 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate(
71     JNIEnv* env,
72     jobject jcaller,
73     jlong nativeDisplaySynchronizer,
74     jlong syncTime,
75     jint currentRotation);
76
77 extern "C" __attribute__((visibility("default"))) void
78 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged(
79     JNIEnv* env,
80     jobject obj,
81     jlong native_object);
82
83 // Step 3: RegisterNatives.
84
85 static const JNINativeMethod kMethodsDisplaySynchronizer[] = {
86     {"nativeCreate",
87      "("
88      "Ljava/lang/ClassLoader;"
89      "Landroid/content/Context;"
90      ")"
91      "J",
92      reinterpret_cast<void*>(
93          Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate)},
94     {"nativeDestroy",
95      "("
96      "J"
97      ")"
98      "V",
99      reinterpret_cast<void*>(
100          Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy)},
101     {"nativeReset",
102      "("
103      "J"
104      "J"
105      "J"
106      ")"
107      "V",
108      reinterpret_cast<void*>(
109          Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset)},
110     {"nativeUpdate",
111      "("
112      "J"
113      "J"
114      "I"
115      ")"
116      "V",
117      reinterpret_cast<void*>(
118          Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate)},
119     {"nativeOnMetricsChanged",
120      "("
121      "J"
122      ")"
123      "V",
124      reinterpret_cast<void*>(
125          Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged)},
126 };
127
128 static bool RegisterNativesImpl(JNIEnv* env) {
129   const int kMethodsDisplaySynchronizerSize =
130       std::extent<decltype(kMethodsDisplaySynchronizer)>();
131
132   if (env->RegisterNatives(DisplaySynchronizer_clazz(env),
133                            kMethodsDisplaySynchronizer,
134                            kMethodsDisplaySynchronizerSize) < 0) {
135     jni_generator::HandleRegistrationError(env, DisplaySynchronizer_clazz(env),
136                                            __FILE__);
137     return false;
138   }
139
140   return true;
141 }
142
143 static bool RegisterDisplaySynchronizerNatives(JNIEnv* env) {
144   return RegisterNativesImpl(env);
145 }
146
147 }  // namespace DisplaySynchronizer
148
149 #endif  // com_google_vr_cardboard_DisplaySynchronizer_JNI