Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: base/android/jni_generator/golden_sample_for_tests_jni.h

Issue 491043002: Make class lookup lazy in jni_generator when using lazy method lookup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/android/jni_android.cc ('k') | base/android/jni_generator/jni_generator.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file is autogenerated by 5 // This file is autogenerated by
6 // base/android/jni_generator/jni_generator.py 6 // base/android/jni_generator/jni_generator.py
7 // For 7 // For
8 // org/chromium/example/jni_generator/SampleForTests 8 // org/chromium/example/jni_generator/SampleForTests
9 9
10 #ifndef org_chromium_example_jni_generator_SampleForTests_JNI 10 #ifndef org_chromium_example_jni_generator_SampleForTests_JNI
11 #define org_chromium_example_jni_generator_SampleForTests_JNI 11 #define org_chromium_example_jni_generator_SampleForTests_JNI
12 12
13 #include <jni.h> 13 #include <jni.h>
14 14
15 #include "base/android/jni_generator/jni_generator_helper.h" 15 #include "base/android/jni_generator/jni_generator_helper.h"
16 16
17 #include "base/android/jni_int_wrapper.h" 17 #include "base/android/jni_int_wrapper.h"
18 18
19 // Step 1: forward declarations. 19 // Step 1: forward declarations.
20 namespace { 20 namespace {
21 const char kInnerStructAClassPath[] = 21 const char kInnerStructAClassPath[] =
22 "org/chromium/example/jni_generator/SampleForTests$InnerStructA"; 22 "org/chromium/example/jni_generator/SampleForTests$InnerStructA";
23 const char kSampleForTestsClassPath[] = 23 const char kSampleForTestsClassPath[] =
24 "org/chromium/example/jni_generator/SampleForTests"; 24 "org/chromium/example/jni_generator/SampleForTests";
25 const char kInnerStructBClassPath[] = 25 const char kInnerStructBClassPath[] =
26 "org/chromium/example/jni_generator/SampleForTests$InnerStructB"; 26 "org/chromium/example/jni_generator/SampleForTests$InnerStructB";
27 // Leaking this jclass as we cannot use LazyInstance from some threads. 27 // Leaking this jclass as we cannot use LazyInstance from some threads.
28 jclass g_InnerStructA_clazz = NULL; 28 jclass g_InnerStructA_clazz = NULL;
29 #define InnerStructA_clazz(env) g_InnerStructA_clazz
29 // Leaking this jclass as we cannot use LazyInstance from some threads. 30 // Leaking this jclass as we cannot use LazyInstance from some threads.
30 jclass g_SampleForTests_clazz = NULL; 31 jclass g_SampleForTests_clazz = NULL;
32 #define SampleForTests_clazz(env) g_SampleForTests_clazz
31 // Leaking this jclass as we cannot use LazyInstance from some threads. 33 // Leaking this jclass as we cannot use LazyInstance from some threads.
32 jclass g_InnerStructB_clazz = NULL; 34 jclass g_InnerStructB_clazz = NULL;
35 #define InnerStructB_clazz(env) g_InnerStructB_clazz
33 36
34 } // namespace 37 } // namespace
35 38
36 namespace base { 39 namespace base {
37 namespace android { 40 namespace android {
38 41
39 static jlong Init(JNIEnv* env, jobject jcaller, 42 static jlong Init(JNIEnv* env, jobject jcaller,
40 jstring param); 43 jstring param);
41 44
42 static jdouble GetDoubleFunction(JNIEnv* env, jobject jcaller); 45 static jdouble GetDoubleFunction(JNIEnv* env, jobject jcaller);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 CHECK_NATIVE_PTR(env, jcaller, native, "ReturnAString", NULL); 95 CHECK_NATIVE_PTR(env, jcaller, native, "ReturnAString", NULL);
93 return native->ReturnAString(env, jcaller).Release(); 96 return native->ReturnAString(env, jcaller).Release();
94 } 97 }
95 98
96 static base::subtle::AtomicWord g_SampleForTests_javaMethod = 0; 99 static base::subtle::AtomicWord g_SampleForTests_javaMethod = 0;
97 static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj, 100 static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj,
98 JniIntWrapper foo, 101 JniIntWrapper foo,
99 JniIntWrapper bar) { 102 JniIntWrapper bar) {
100 /* Must call RegisterNativesImpl() */ 103 /* Must call RegisterNativesImpl() */
101 CHECK_CLAZZ(env, obj, 104 CHECK_CLAZZ(env, obj,
102 g_SampleForTests_clazz, 0); 105 SampleForTests_clazz(env), 0);
103 jmethodID method_id = 106 jmethodID method_id =
104 base::android::MethodID::LazyGet< 107 base::android::MethodID::LazyGet<
105 base::android::MethodID::TYPE_INSTANCE>( 108 base::android::MethodID::TYPE_INSTANCE>(
106 env, g_SampleForTests_clazz, 109 env, SampleForTests_clazz(env),
107 "javaMethod", 110 "javaMethod",
108 111
109 "(" 112 "("
110 "I" 113 "I"
111 "I" 114 "I"
112 ")" 115 ")"
113 "I", 116 "I",
114 &g_SampleForTests_javaMethod); 117 &g_SampleForTests_javaMethod);
115 118
116 jint ret = 119 jint ret =
117 env->CallIntMethod(obj, 120 env->CallIntMethod(obj,
118 method_id, as_jint(foo), as_jint(bar)); 121 method_id, as_jint(foo), as_jint(bar));
119 jni_generator::CheckException(env); 122 jni_generator::CheckException(env);
120 return ret; 123 return ret;
121 } 124 }
122 125
123 static base::subtle::AtomicWord g_SampleForTests_staticJavaMethod = 0; 126 static base::subtle::AtomicWord g_SampleForTests_staticJavaMethod = 0;
124 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) { 127 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
125 /* Must call RegisterNativesImpl() */ 128 /* Must call RegisterNativesImpl() */
126 CHECK_CLAZZ(env, g_SampleForTests_clazz, 129 CHECK_CLAZZ(env, SampleForTests_clazz(env),
127 g_SampleForTests_clazz, false); 130 SampleForTests_clazz(env), false);
128 jmethodID method_id = 131 jmethodID method_id =
129 base::android::MethodID::LazyGet< 132 base::android::MethodID::LazyGet<
130 base::android::MethodID::TYPE_STATIC>( 133 base::android::MethodID::TYPE_STATIC>(
131 env, g_SampleForTests_clazz, 134 env, SampleForTests_clazz(env),
132 "staticJavaMethod", 135 "staticJavaMethod",
133 136
134 "(" 137 "("
135 ")" 138 ")"
136 "Z", 139 "Z",
137 &g_SampleForTests_staticJavaMethod); 140 &g_SampleForTests_staticJavaMethod);
138 141
139 jboolean ret = 142 jboolean ret =
140 env->CallStaticBooleanMethod(g_SampleForTests_clazz, 143 env->CallStaticBooleanMethod(SampleForTests_clazz(env),
141 method_id); 144 method_id);
142 jni_generator::CheckException(env); 145 jni_generator::CheckException(env);
143 return ret; 146 return ret;
144 } 147 }
145 148
146 static base::subtle::AtomicWord g_SampleForTests_packagePrivateJavaMethod = 0; 149 static base::subtle::AtomicWord g_SampleForTests_packagePrivateJavaMethod = 0;
147 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject 150 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject
148 obj) { 151 obj) {
149 /* Must call RegisterNativesImpl() */ 152 /* Must call RegisterNativesImpl() */
150 CHECK_CLAZZ(env, obj, 153 CHECK_CLAZZ(env, obj,
151 g_SampleForTests_clazz); 154 SampleForTests_clazz(env));
152 jmethodID method_id = 155 jmethodID method_id =
153 base::android::MethodID::LazyGet< 156 base::android::MethodID::LazyGet<
154 base::android::MethodID::TYPE_INSTANCE>( 157 base::android::MethodID::TYPE_INSTANCE>(
155 env, g_SampleForTests_clazz, 158 env, SampleForTests_clazz(env),
156 "packagePrivateJavaMethod", 159 "packagePrivateJavaMethod",
157 160
158 "(" 161 "("
159 ")" 162 ")"
160 "V", 163 "V",
161 &g_SampleForTests_packagePrivateJavaMethod); 164 &g_SampleForTests_packagePrivateJavaMethod);
162 165
163 env->CallVoidMethod(obj, 166 env->CallVoidMethod(obj,
164 method_id); 167 method_id);
165 jni_generator::CheckException(env); 168 jni_generator::CheckException(env);
166 169
167 } 170 }
168 171
169 static base::subtle::AtomicWord g_SampleForTests_methodThatThrowsException = 0; 172 static base::subtle::AtomicWord g_SampleForTests_methodThatThrowsException = 0;
170 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject 173 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject
171 obj) { 174 obj) {
172 /* Must call RegisterNativesImpl() */ 175 /* Must call RegisterNativesImpl() */
173 CHECK_CLAZZ(env, obj, 176 CHECK_CLAZZ(env, obj,
174 g_SampleForTests_clazz); 177 SampleForTests_clazz(env));
175 jmethodID method_id = 178 jmethodID method_id =
176 base::android::MethodID::LazyGet< 179 base::android::MethodID::LazyGet<
177 base::android::MethodID::TYPE_INSTANCE>( 180 base::android::MethodID::TYPE_INSTANCE>(
178 env, g_SampleForTests_clazz, 181 env, SampleForTests_clazz(env),
179 "methodThatThrowsException", 182 "methodThatThrowsException",
180 183
181 "(" 184 "("
182 ")" 185 ")"
183 "V", 186 "V",
184 &g_SampleForTests_methodThatThrowsException); 187 &g_SampleForTests_methodThatThrowsException);
185 188
186 env->CallVoidMethod(obj, 189 env->CallVoidMethod(obj,
187 method_id); 190 method_id);
188 191
189 } 192 }
190 193
191 static base::subtle::AtomicWord g_InnerStructA_create = 0; 194 static base::subtle::AtomicWord g_InnerStructA_create = 0;
192 static base::android::ScopedJavaLocalRef<jobject> 195 static base::android::ScopedJavaLocalRef<jobject>
193 Java_InnerStructA_create(JNIEnv* env, jlong l, 196 Java_InnerStructA_create(JNIEnv* env, jlong l,
194 JniIntWrapper i, 197 JniIntWrapper i,
195 jstring s) { 198 jstring s) {
196 /* Must call RegisterNativesImpl() */ 199 /* Must call RegisterNativesImpl() */
197 CHECK_CLAZZ(env, g_InnerStructA_clazz, 200 CHECK_CLAZZ(env, InnerStructA_clazz(env),
198 g_InnerStructA_clazz, NULL); 201 InnerStructA_clazz(env), NULL);
199 jmethodID method_id = 202 jmethodID method_id =
200 base::android::MethodID::LazyGet< 203 base::android::MethodID::LazyGet<
201 base::android::MethodID::TYPE_STATIC>( 204 base::android::MethodID::TYPE_STATIC>(
202 env, g_InnerStructA_clazz, 205 env, InnerStructA_clazz(env),
203 "create", 206 "create",
204 207
205 "(" 208 "("
206 "J" 209 "J"
207 "I" 210 "I"
208 "Ljava/lang/String;" 211 "Ljava/lang/String;"
209 ")" 212 ")"
210 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;", 213 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;",
211 &g_InnerStructA_create); 214 &g_InnerStructA_create);
212 215
213 jobject ret = 216 jobject ret =
214 env->CallStaticObjectMethod(g_InnerStructA_clazz, 217 env->CallStaticObjectMethod(InnerStructA_clazz(env),
215 method_id, l, as_jint(i), s); 218 method_id, l, as_jint(i), s);
216 jni_generator::CheckException(env); 219 jni_generator::CheckException(env);
217 return base::android::ScopedJavaLocalRef<jobject>(env, ret); 220 return base::android::ScopedJavaLocalRef<jobject>(env, ret);
218 } 221 }
219 222
220 static base::subtle::AtomicWord g_SampleForTests_addStructA = 0; 223 static base::subtle::AtomicWord g_SampleForTests_addStructA = 0;
221 static void Java_SampleForTests_addStructA(JNIEnv* env, jobject obj, jobject a) 224 static void Java_SampleForTests_addStructA(JNIEnv* env, jobject obj, jobject a)
222 { 225 {
223 /* Must call RegisterNativesImpl() */ 226 /* Must call RegisterNativesImpl() */
224 CHECK_CLAZZ(env, obj, 227 CHECK_CLAZZ(env, obj,
225 g_SampleForTests_clazz); 228 SampleForTests_clazz(env));
226 jmethodID method_id = 229 jmethodID method_id =
227 base::android::MethodID::LazyGet< 230 base::android::MethodID::LazyGet<
228 base::android::MethodID::TYPE_INSTANCE>( 231 base::android::MethodID::TYPE_INSTANCE>(
229 env, g_SampleForTests_clazz, 232 env, SampleForTests_clazz(env),
230 "addStructA", 233 "addStructA",
231 234
232 "(" 235 "("
233 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;" 236 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;"
234 ")" 237 ")"
235 "V", 238 "V",
236 &g_SampleForTests_addStructA); 239 &g_SampleForTests_addStructA);
237 240
238 env->CallVoidMethod(obj, 241 env->CallVoidMethod(obj,
239 method_id, a); 242 method_id, a);
240 jni_generator::CheckException(env); 243 jni_generator::CheckException(env);
241 244
242 } 245 }
243 246
244 static base::subtle::AtomicWord g_SampleForTests_iterateAndDoSomething = 0; 247 static base::subtle::AtomicWord g_SampleForTests_iterateAndDoSomething = 0;
245 static void Java_SampleForTests_iterateAndDoSomething(JNIEnv* env, jobject obj) 248 static void Java_SampleForTests_iterateAndDoSomething(JNIEnv* env, jobject obj)
246 { 249 {
247 /* Must call RegisterNativesImpl() */ 250 /* Must call RegisterNativesImpl() */
248 CHECK_CLAZZ(env, obj, 251 CHECK_CLAZZ(env, obj,
249 g_SampleForTests_clazz); 252 SampleForTests_clazz(env));
250 jmethodID method_id = 253 jmethodID method_id =
251 base::android::MethodID::LazyGet< 254 base::android::MethodID::LazyGet<
252 base::android::MethodID::TYPE_INSTANCE>( 255 base::android::MethodID::TYPE_INSTANCE>(
253 env, g_SampleForTests_clazz, 256 env, SampleForTests_clazz(env),
254 "iterateAndDoSomething", 257 "iterateAndDoSomething",
255 258
256 "(" 259 "("
257 ")" 260 ")"
258 "V", 261 "V",
259 &g_SampleForTests_iterateAndDoSomething); 262 &g_SampleForTests_iterateAndDoSomething);
260 263
261 env->CallVoidMethod(obj, 264 env->CallVoidMethod(obj,
262 method_id); 265 method_id);
263 jni_generator::CheckException(env); 266 jni_generator::CheckException(env);
264 267
265 } 268 }
266 269
267 static base::subtle::AtomicWord g_InnerStructB_getKey = 0; 270 static base::subtle::AtomicWord g_InnerStructB_getKey = 0;
268 static jlong Java_InnerStructB_getKey(JNIEnv* env, jobject obj) { 271 static jlong Java_InnerStructB_getKey(JNIEnv* env, jobject obj) {
269 /* Must call RegisterNativesImpl() */ 272 /* Must call RegisterNativesImpl() */
270 CHECK_CLAZZ(env, obj, 273 CHECK_CLAZZ(env, obj,
271 g_InnerStructB_clazz, 0); 274 InnerStructB_clazz(env), 0);
272 jmethodID method_id = 275 jmethodID method_id =
273 base::android::MethodID::LazyGet< 276 base::android::MethodID::LazyGet<
274 base::android::MethodID::TYPE_INSTANCE>( 277 base::android::MethodID::TYPE_INSTANCE>(
275 env, g_InnerStructB_clazz, 278 env, InnerStructB_clazz(env),
276 "getKey", 279 "getKey",
277 280
278 "(" 281 "("
279 ")" 282 ")"
280 "J", 283 "J",
281 &g_InnerStructB_getKey); 284 &g_InnerStructB_getKey);
282 285
283 jlong ret = 286 jlong ret =
284 env->CallLongMethod(obj, 287 env->CallLongMethod(obj,
285 method_id); 288 method_id);
286 jni_generator::CheckException(env); 289 jni_generator::CheckException(env);
287 return ret; 290 return ret;
288 } 291 }
289 292
290 static base::subtle::AtomicWord g_InnerStructB_getValue = 0; 293 static base::subtle::AtomicWord g_InnerStructB_getValue = 0;
291 static base::android::ScopedJavaLocalRef<jstring> 294 static base::android::ScopedJavaLocalRef<jstring>
292 Java_InnerStructB_getValue(JNIEnv* env, jobject obj) { 295 Java_InnerStructB_getValue(JNIEnv* env, jobject obj) {
293 /* Must call RegisterNativesImpl() */ 296 /* Must call RegisterNativesImpl() */
294 CHECK_CLAZZ(env, obj, 297 CHECK_CLAZZ(env, obj,
295 g_InnerStructB_clazz, NULL); 298 InnerStructB_clazz(env), NULL);
296 jmethodID method_id = 299 jmethodID method_id =
297 base::android::MethodID::LazyGet< 300 base::android::MethodID::LazyGet<
298 base::android::MethodID::TYPE_INSTANCE>( 301 base::android::MethodID::TYPE_INSTANCE>(
299 env, g_InnerStructB_clazz, 302 env, InnerStructB_clazz(env),
300 "getValue", 303 "getValue",
301 304
302 "(" 305 "("
303 ")" 306 ")"
304 "Ljava/lang/String;", 307 "Ljava/lang/String;",
305 &g_InnerStructB_getValue); 308 &g_InnerStructB_getValue);
306 309
307 jstring ret = 310 jstring ret =
308 static_cast<jstring>(env->CallObjectMethod(obj, 311 static_cast<jstring>(env->CallObjectMethod(obj,
309 method_id)); 312 method_id));
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 static bool RegisterNativesImpl(JNIEnv* env) { 375 static bool RegisterNativesImpl(JNIEnv* env) {
373 g_InnerStructA_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 376 g_InnerStructA_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
374 base::android::GetClass(env, kInnerStructAClassPath).obj())); 377 base::android::GetClass(env, kInnerStructAClassPath).obj()));
375 g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 378 g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
376 base::android::GetClass(env, kSampleForTestsClassPath).obj())); 379 base::android::GetClass(env, kSampleForTestsClassPath).obj()));
377 g_InnerStructB_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 380 g_InnerStructB_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
378 base::android::GetClass(env, kInnerStructBClassPath).obj())); 381 base::android::GetClass(env, kInnerStructBClassPath).obj()));
379 382
380 const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests); 383 const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests);
381 384
382 if (env->RegisterNatives(g_SampleForTests_clazz, 385 if (env->RegisterNatives(SampleForTests_clazz(env),
383 kMethodsSampleForTests, 386 kMethodsSampleForTests,
384 kMethodsSampleForTestsSize) < 0) { 387 kMethodsSampleForTestsSize) < 0) {
385 jni_generator::HandleRegistrationError( 388 jni_generator::HandleRegistrationError(
386 env, g_SampleForTests_clazz, __FILE__); 389 env, SampleForTests_clazz(env), __FILE__);
387 return false; 390 return false;
388 } 391 }
389 392
390 return true; 393 return true;
391 } 394 }
392 395
393 } // namespace android 396 } // namespace android
394 } // namespace base 397 } // namespace base
395 398
396 #endif // org_chromium_example_jni_generator_SampleForTests_JNI 399 #endif // org_chromium_example_jni_generator_SampleForTests_JNI
OLDNEW
« no previous file with comments | « base/android/jni_android.cc ('k') | base/android/jni_generator/jni_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698