diff options
author | torne <torne@chromium.org> | 2015-09-04 04:16:35 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-04 11:17:08 +0000 |
commit | 89cc5d913e36029273a916f27d154967af3900d6 (patch) | |
tree | f4deb74691a281a98f3065fe0c2e4d5868b6b213 /content/app | |
parent | af43c88d506f641363b9d6a36a55bffbf2104003 (diff) | |
download | chromium_src-89cc5d913e36029273a916f27d154967af3900d6.zip chromium_src-89cc5d913e36029273a916f27d154967af3900d6.tar.gz chromium_src-89cc5d913e36029273a916f27d154967af3900d6.tar.bz2 |
jni_generator: Pass object parameters as JavaParamRef.
Pass all object parameters to JNI functions in JavaParamRef<> wrappers.
This new type behaves like ScopedJavaLocalRef, but does not free the
local reference when it goes out of scope, since the JVM does not allow
method parameters to be freed and this causes a warning.
This CL only changes the implementation of the generator and the
signatures of JNI functions which take JavaParamRef arguments; the
minimum required to allow it to compile and work. An implicit cast from
JavaParamRef<T> to T is defined, to allow function bodies to remain
unaltered. These will be migrated over future CLs and the cast removed.
BUG=506850
Review URL: https://codereview.chromium.org/1312153003
Cr-Commit-Position: refs/heads/master@{#347379}
Diffstat (limited to 'content/app')
-rw-r--r-- | content/app/android/child_process_service.cc | 10 | ||||
-rw-r--r-- | content/app/android/content_main.cc | 6 |
2 files changed, 9 insertions, 7 deletions
diff --git a/content/app/android/child_process_service.cc b/content/app/android/child_process_service.cc index d3e6a1b..68bf0c0 100644 --- a/content/app/android/child_process_service.cc +++ b/content/app/android/child_process_service.cc @@ -149,7 +149,7 @@ void InternalInitChildProcess(JNIEnv* env, } // namespace <anonymous> void RegisterGlobalFileDescriptor(JNIEnv* env, - jclass clazz, + const JavaParamRef<jclass>& clazz, jint id, jint fd, jlong offset, @@ -159,14 +159,14 @@ void RegisterGlobalFileDescriptor(JNIEnv* env, } void InitChildProcess(JNIEnv* env, - jclass clazz, - jobject service, + const JavaParamRef<jclass>& clazz, + const JavaParamRef<jobject>& service, jint cpu_count, jlong cpu_features) { InternalInitChildProcess(env, clazz, service, cpu_count, cpu_features); } -void ExitChildProcess(JNIEnv* env, jclass clazz) { +void ExitChildProcess(JNIEnv* env, const JavaParamRef<jclass>& clazz) { VLOG(0) << "ChildProcessService: Exiting child process."; base::android::LibraryLoaderExitHook(); _exit(0); @@ -176,7 +176,7 @@ bool RegisterChildProcessService(JNIEnv* env) { return RegisterNativesImpl(env); } -void ShutdownMainThread(JNIEnv* env, jobject obj) { +void ShutdownMainThread(JNIEnv* env, const JavaParamRef<jobject>& obj) { ChildThreadImpl::ShutdownThread(); } diff --git a/content/app/android/content_main.cc b/content/app/android/content_main.cc index 13f20b6..986474f 100644 --- a/content/app/android/content_main.cc +++ b/content/app/android/content_main.cc @@ -28,13 +28,15 @@ LazyInstance<scoped_ptr<ContentMainDelegate> > g_content_main_delegate = } // namespace -static void InitApplicationContext(JNIEnv* env, jclass clazz, jobject context) { +static void InitApplicationContext(JNIEnv* env, + const JavaParamRef<jclass>& clazz, + const JavaParamRef<jobject>& context) { base::android::ScopedJavaLocalRef<jobject> scoped_context( env, env->NewLocalRef(context)); base::android::InitApplicationContext(env, scoped_context); } -static jint Start(JNIEnv* env, jclass clazz) { +static jint Start(JNIEnv* env, const JavaParamRef<jclass>& clazz) { TRACE_EVENT0("startup", "content::Start"); // On Android we can have multiple requests to start the browser in process |