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

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

Issue 11038015: Android: lazy initialization for method id. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moves to MethodID Created 8 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_tests.py 6 // base/android/jni_generator/jni_generator_tests.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
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 jint nativeCPPClass) { 59 jint nativeCPPClass) {
60 DCHECK(nativeCPPClass) << "Method"; 60 DCHECK(nativeCPPClass) << "Method";
61 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 61 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
62 return native->Method(env, obj); 62 return native->Method(env, obj);
63 } 63 }
64 64
65 static jdouble MethodOtherP0(JNIEnv* env, jobject obj, 65 static jdouble MethodOtherP0(JNIEnv* env, jobject obj,
66 jint nativePtr) { 66 jint nativePtr) {
67 DCHECK(nativePtr) << "MethodOtherP0"; 67 DCHECK(nativePtr) << "MethodOtherP0";
68 CPPClass::InnerClass* native = 68 CPPClass::InnerClass* native =
69 reinterpret_cast<CPPClass::InnerClass*>(nativePtr); 69 reinterpret_cast<CPPClass::InnerClass*>(nativePtr);
70 return native->MethodOtherP0(env, obj); 70 return native->MethodOtherP0(env, obj);
71 } 71 }
72 72
73 static jstring InnerMethod(JNIEnv* env, jobject obj, 73 static jstring InnerMethod(JNIEnv* env, jobject obj,
74 jint nativeCPPClass) { 74 jint nativeCPPClass) {
75 DCHECK(nativeCPPClass) << "InnerMethod"; 75 DCHECK(nativeCPPClass) << "InnerMethod";
76 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 76 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
77 return native->InnerMethod(env, obj).Release(); 77 return native->InnerMethod(env, obj).Release();
78 } 78 }
79 79
80 static jmethodID g_SampleForTests_javaMethod = 0; 80 static base::subtle::AtomicWord g_SampleForTests_javaMethod = 0;
81 static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj, jint foo, 81 static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj, jint foo,
82 jint bar) { 82 jint bar) {
83 /* Must call RegisterNativesImpl() */ 83 /* Must call RegisterNativesImpl() */
84 DCHECK(g_SampleForTests_clazz); 84 DCHECK(g_SampleForTests_clazz);
85 DCHECK(g_SampleForTests_javaMethod); 85 jmethodID method_id =
86 jint ret =
87 env->CallIntMethod(obj,
88 g_SampleForTests_javaMethod, foo, bar);
89 base::android::CheckException(env);
90 return ret;
91 }
92 86
joth 2012/10/04 17:59:59 nit: still have 2 spurious \n here
bulach 2012/10/04 18:58:17 Done.
93 static jmethodID g_SampleForTests_staticJavaMethod = 0; 87 base::android::MethodID::LazyGet<
94 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) { 88 base::android::MethodID::METHODTYPE_NORMAL,
95 /* Must call RegisterNativesImpl() */ 89 base::android::MethodID::EXCEPTIONCHECK_YES>(
96 DCHECK(g_SampleForTests_clazz); 90 env, g_SampleForTests_clazz,
97 DCHECK(g_SampleForTests_staticJavaMethod); 91 "javaMethod",
98 jboolean ret =
99 env->CallStaticBooleanMethod(g_SampleForTests_clazz,
100 g_SampleForTests_staticJavaMethod);
101 base::android::CheckException(env);
102 return ret;
103 }
104
105 static jmethodID g_SampleForTests_packagePrivateJavaMethod = 0;
106 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject
107 obj) {
108 /* Must call RegisterNativesImpl() */
109 DCHECK(g_SampleForTests_clazz);
110 DCHECK(g_SampleForTests_packagePrivateJavaMethod);
111
112 env->CallVoidMethod(obj,
113 g_SampleForTests_packagePrivateJavaMethod);
114 base::android::CheckException(env);
115
116 }
117
118 static jmethodID g_SampleForTests_methodThatThrowsException = 0;
119 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject
120 obj) {
121 /* Must call RegisterNativesImpl() */
122 DCHECK(g_SampleForTests_clazz);
123 DCHECK(g_SampleForTests_methodThatThrowsException);
124
125 env->CallVoidMethod(obj,
126 g_SampleForTests_methodThatThrowsException);
127
128 }
129
130 static jmethodID g_InnerClass_JavaInnerMethod = 0;
131 static jfloat Java_InnerClass_JavaInnerMethod(JNIEnv* env, jobject obj) {
132 /* Must call RegisterNativesImpl() */
133 DCHECK(g_InnerClass_clazz);
134 DCHECK(g_InnerClass_JavaInnerMethod);
135 jfloat ret =
136 env->CallFloatMethod(obj,
137 g_InnerClass_JavaInnerMethod);
138 base::android::CheckException(env);
139 return ret;
140 }
141
142 static jmethodID g_InnerClass_javaInnerFunction = 0;
143 static void Java_InnerClass_javaInnerFunction(JNIEnv* env) {
144 /* Must call RegisterNativesImpl() */
145 DCHECK(g_InnerClass_clazz);
146 DCHECK(g_InnerClass_javaInnerFunction);
147
148 env->CallStaticVoidMethod(g_InnerClass_clazz,
149 g_InnerClass_javaInnerFunction);
150 base::android::CheckException(env);
151
152 }
153
154 // Step 3: GetMethodIDs and RegisterNatives.
155 static void GetMethodIDsImpl(JNIEnv* env) {
156 g_InnerClass_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
157 base::android::GetUnscopedClass(env, kInnerClassClassPath)));
158 g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
159 base::android::GetUnscopedClass(env, kSampleForTestsClassPath)));
160 g_SampleForTests_javaMethod =
161 base::android::GetMethodID(
162 env, g_SampleForTests_clazz,
163 "javaMethod",
164 92
165 "(" 93 "("
166 "I" 94 "I"
167 "I" 95 "I"
168 ")" 96 ")"
169 "I"); 97 "I",
98 &g_SampleForTests_javaMethod);
170 99
171 g_SampleForTests_staticJavaMethod = 100 jint ret =
172 base::android::GetStaticMethodID( 101 env->CallIntMethod(obj,
173 env, g_SampleForTests_clazz, 102 method_id, foo, bar);
174 "staticJavaMethod", 103 base::android::CheckException(env);
104 return ret;
105 }
106
107 static base::subtle::AtomicWord g_SampleForTests_staticJavaMethod = 0;
108 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
109 /* Must call RegisterNativesImpl() */
110 DCHECK(g_SampleForTests_clazz);
111 jmethodID method_id =
112
113 base::android::MethodID::LazyGet<
114 base::android::MethodID::METHODTYPE_STATIC,
115 base::android::MethodID::EXCEPTIONCHECK_YES>(
116 env, g_SampleForTests_clazz,
117 "staticJavaMethod",
175 118
176 "(" 119 "("
177 ")" 120 ")"
178 "Z"); 121 "Z",
122 &g_SampleForTests_staticJavaMethod);
179 123
180 g_SampleForTests_packagePrivateJavaMethod = 124 jboolean ret =
181 base::android::GetMethodID( 125 env->CallStaticBooleanMethod(g_SampleForTests_clazz,
182 env, g_SampleForTests_clazz, 126 method_id);
183 "packagePrivateJavaMethod", 127 base::android::CheckException(env);
128 return ret;
129 }
130
131 static base::subtle::AtomicWord g_SampleForTests_packagePrivateJavaMethod = 0;
132 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject
133 obj) {
134 /* Must call RegisterNativesImpl() */
135 DCHECK(g_SampleForTests_clazz);
136 jmethodID method_id =
137
138 base::android::MethodID::LazyGet<
139 base::android::MethodID::METHODTYPE_NORMAL,
140 base::android::MethodID::EXCEPTIONCHECK_YES>(
141 env, g_SampleForTests_clazz,
142 "packagePrivateJavaMethod",
184 143
185 "(" 144 "("
186 ")" 145 ")"
187 "V"); 146 "V",
147 &g_SampleForTests_packagePrivateJavaMethod);
188 148
189 g_SampleForTests_methodThatThrowsException = 149 env->CallVoidMethod(obj,
190 base::android::GetMethodID( 150 method_id);
191 env, g_SampleForTests_clazz, 151 base::android::CheckException(env);
192 "methodThatThrowsException", 152
153 }
154
155 static base::subtle::AtomicWord g_SampleForTests_methodThatThrowsException = 0;
156 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject
157 obj) {
158 /* Must call RegisterNativesImpl() */
159 DCHECK(g_SampleForTests_clazz);
160 jmethodID method_id =
161
162 base::android::MethodID::LazyGet<
163 base::android::MethodID::METHODTYPE_NORMAL,
164 base::android::MethodID::EXCEPTIONCHECK_YES>(
165 env, g_SampleForTests_clazz,
166 "methodThatThrowsException",
193 167
194 "(" 168 "("
195 ")" 169 ")"
196 "V"); 170 "V",
171 &g_SampleForTests_methodThatThrowsException);
197 172
198 g_InnerClass_JavaInnerMethod = 173 env->CallVoidMethod(obj,
199 base::android::GetMethodID( 174 method_id);
200 env, g_InnerClass_clazz, 175
201 "JavaInnerMethod", 176 }
177
178 static base::subtle::AtomicWord g_InnerClass_JavaInnerMethod = 0;
179 static jfloat Java_InnerClass_JavaInnerMethod(JNIEnv* env, jobject obj) {
180 /* Must call RegisterNativesImpl() */
181 DCHECK(g_InnerClass_clazz);
182 jmethodID method_id =
183
184 base::android::MethodID::LazyGet<
185 base::android::MethodID::METHODTYPE_NORMAL,
186 base::android::MethodID::EXCEPTIONCHECK_YES>(
187 env, g_InnerClass_clazz,
188 "JavaInnerMethod",
202 189
203 "(" 190 "("
204 ")" 191 ")"
205 "F"); 192 "F",
193 &g_InnerClass_JavaInnerMethod);
206 194
207 g_InnerClass_javaInnerFunction = 195 jfloat ret =
208 base::android::GetStaticMethodID( 196 env->CallFloatMethod(obj,
209 env, g_InnerClass_clazz, 197 method_id);
210 "javaInnerFunction", 198 base::android::CheckException(env);
199 return ret;
200 }
201
202 static base::subtle::AtomicWord g_InnerClass_javaInnerFunction = 0;
203 static void Java_InnerClass_javaInnerFunction(JNIEnv* env) {
204 /* Must call RegisterNativesImpl() */
205 DCHECK(g_InnerClass_clazz);
206 jmethodID method_id =
207
208 base::android::MethodID::LazyGet<
209 base::android::MethodID::METHODTYPE_STATIC,
210 base::android::MethodID::EXCEPTIONCHECK_YES>(
211 env, g_InnerClass_clazz,
212 "javaInnerFunction",
211 213
212 "(" 214 "("
213 ")" 215 ")"
214 "V"); 216 "V",
217 &g_InnerClass_javaInnerFunction);
218
219 env->CallStaticVoidMethod(g_InnerClass_clazz,
220 method_id);
221 base::android::CheckException(env);
215 222
216 } 223 }
217 224
225 // Step 3: RegisterNatives.
226
218 static bool RegisterNativesImpl(JNIEnv* env) { 227 static bool RegisterNativesImpl(JNIEnv* env) {
219 GetMethodIDsImpl(env);
220 228
229 g_InnerClass_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
230 base::android::GetUnscopedClass(env, kInnerClassClassPath)));
231 g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
232 base::android::GetUnscopedClass(env, kSampleForTestsClassPath)));
221 static const JNINativeMethod kMethodsInnerClass[] = { 233 static const JNINativeMethod kMethodsInnerClass[] = {
222 { "nativeInnerFunction", 234 { "nativeInnerFunction",
223 "(" 235 "("
224 ")" 236 ")"
225 "I", reinterpret_cast<void*>(InnerFunction) }, 237 "I", reinterpret_cast<void*>(InnerFunction) },
226 { "nativeInnerMethod", 238 { "nativeInnerMethod",
227 "(" 239 "("
228 "I" 240 "I"
229 ")" 241 ")"
230 "Ljava/lang/String;", reinterpret_cast<void*>(InnerMethod) }, 242 "Ljava/lang/String;", reinterpret_cast<void*>(InnerMethod) },
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 296 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
285 return false; 297 return false;
286 } 298 }
287 299
288 return true; 300 return true;
289 } 301 }
290 } // namespace android 302 } // namespace android
291 } // namespace base 303 } // namespace base
292 304
293 #endif // org_chromium_example_jni_generator_SampleForTests_JNI 305 #endif // org_chromium_example_jni_generator_SampleForTests_JNI
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698