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

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

Issue 9466024: Fixes JNI Bindings & startup perf. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove static for anon namespaced strings Created 8 years, 9 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 | « no previous file | 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 (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 5
6 // This file is autogenerated by 6 // This file is autogenerated by
7 // base/android/jni_generator/jni_generator_tests.py 7 // base/android/jni_generator/jni_generator_tests.py
8 // For 8 // For
9 // org/chromium/example/jni_generator/SampleForTests 9 // org/chromium/example/jni_generator/SampleForTests
10 10
11 #ifndef org_chromium_example_jni_generator_SampleForTests_JNI 11 #ifndef org_chromium_example_jni_generator_SampleForTests_JNI
12 #define org_chromium_example_jni_generator_SampleForTests_JNI 12 #define org_chromium_example_jni_generator_SampleForTests_JNI
13 13
14 #include <jni.h> 14 #include <jni.h>
15 15
16 #include "base/android/jni_android.h" 16 #include "base/android/jni_android.h"
17 #include "base/android/scoped_java_ref.h" 17 #include "base/android/scoped_java_ref.h"
18 #include "base/basictypes.h" 18 #include "base/basictypes.h"
19 #include "base/logging.h" 19 #include "base/logging.h"
20 20
21 using base::android::ScopedJavaLocalRef; 21 using base::android::ScopedJavaLocalRef;
22 22
23 // Step 1: forward declarations. 23 // Step 1: forward declarations.
24 namespace { 24 namespace {
25 const char* const kInnerClassClassPath = 25 const char kInnerClassClassPath[] =
26 "org/chromium/example/jni_generator/SampleForTests$InnerClass"; 26 "org/chromium/example/jni_generator/SampleForTests$InnerClass";
27 const char* const kSampleForTestsClassPath = 27 const char kSampleForTestsClassPath[] =
28 "org/chromium/example/jni_generator/SampleForTests"; 28 "org/chromium/example/jni_generator/SampleForTests";
29 // Leaking this JavaRef as we cannot use LazyInstance from some threads. 29 // Leaking this jclass as we cannot use LazyInstance from some threads.
30 base::android::ScopedJavaGlobalRef<jclass>& 30 jclass g_InnerClass_clazz = NULL;
31 g_InnerClass_clazz = 31 // Leaking this jclass as we cannot use LazyInstance from some threads.
32 *(new base::android::ScopedJavaGlobalRef<jclass>()); 32 jclass g_SampleForTests_clazz = NULL;
33 // Leaking this JavaRef as we cannot use LazyInstance from some threads.
34 base::android::ScopedJavaGlobalRef<jclass>&
35 g_SampleForTests_clazz =
36 *(new base::android::ScopedJavaGlobalRef<jclass>());
37 } // namespace 33 } // namespace
38 34
39 static jint Init(JNIEnv* env, jobject obj); 35 static jint Init(JNIEnv* env, jobject obj);
40 36
41 37
42 static jdouble GetDoubleFunction(JNIEnv* env, jobject obj); 38 static jdouble GetDoubleFunction(JNIEnv* env, jobject obj);
43 39
44 40
45 static jfloat GetFloatFunction(JNIEnv* env, jclass clazz); 41 static jfloat GetFloatFunction(JNIEnv* env, jclass clazz);
46 42
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 DCHECK(nativeCPPClass) << "InnerMethod"; 79 DCHECK(nativeCPPClass) << "InnerMethod";
84 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass); 80 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
85 return native->InnerMethod(env, obj).Release(); 81 return native->InnerMethod(env, obj).Release();
86 } 82 }
87 83
88 84
89 static jmethodID g_SampleForTests_javaMethod = 0; 85 static jmethodID g_SampleForTests_javaMethod = 0;
90 static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj, jint foo, 86 static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj, jint foo,
91 jint bar) { 87 jint bar) {
92 /* Must call RegisterNativesImpl() */ 88 /* Must call RegisterNativesImpl() */
93 DCHECK(!g_SampleForTests_clazz.is_null()); 89 DCHECK(g_SampleForTests_clazz);
94 DCHECK(g_SampleForTests_javaMethod); 90 DCHECK(g_SampleForTests_javaMethod);
95 jint ret = 91 jint ret =
96 env->CallIntMethod(obj, 92 env->CallIntMethod(obj,
97 g_SampleForTests_javaMethod, foo, bar); 93 g_SampleForTests_javaMethod, foo, bar);
98 base::android::CheckException(env); 94 base::android::CheckException(env);
99 return ret; 95 return ret;
100 } 96 }
101 97
102 static jmethodID g_SampleForTests_staticJavaMethod = 0; 98 static jmethodID g_SampleForTests_staticJavaMethod = 0;
103 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) { 99 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
104 /* Must call RegisterNativesImpl() */ 100 /* Must call RegisterNativesImpl() */
105 DCHECK(!g_SampleForTests_clazz.is_null()); 101 DCHECK(g_SampleForTests_clazz);
106 DCHECK(g_SampleForTests_staticJavaMethod); 102 DCHECK(g_SampleForTests_staticJavaMethod);
107 jboolean ret = 103 jboolean ret =
108 env->CallStaticBooleanMethod(g_SampleForTests_clazz.obj(), 104 env->CallStaticBooleanMethod(g_SampleForTests_clazz,
109 g_SampleForTests_staticJavaMethod); 105 g_SampleForTests_staticJavaMethod);
110 base::android::CheckException(env); 106 base::android::CheckException(env);
111 return ret; 107 return ret;
112 } 108 }
113 109
114 static jmethodID g_SampleForTests_packagePrivateJavaMethod = 0; 110 static jmethodID g_SampleForTests_packagePrivateJavaMethod = 0;
115 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject 111 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, jobject
116 obj) { 112 obj) {
117 /* Must call RegisterNativesImpl() */ 113 /* Must call RegisterNativesImpl() */
118 DCHECK(!g_SampleForTests_clazz.is_null()); 114 DCHECK(g_SampleForTests_clazz);
119 DCHECK(g_SampleForTests_packagePrivateJavaMethod); 115 DCHECK(g_SampleForTests_packagePrivateJavaMethod);
120 116
121 env->CallVoidMethod(obj, 117 env->CallVoidMethod(obj,
122 g_SampleForTests_packagePrivateJavaMethod); 118 g_SampleForTests_packagePrivateJavaMethod);
123 base::android::CheckException(env); 119 base::android::CheckException(env);
124 120
125 } 121 }
126 122
127 static jmethodID g_SampleForTests_methodThatThrowsException = 0; 123 static jmethodID g_SampleForTests_methodThatThrowsException = 0;
128 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject 124 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, jobject
129 obj) { 125 obj) {
130 /* Must call RegisterNativesImpl() */ 126 /* Must call RegisterNativesImpl() */
131 DCHECK(!g_SampleForTests_clazz.is_null()); 127 DCHECK(g_SampleForTests_clazz);
132 DCHECK(g_SampleForTests_methodThatThrowsException); 128 DCHECK(g_SampleForTests_methodThatThrowsException);
133 129
134 env->CallVoidMethod(obj, 130 env->CallVoidMethod(obj,
135 g_SampleForTests_methodThatThrowsException); 131 g_SampleForTests_methodThatThrowsException);
136 132
137 133
138 } 134 }
139 135
140 static jmethodID g_InnerClass_JavaInnerMethod = 0; 136 static jmethodID g_InnerClass_JavaInnerMethod = 0;
141 static jfloat Java_InnerClass_JavaInnerMethod(JNIEnv* env, jobject obj) { 137 static jfloat Java_InnerClass_JavaInnerMethod(JNIEnv* env, jobject obj) {
142 /* Must call RegisterNativesImpl() */ 138 /* Must call RegisterNativesImpl() */
143 DCHECK(!g_InnerClass_clazz.is_null()); 139 DCHECK(g_InnerClass_clazz);
144 DCHECK(g_InnerClass_JavaInnerMethod); 140 DCHECK(g_InnerClass_JavaInnerMethod);
145 jfloat ret = 141 jfloat ret =
146 env->CallFloatMethod(obj, 142 env->CallFloatMethod(obj,
147 g_InnerClass_JavaInnerMethod); 143 g_InnerClass_JavaInnerMethod);
148 base::android::CheckException(env); 144 base::android::CheckException(env);
149 return ret; 145 return ret;
150 } 146 }
151 147
152 static jmethodID g_InnerClass_javaInnerFunction = 0; 148 static jmethodID g_InnerClass_javaInnerFunction = 0;
153 static void Java_InnerClass_javaInnerFunction(JNIEnv* env) { 149 static void Java_InnerClass_javaInnerFunction(JNIEnv* env) {
154 /* Must call RegisterNativesImpl() */ 150 /* Must call RegisterNativesImpl() */
155 DCHECK(!g_InnerClass_clazz.is_null()); 151 DCHECK(g_InnerClass_clazz);
156 DCHECK(g_InnerClass_javaInnerFunction); 152 DCHECK(g_InnerClass_javaInnerFunction);
157 153
158 env->CallStaticVoidMethod(g_InnerClass_clazz.obj(), 154 env->CallStaticVoidMethod(g_InnerClass_clazz,
159 g_InnerClass_javaInnerFunction); 155 g_InnerClass_javaInnerFunction);
160 base::android::CheckException(env); 156 base::android::CheckException(env);
161 157
162 } 158 }
163 159
164 // Step 3: GetMethodIDs and RegisterNatives. 160 // Step 3: GetMethodIDs and RegisterNatives.
165 161
166 162
167 static void GetMethodIDsImpl(JNIEnv* env) { 163 static void GetMethodIDsImpl(JNIEnv* env) {
168 g_InnerClass_clazz.Reset( 164 g_InnerClass_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
169 base::android::GetClass(env, kInnerClassClassPath)); 165 base::android::GetUnscopedClass(env, kInnerClassClassPath)));
170 g_SampleForTests_clazz.Reset( 166 g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
171 base::android::GetClass(env, kSampleForTestsClassPath)); 167 base::android::GetUnscopedClass(env, kSampleForTestsClassPath)));
172 g_SampleForTests_javaMethod = base::android::GetMethodID( 168 g_SampleForTests_javaMethod =
173 env, g_SampleForTests_clazz, 169 base::android::GetMethodID(
174 "javaMethod", 170 env, g_SampleForTests_clazz,
171 "javaMethod",
175 172
176 "(" 173 "("
177 "I" 174 "I"
178 "I" 175 "I"
179 ")" 176 ")"
180 "I"); 177 "I");
181 178
182 g_SampleForTests_staticJavaMethod = base::android::GetStaticMethodID( 179 g_SampleForTests_staticJavaMethod =
183 env, g_SampleForTests_clazz, 180 base::android::GetStaticMethodID(
184 "staticJavaMethod", 181 env, g_SampleForTests_clazz,
182 "staticJavaMethod",
185 183
186 "(" 184 "("
187 ")" 185 ")"
188 "Z"); 186 "Z");
189 187
190 g_SampleForTests_packagePrivateJavaMethod = base::android::GetMethodID( 188 g_SampleForTests_packagePrivateJavaMethod =
191 env, g_SampleForTests_clazz, 189 base::android::GetMethodID(
192 "packagePrivateJavaMethod", 190 env, g_SampleForTests_clazz,
191 "packagePrivateJavaMethod",
193 192
194 "(" 193 "("
195 ")" 194 ")"
196 "V"); 195 "V");
197 196
198 g_SampleForTests_methodThatThrowsException = base::android::GetMethodID( 197 g_SampleForTests_methodThatThrowsException =
199 env, g_SampleForTests_clazz, 198 base::android::GetMethodID(
200 "methodThatThrowsException", 199 env, g_SampleForTests_clazz,
200 "methodThatThrowsException",
201 201
202 "(" 202 "("
203 ")" 203 ")"
204 "V"); 204 "V");
205 205
206 g_InnerClass_JavaInnerMethod = base::android::GetMethodID( 206 g_InnerClass_JavaInnerMethod =
207 env, g_InnerClass_clazz, 207 base::android::GetMethodID(
208 "JavaInnerMethod", 208 env, g_InnerClass_clazz,
209 "JavaInnerMethod",
209 210
210 "(" 211 "("
211 ")" 212 ")"
212 "F"); 213 "F");
213 214
214 g_InnerClass_javaInnerFunction = base::android::GetStaticMethodID( 215 g_InnerClass_javaInnerFunction =
215 env, g_InnerClass_clazz, 216 base::android::GetStaticMethodID(
216 "javaInnerFunction", 217 env, g_InnerClass_clazz,
218 "javaInnerFunction",
217 219
218 "(" 220 "("
219 ")" 221 ")"
220 "V"); 222 "V");
221 223
222 } 224 }
223 225
224 static bool RegisterNativesImpl(JNIEnv* env) { 226 static bool RegisterNativesImpl(JNIEnv* env) {
225 GetMethodIDsImpl(env); 227 GetMethodIDsImpl(env);
226 228
227 static const JNINativeMethod kMethodsInnerClass[] = { 229 static const JNINativeMethod kMethodsInnerClass[] = {
228 { "nativeInnerFunction", 230 { "nativeInnerFunction",
229 "(" 231 "("
230 ")" 232 ")"
231 "I", reinterpret_cast<void*>(InnerFunction) }, 233 "I", reinterpret_cast<void*>(InnerFunction) },
232 { "nativeInnerMethod", 234 { "nativeInnerMethod",
233 "(" 235 "("
234 "I" 236 "I"
235 ")" 237 ")"
236 "Ljava/lang/String;", reinterpret_cast<void*>(InnerMethod) }, 238 "Ljava/lang/String;", reinterpret_cast<void*>(InnerMethod) },
237 }; 239 };
238 const int kMethodsInnerClassSize = arraysize(kMethodsInnerClass); 240 const int kMethodsInnerClassSize = arraysize(kMethodsInnerClass);
239 241
240 if (env->RegisterNatives(g_InnerClass_clazz.obj(), 242 if (env->RegisterNatives(g_InnerClass_clazz,
241 kMethodsInnerClass, 243 kMethodsInnerClass,
242 kMethodsInnerClassSize) < 0) { 244 kMethodsInnerClassSize) < 0) {
243 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 245 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
244 return false; 246 return false;
245 } 247 }
246 248
247 static const JNINativeMethod kMethodsSampleForTests[] = { 249 static const JNINativeMethod kMethodsSampleForTests[] = {
248 { "nativeInit", 250 { "nativeInit",
249 "(" 251 "("
250 ")" 252 ")"
(...skipping 26 matching lines...) Expand all
277 ")" 279 ")"
278 "I", reinterpret_cast<void*>(Method) }, 280 "I", reinterpret_cast<void*>(Method) },
279 { "nativeMethodOtherP0", 281 { "nativeMethodOtherP0",
280 "(" 282 "("
281 "I" 283 "I"
282 ")" 284 ")"
283 "D", reinterpret_cast<void*>(MethodOtherP0) }, 285 "D", reinterpret_cast<void*>(MethodOtherP0) },
284 }; 286 };
285 const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests); 287 const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests);
286 288
287 if (env->RegisterNatives(g_SampleForTests_clazz.obj(), 289 if (env->RegisterNatives(g_SampleForTests_clazz,
288 kMethodsSampleForTests, 290 kMethodsSampleForTests,
289 kMethodsSampleForTestsSize) < 0) { 291 kMethodsSampleForTestsSize) < 0) {
290 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 292 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
291 return false; 293 return false;
292 } 294 }
293 295
294 return true; 296 return true;
295 } 297 }
296 298
297 #endif // org_chromium_example_jni_generator_SampleForTests_JNI 299 #endif // org_chromium_example_jni_generator_SampleForTests_JNI
OLDNEW
« no previous file with comments | « no previous file | base/android/jni_generator/jni_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698