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/native_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  { "NativeViewportAndroid", mojo::services::NativeViewportAndroid::Register },
19};
20
21bool RegisterMojoJni(JNIEnv* env) {
22  return RegisterNativeMethods(env, kMojoRegisteredMethods,
23                               arraysize(kMojoRegisteredMethods));
24}
25
26}  // namespace
27
28// This is called by the VM when the shared library is first loaded.
29JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
30  base::android::InitVM(vm);
31  JNIEnv* env = base::android::AttachCurrentThread();
32
33  if (!base::android::RegisterLibraryLoaderEntryHook(env))
34    return -1;
35
36  if (!base::android::RegisterJni(env))
37    return -1;
38
39  if (!net::android::RegisterJni(env))
40    return -1;
41
42  if (!RegisterMojoJni(env))
43    return -1;
44
45  return JNI_VERSION_1_4;
46}
47