Chromium Code Reviews| Index: base/android/jni_android.cc |
| diff --git a/base/android/jni_android.cc b/base/android/jni_android.cc |
| index 02e264c05703494444a23bae5fabc8875e7ec1f2..a1fb09df5b197cbede3c1b19311c73e5349590b9 100644 |
| --- a/base/android/jni_android.cc |
| +++ b/base/android/jni_android.cc |
| @@ -11,6 +11,7 @@ |
| #include "base/android/build_info.h" |
| #include "base/android/jni_string.h" |
| #include "base/android/jni_utils.h" |
| +#include "base/android/library_loader/library_loader_hooks.h" |
| #include "base/debug/debugging_flags.h" |
| #include "base/lazy_instance.h" |
| #include "base/logging.h" |
| @@ -21,7 +22,8 @@ using base::android::GetClass; |
| using base::android::MethodID; |
| using base::android::ScopedJavaLocalRef; |
| -bool g_disable_manual_jni_registration = false; |
| +base::android::JniRegistrationType g_jni_registration_type = |
| + base::android::UNINITIALIZED_JNI_REGISTRATION; |
| JavaVM* g_jvm = NULL; |
| base::LazyInstance<base::android::ScopedJavaGlobalRef<jobject> >::Leaky |
| @@ -38,13 +40,30 @@ base::LazyInstance<base::ThreadLocalPointer<void>>::Leaky |
| namespace base { |
| namespace android { |
| -bool IsManualJniRegistrationDisabled() { |
| - return g_disable_manual_jni_registration; |
| +void InitJniRegistrationType(JNIEnv* env, bool force_registration) { |
|
Torne
2017/01/12 13:48:06
I assume you have force_registration here to handl
|
| + if (force_registration) { |
| + g_jni_registration_type = ALL_JNI_REGISTRATION; |
| + return; |
| + } |
| + DCHECK(g_jni_registration_type == UNINITIALIZED_JNI_REGISTRATION); |
| + switch (GetLibraryProcessType(env)) { |
| + case PROCESS_WEBVIEW: |
| + case PROCESS_WEBVIEW_CHILD: |
| + g_jni_registration_type = NO_JNI_REGISTRATION; |
| + break; |
| + case PROCESS_BROWSER: |
| + g_jni_registration_type = ALL_JNI_REGISTRATION; |
| + break; |
| + case PROCESS_CHILD: |
| + g_jni_registration_type = SELECTIVE_JNI_REGISTRATION; |
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| } |
| -void DisableManualJniRegistration() { |
| - DCHECK(!g_disable_manual_jni_registration); |
| - g_disable_manual_jni_registration = true; |
| +JniRegistrationType GetJniRegistrationType() { |
| + return g_jni_registration_type; |
| } |
| JNIEnv* AttachCurrentThread() { |