1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/android/base_jni_registrar.h"
6#include "base/android/jni_android.h"
7#include "base/android/jni_registrar.h"
8#include "base/android/library_loader/library_loader_hooks.h"
9#include "base/logging.h"
10#include "mojo/services/native_viewport/platform_viewport_android.h"
11#include "mojo/shell/android/mojo_main.h"
12#include "net/android/net_jni_registrar.h"
13
14namespace {
15
16base::android::RegistrationMethod kMojoRegisteredMethods[] = {
17  { "MojoMain", mojo::RegisterMojoMain },
18  { "PlatformViewportAndroid",
19     mojo::PlatformViewportAndroid::Register },
20};
21
22bool RegisterMojoJni(JNIEnv* env) {
23  return RegisterNativeMethods(env, kMojoRegisteredMethods,
24                               arraysize(kMojoRegisteredMethods));
25}
26
27}  // namespace
28
29// This is called by the VM when the shared library is first loaded.
30JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
31  base::android::InitVM(vm);
32  JNIEnv* env = base::android::AttachCurrentThread();
33
34  if (!base::android::RegisterLibraryLoaderEntryHook(env))
35    return -1;
36
37  if (!base::android::RegisterJni(env))
38    return -1;
39
40  if (!net::android::RegisterJni(env))
41    return -1;
42
43  if (!RegisterMojoJni(env))
44    return -1;
45
46  return JNI_VERSION_1_4;
47}
48