Index: chrome/browser/android/chrome_entry_point.cc |
diff --git a/chrome/browser/android/chrome_entry_point.cc b/chrome/browser/android/chrome_entry_point.cc |
index 5bc9215ded3a07c1f0967cfd1f5461d7ffd50081..4a540518ea52b1de61bebefb9d50edf12251fa6c 100644 |
--- a/chrome/browser/android/chrome_entry_point.cc |
+++ b/chrome/browser/android/chrome_entry_point.cc |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
#include "base/android/jni_android.h" |
+#include "base/android/jni_utils.h" |
#include "base/android/library_loader/library_loader_hooks.h" |
#include "base/bind.h" |
#include "chrome/app/android/chrome_jni_onload.h" |
@@ -25,6 +26,15 @@ bool NativeInit() { |
// This is called by the VM when the shared library is first loaded. |
JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { |
+ // By default, all JNI methods are registered. However, since render processes |
+ // don't need very much Java code, we enable selective JNI registration on the |
+ // Java side and only register a subset of JNI methods. |
+ base::android::InitVM(vm); |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ if (base::android::isSelectiveJniRegistrationEnabled(env)) { |
+ base::android::SetJniRegistrationType( |
+ base::android::SELECTIVE_JNI_REGISTRATION); |
+ } |
if (!android::OnJNIOnLoadRegisterJNI(vm, base::Bind(&RegisterJNI))) { |
return -1; |
} |