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

Side by Side Diff: base/android/library_loader/library_loader_hooks.cc

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « base/android/library_loader/library_loader_hooks.h ('k') | base/android/record_histogram.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/android/library_loader/library_loader_hooks.h" 5 #include "base/android/library_loader/library_loader_hooks.h"
6 6
7 #include "base/android/command_line_android.h" 7 #include "base/android/command_line_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/android/library_loader/library_load_from_apk_status_codes.h" 9 #include "base/android/library_loader/library_load_from_apk_status_codes.h"
10 #include "base/at_exit.h" 10 #include "base/at_exit.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 MAX_BROWSER_HISTOGRAM_CODE = 3, 45 MAX_BROWSER_HISTOGRAM_CODE = 3,
46 }; 46 };
47 47
48 RendererHistogramCode g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE; 48 RendererHistogramCode g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
49 49
50 } // namespace 50 } // namespace
51 51
52 static void RegisterChromiumAndroidLinkerRendererHistogram( 52 static void RegisterChromiumAndroidLinkerRendererHistogram(
53 JNIEnv* env, 53 JNIEnv* env,
54 jclass clazz, 54 jobject jcaller,
55 jboolean requested_shared_relro, 55 jboolean requested_shared_relro,
56 jboolean load_at_fixed_address_failed) { 56 jboolean load_at_fixed_address_failed) {
57 // Note a pending histogram value for later recording. 57 // Note a pending histogram value for later recording.
58 if (requested_shared_relro) { 58 if (requested_shared_relro) {
59 g_renderer_histogram_code = load_at_fixed_address_failed 59 g_renderer_histogram_code = load_at_fixed_address_failed
60 ? LFA_BACKOFF_USED : LFA_SUCCESS; 60 ? LFA_BACKOFF_USED : LFA_SUCCESS;
61 } else { 61 } else {
62 g_renderer_histogram_code = LFA_NOT_ATTEMPTED; 62 g_renderer_histogram_code = LFA_NOT_ATTEMPTED;
63 } 63 }
64 } 64 }
65 65
66 void RecordChromiumAndroidLinkerRendererHistogram() { 66 void RecordChromiumAndroidLinkerRendererHistogram() {
67 if (g_renderer_histogram_code == NO_PENDING_HISTOGRAM_CODE) 67 if (g_renderer_histogram_code == NO_PENDING_HISTOGRAM_CODE)
68 return; 68 return;
69 // Record and release the pending histogram value. 69 // Record and release the pending histogram value.
70 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.RendererStates", 70 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.RendererStates",
71 g_renderer_histogram_code, 71 g_renderer_histogram_code,
72 MAX_RENDERER_HISTOGRAM_CODE); 72 MAX_RENDERER_HISTOGRAM_CODE);
73 g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE; 73 g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
74 } 74 }
75 75
76 static void RecordChromiumAndroidLinkerBrowserHistogram( 76 static void RecordChromiumAndroidLinkerBrowserHistogram(
77 JNIEnv* env, 77 JNIEnv* env,
78 jclass clazz, 78 jobject jcaller,
79 jboolean is_using_browser_shared_relros, 79 jboolean is_using_browser_shared_relros,
80 jboolean load_at_fixed_address_failed, 80 jboolean load_at_fixed_address_failed,
81 jint library_load_from_apk_status) { 81 jint library_load_from_apk_status) {
82 // For low-memory devices, record whether or not we successfully loaded the 82 // For low-memory devices, record whether or not we successfully loaded the
83 // browser at a fixed address. Otherwise just record a normal invocation. 83 // browser at a fixed address. Otherwise just record a normal invocation.
84 BrowserHistogramCode histogram_code; 84 BrowserHistogramCode histogram_code;
85 if (is_using_browser_shared_relros) { 85 if (is_using_browser_shared_relros) {
86 histogram_code = load_at_fixed_address_failed 86 histogram_code = load_at_fixed_address_failed
87 ? LOW_MEMORY_LFA_BACKOFF_USED : LOW_MEMORY_LFA_SUCCESS; 87 ? LOW_MEMORY_LFA_BACKOFF_USED : LOW_MEMORY_LFA_SUCCESS;
88 } else { 88 } else {
89 histogram_code = NORMAL_LRA_SUCCESS; 89 histogram_code = NORMAL_LRA_SUCCESS;
90 } 90 }
91 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.BrowserStates", 91 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.BrowserStates",
92 histogram_code, 92 histogram_code,
93 MAX_BROWSER_HISTOGRAM_CODE); 93 MAX_BROWSER_HISTOGRAM_CODE);
94 94
95 // Record the device support for loading a library directly from the APK file. 95 // Record the device support for loading a library directly from the APK file.
96 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.LibraryLoadFromApkStatus", 96 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.LibraryLoadFromApkStatus",
97 library_load_from_apk_status, 97 library_load_from_apk_status,
98 LIBRARY_LOAD_FROM_APK_STATUS_CODES_MAX); 98 LIBRARY_LOAD_FROM_APK_STATUS_CODES_MAX);
99 } 99 }
100 100
101 void SetLibraryLoadedHook(LibraryLoadedHook* func) { 101 void SetLibraryLoadedHook(LibraryLoadedHook* func) {
102 g_registration_callback = func; 102 g_registration_callback = func;
103 } 103 }
104 104
105 static void InitCommandLine(JNIEnv* env, jclass clazz, 105 static void InitCommandLine(JNIEnv* env,
106 jobject jcaller,
106 jobjectArray init_command_line) { 107 jobjectArray init_command_line) {
107 InitNativeCommandLineFromJavaArray(env, init_command_line); 108 InitNativeCommandLineFromJavaArray(env, init_command_line);
108 } 109 }
109 110
110 static jboolean LibraryLoaded(JNIEnv* env, jclass clazz) { 111 static jboolean LibraryLoaded(JNIEnv* env, jobject jcaller) {
111 if (g_registration_callback == NULL) { 112 if (g_registration_callback == NULL) {
112 return true; 113 return true;
113 } 114 }
114 return g_registration_callback(env, clazz); 115 return g_registration_callback(env, NULL);
115 } 116 }
116 117
117 void LibraryLoaderExitHook() { 118 void LibraryLoaderExitHook() {
118 if (g_at_exit_manager) { 119 if (g_at_exit_manager) {
119 delete g_at_exit_manager; 120 delete g_at_exit_manager;
120 g_at_exit_manager = NULL; 121 g_at_exit_manager = NULL;
121 } 122 }
122 } 123 }
123 124
124 bool RegisterLibraryLoaderEntryHook(JNIEnv* env) { 125 bool RegisterLibraryLoaderEntryHook(JNIEnv* env) {
125 // We need the AtExitManager to be created at the very beginning. 126 // We need the AtExitManager to be created at the very beginning.
126 g_at_exit_manager = new base::AtExitManager(); 127 g_at_exit_manager = new base::AtExitManager();
127 128
128 return RegisterNativesImpl(env); 129 return RegisterNativesImpl(env);
129 } 130 }
130 131
131 void SetVersionNumber(const char* version_number) { 132 void SetVersionNumber(const char* version_number) {
132 g_library_version_number = strdup(version_number); 133 g_library_version_number = strdup(version_number);
133 } 134 }
134 135
135 jstring GetVersionNumber(JNIEnv* env, jclass clazz) { 136 jstring GetVersionNumber(JNIEnv* env, jobject jcaller) {
136 return ConvertUTF8ToJavaString(env, g_library_version_number).Release(); 137 return ConvertUTF8ToJavaString(env, g_library_version_number).Release();
137 } 138 }
138 139
140 LibraryProcessType GetLibraryProcessType(JNIEnv* env) {
141 return static_cast<LibraryProcessType>(
142 Java_LibraryLoader_getLibraryProcessType(env));
143 }
144
139 } // namespace android 145 } // namespace android
140 } // namespace base 146 } // namespace base
OLDNEW
« no previous file with comments | « base/android/library_loader/library_loader_hooks.h ('k') | base/android/record_histogram.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698