Index: chromecast/app/android/cast_jni_loader.cc |
diff --git a/chromecast/app/android/cast_jni_loader.cc b/chromecast/app/android/cast_jni_loader.cc |
index ed7f6ee59a01e385dca4936204b3a4971f590970..d2cc9c75edc4b87f52adfe540c831ddc107e74f0 100644 |
--- a/chromecast/app/android/cast_jni_loader.cc |
+++ b/chromecast/app/android/cast_jni_loader.cc |
@@ -3,34 +3,42 @@ |
// found in the LICENSE file. |
#include "base/android/jni_android.h" |
-#include "base/android/jni_registrar.h" |
-#include "base/android/library_loader/library_loader_hooks.h" |
-#include "base/basictypes.h" |
-#include "base/debug/debugger.h" |
-#include "base/logging.h" |
+#include "base/android/jni_onload_delegate.h" |
#include "chromecast/android/cast_jni_registrar.h" |
#include "chromecast/android/platform_jni_loader.h" |
#include "chromecast/app/cast_main_delegate.h" |
-#include "content/public/app/android_library_loader_hooks.h" |
+#include "content/public/app/content_jni_onload.h" |
#include "content/public/app/content_main.h" |
#include "content/public/browser/android/compositor.h" |
-// This is called by the VM when the shared library is first loaded. |
-JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { |
- base::android::SetLibraryLoadedHook(&content::LibraryLoaded); |
- base::android::InitVM(vm); |
- JNIEnv* env = base::android::AttachCurrentThread(); |
+namespace { |
- if (!base::android::RegisterLibraryLoaderEntryHook(env)) return -1; |
+class CastJNIOnLoadDelegate : public base::android::JNIOnLoadDelegate { |
+ public: |
+ bool RegisterJNI(JNIEnv* env) override { |
+ // To be called only from the UI thread. If loading the library is done on |
+ // a separate thread, this should be moved elsewhere. |
+ if (!chromecast::android::RegisterJni(env)) |
+ return false; |
+ // Allow platform-specific implementations to perform more JNI registration. |
+ if (!chromecast::android::PlatformRegisterJni(env)) |
+ return false; |
+ return true; |
+ } |
- // To be called only from the UI thread. If loading the library is done on |
- // a separate thread, this should be moved elsewhere. |
- if (!chromecast::android::RegisterJni(env)) return -1; |
- // Allow platform-specific implementations to perform more JNI registration. |
- if (!chromecast::android::PlatformRegisterJni(env)) return -1; |
+ bool Init() override { |
+ content::Compositor::Initialize(); |
+ content::SetContentMainDelegate(new chromecast::shell::CastMainDelegate); |
+ return true; |
+ } |
+}; |
- content::Compositor::Initialize(); |
- content::SetContentMainDelegate(new chromecast::shell::CastMainDelegate); |
+} // namespace |
+// This is called by the VM when the shared library is first loaded. |
+JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { |
+ CastJNIOnLoadDelegate delegate; |
+ if (!content::android::OnJNIOnLoad(vm, &delegate)) |
+ return -1; |
return JNI_VERSION_1_4; |
} |