| Index: base/android/jni_android.cc
|
| diff --git a/base/android/jni_android.cc b/base/android/jni_android.cc
|
| index 02e264c05703494444a23bae5fabc8875e7ec1f2..c58b6810805bb253dc75420a8a1b5293bfff7f09 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,26 @@ base::LazyInstance<base::ThreadLocalPointer<void>>::Leaky
|
| namespace base {
|
| namespace android {
|
|
|
| -bool IsManualJniRegistrationDisabled() {
|
| - return g_disable_manual_jni_registration;
|
| +void InitJniRegistrationType(JNIEnv* env) {
|
| + 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() {
|
|
|