| 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;
|
| }
|
|
|