Index: content/shell/android/shell_library_loader.cc |
diff --git a/content/shell/android/shell_library_loader.cc b/content/shell/android/shell_library_loader.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e447d7e729bbbd013f31bac1ab5a41bda22ba14b |
--- /dev/null |
+++ b/content/shell/android/shell_library_loader.cc |
@@ -0,0 +1,37 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/basictypes.h" |
+#include "base/android/jni_android.h" |
+#include "base/android/jni_registrar.h" |
+#include "content/public/browser/android_library_loader_hooks.h" |
+#include "content/shell/shell_main_delegate.h" |
+#include "content/shell/android/shell_manager.h" |
+#include "content/shell/android/shell_view.h" |
+ |
+static base::android::RegistrationMethod kRegistrationMethods[] = { |
+ { "ShellManager", content::RegisterShellManager }, |
+ { "ShellView", content::ShellView::Register }, |
+}; |
+ |
+// This is called by the VM when the shared library is first loaded. |
+JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { |
+ base::android::InitVM(vm); |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ if (!RegisterLibraryLoaderEntryHook(env)) { |
+ return -1; |
+ } |
+ |
+ // To be called only from the UI thread. If loading the library is done on |
+ // a separate thread, this should be moved elsewhere. |
+ if (!base::android::RegisterNativeMethods(env, kRegistrationMethods, |
+ arraysize(kRegistrationMethods))) |
+ return -1; |
+ |
+ // TODO(tedchoc): Set this to the main delegate once the Android specific |
+ // browser process initialization gets checked in. |
+ new ShellMainDelegate(); |
+ |
+ return JNI_VERSION_1_4; |
+} |