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

Unified Diff: base/android/jni_generator/golden_sample_for_tests_jni.h

Issue 2154293002: jni_generator: handle inner class natives properly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForTests.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/android/jni_generator/golden_sample_for_tests_jni.h
diff --git a/base/android/jni_generator/golden_sample_for_tests_jni.h b/base/android/jni_generator/golden_sample_for_tests_jni.h
index e982609c7e003c4e7e527e92a9115fb7cacec0c3..cb8ade213ab5b79b26ad519ee4e3ba18c0ed607e 100644
--- a/base/android/jni_generator/golden_sample_for_tests_jni.h
+++ b/base/android/jni_generator/golden_sample_for_tests_jni.h
@@ -20,6 +20,8 @@
namespace {
const char kInnerStructAClassPath[] =
"org/chromium/example/jni_generator/SampleForTests$InnerStructA";
+const char kInnerClassClassPath[] =
+ "org/chromium/example/jni_generator/SampleForTests$InnerClass";
const char kSampleForTestsClassPath[] =
"org/chromium/example/jni_generator/SampleForTests";
const char kInnerStructBClassPath[] =
@@ -28,6 +30,9 @@ const char kInnerStructBClassPath[] =
jclass g_InnerStructA_clazz = NULL;
#define InnerStructA_clazz(env) g_InnerStructA_clazz
// Leaking this jclass as we cannot use LazyInstance from some threads.
+jclass g_InnerClass_clazz = NULL;
+#define InnerClass_clazz(env) g_InnerClass_clazz
+// Leaking this jclass as we cannot use LazyInstance from some threads.
jclass g_SampleForTests_clazz = NULL;
#define SampleForTests_clazz(env) g_SampleForTests_clazz
// Leaking this jclass as we cannot use LazyInstance from some threads.
@@ -155,6 +160,15 @@ static jstring
jcaller)).Release();
}
+static jint GetInnerIntFunction(JNIEnv* env, const JavaParamRef<jclass>&
+ jcaller);
+
+static jint
+ Java_org_chromium_example_jni_1generator_SampleForTests_00024InnerClass_nativeGetInnerIntFunction(JNIEnv*
+ env, jclass jcaller) {
+ return GetInnerIntFunction(env, JavaParamRef<jclass>(env, jcaller));
+}
+
static base::subtle::AtomicWord g_SampleForTests_javaMethod = 0;
static jint Java_SampleForTests_javaMethod(JNIEnv* env, jobject obj,
JniIntWrapper foo,
@@ -375,6 +389,15 @@ static ScopedJavaLocalRef<jstring> Java_InnerStructB_getValue(JNIEnv* env,
// Step 3: RegisterNatives.
+static const JNINativeMethod kMethodsInnerClass[] = {
+ { "nativeGetInnerIntFunction",
+"("
+")"
+"I",
+ reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTests_00024InnerClass_nativeGetInnerIntFunction)
+ },
+};
+
static const JNINativeMethod kMethodsSampleForTests[] = {
{ "nativeInit",
"("
@@ -457,11 +480,23 @@ static bool RegisterNativesImpl(JNIEnv* env) {
g_InnerStructA_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
base::android::GetClass(env, kInnerStructAClassPath).obj()));
+ g_InnerClass_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetClass(env, kInnerClassClassPath).obj()));
g_SampleForTests_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
base::android::GetClass(env, kSampleForTestsClassPath).obj()));
g_InnerStructB_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
base::android::GetClass(env, kInnerStructBClassPath).obj()));
+ const int kMethodsInnerClassSize = arraysize(kMethodsInnerClass);
+
+ if (env->RegisterNatives(InnerClass_clazz(env),
+ kMethodsInnerClass,
+ kMethodsInnerClassSize) < 0) {
+ jni_generator::HandleRegistrationError(
+ env, InnerClass_clazz(env), __FILE__);
+ return false;
+ }
+
const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests);
if (env->RegisterNatives(SampleForTests_clazz(env),
« no previous file with comments | « no previous file | base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForTests.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698