Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: blimp/client/app/android/blimp_library_loader.cc

Issue 2620303004: Remove JNI onload callback vector construction in favour of direct calls. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "blimp/client/app/android/blimp_library_loader.h" 5 #include "blimp/client/app/android/blimp_library_loader.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/android/base_jni_onload.h" 9 #include "base/android/base_jni_onload.h"
10 #include "base/android/base_jni_registrar.h" 10 #include "base/android/base_jni_registrar.h"
11 #include "base/android/jni_android.h" 11 #include "base/android/jni_android.h"
12 #include "base/android/library_loader/library_loader_hooks.h" 12 #include "base/android/library_loader/library_loader_hooks.h"
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
15 #include "blimp/client/app/android/blimp_app_jni_registrar.h" 15 #include "blimp/client/app/android/blimp_app_jni_registrar.h"
16 #include "blimp/client/app/blimp_startup.h" 16 #include "blimp/client/app/blimp_startup.h"
17 #include "blimp/client/public/android/blimp_jni_registrar.h" 17 #include "blimp/client/public/android/blimp_jni_registrar.h"
18 #include "jni/BlimpLibraryLoader_jni.h" 18 #include "jni/BlimpLibraryLoader_jni.h"
19 #include "net/android/net_jni_registrar.h" 19 #include "net/android/net_jni_registrar.h"
20 #include "ui/android/ui_android_jni_registrar.h" 20 #include "ui/android/ui_android_jni_registrar.h"
21 #include "ui/gl/gl_surface.h" 21 #include "ui/gl/gl_surface.h"
22 22
23 namespace { 23 namespace {
24 24
25 bool OnLibrariesLoaded(JNIEnv* env, jclass clazz) { 25 bool OnLibrariesLoaded(JNIEnv* env, jclass clazz) {
26 blimp::client::InitializeLogging(); 26 blimp::client::InitializeLogging();
27 return true; 27 return true;
28 } 28 }
29 29
30 bool OnJniInitializationComplete() { 30 bool NativeInit() {
31 if (!base::android::OnJNIOnLoadInit())
32 return false;
33
31 base::android::SetLibraryLoadedHook(&OnLibrariesLoaded); 34 base::android::SetLibraryLoadedHook(&OnLibrariesLoaded);
32 return true; 35 return true;
33 } 36 }
34 37
35 bool RegisterJni(JNIEnv* env) { 38 bool RegisterJni() {
39 JNIEnv* env = base::android::AttachCurrentThread();
40
36 if (!base::android::RegisterJni(env)) 41 if (!base::android::RegisterJni(env))
37 return false; 42 return false;
38 43
39 if (!net::android::RegisterJni(env)) 44 if (!net::android::RegisterJni(env))
40 return false; 45 return false;
41 46
42 if (!blimp::client::RegisterBlimpJni(env)) 47 if (!blimp::client::RegisterBlimpJni(env))
43 return false; 48 return false;
44 49
45 if (!blimp::client::RegisterBlimpAppJni(env)) 50 if (!blimp::client::RegisterBlimpAppJni(env))
(...skipping 21 matching lines...) Expand all
67 } 72 }
68 73
69 bool RegisterBlimpLibraryLoaderJni(JNIEnv* env) { 74 bool RegisterBlimpLibraryLoaderJni(JNIEnv* env) {
70 return RegisterNativesImpl(env); 75 return RegisterNativesImpl(env);
71 } 76 }
72 77
73 } // namespace client 78 } // namespace client
74 } // namespace blimp 79 } // namespace blimp
75 80
76 JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { 81 JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
77 std::vector<base::android::RegisterCallback> register_callbacks;
78 register_callbacks.push_back(base::Bind(&RegisterJni));
79
80 std::vector<base::android::InitCallback> init_callbacks;
81 init_callbacks.push_back(base::Bind(&OnJniInitializationComplete));
82
83 // Although we only need to register JNI for base/ and blimp/, this follows 82 // Although we only need to register JNI for base/ and blimp/, this follows
84 // the general Chrome for Android pattern, to be future-proof against future 83 // the general Chrome for Android pattern, to be future-proof against future
85 // changes to JNI. 84 // changes to JNI.
86 if (!base::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) || 85 if (!base::android::OnJNIOnLoadRegisterJNI(vm) || !RegisterJni() ||
87 !base::android::OnJNIOnLoadInit(init_callbacks)) { 86 !NativeInit()) {
88 return -1; 87 return -1;
89 } 88 }
90
91 return JNI_VERSION_1_4; 89 return JNI_VERSION_1_4;
92 } 90 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698