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

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

Issue 611393002: Rationalize and fix chromium android linker histogram recording. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 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/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "jni/LibraryLoader_jni.h" 11 #include "jni/LibraryLoader_jni.h"
12 12
13 namespace base { 13 namespace base {
14 namespace android { 14 namespace android {
15 15
16 namespace { 16 namespace {
17 17
18 base::AtExitManager* g_at_exit_manager = NULL; 18 base::AtExitManager* g_at_exit_manager = NULL;
19 const char* g_library_version_number = ""; 19 const char* g_library_version_number = "";
20 LibraryLoadedHook* g_registration_callback = NULL; 20 LibraryLoadedHook* g_registration_callback = NULL;
21 21
22 bool g_has_renderer_histogram = false;
23 bool g_load_renderer_at_fixed_address_failed = false;
24
22 } // namespace 25 } // namespace
23 26
27 void RegisterChromiumAndroidLinkerRendererHistogram(
rmcilroy 2014/10/01 12:14:42 nit - please move down below LibraryLoaded()
simonb (inactive) 2014/10/02 15:15:30 Acknowledged.
28 bool load_at_fixed_address_failed) {
29 g_has_renderer_histogram = true;
30 g_load_renderer_at_fixed_address_failed = load_at_fixed_address_failed;
31 }
32
33 void RecordChromiumAndroidLinkerRendererHistogram() {
34 if (g_has_renderer_histogram) {
35 UMA_HISTOGRAM_BOOLEAN(
36 "ChromiumAndroidLinker.LoadedRendererAtFixedAddressFailed",
37 g_load_renderer_at_fixed_address_failed);
38 g_has_renderer_histogram = false;
rmcilroy 2014/10/01 12:14:42 Maybe call the boolean g_renderer_histogram_regist
simonb (inactive) 2014/10/02 15:15:30 Acknowledged. The separate boolean disappeared in
39 }
40 }
41
24 void SetLibraryLoadedHook(LibraryLoadedHook* func) { 42 void SetLibraryLoadedHook(LibraryLoadedHook* func) {
25 g_registration_callback = func; 43 g_registration_callback = func;
26 } 44 }
27 45
28 static void InitCommandLine(JNIEnv* env, jclass clazz, 46 static void InitCommandLine(JNIEnv* env, jclass clazz,
29 jobjectArray init_command_line) { 47 jobjectArray init_command_line) {
30 InitNativeCommandLineFromJavaArray(env, init_command_line); 48 InitNativeCommandLineFromJavaArray(env, init_command_line);
31 } 49 }
32 50
33 static jboolean LibraryLoaded(JNIEnv* env, jclass clazz) { 51 static jboolean LibraryLoaded(JNIEnv* env, jclass clazz) {
34 if(g_registration_callback == NULL) { 52 if (g_registration_callback == NULL) {
35 return true; 53 return true;
36 } 54 }
37 return g_registration_callback(env, clazz); 55 return g_registration_callback(env, clazz);
38 } 56 }
39 57
40 static void RecordChromiumAndroidLinkerHistogram( 58 static void RecordChromiumAndroidLinkerBrowserHistograms(
41 JNIEnv* env, 59 JNIEnv* env,
42 jclass clazz, 60 jclass clazz,
43 jboolean loaded_at_fixed_address_failed, 61 jboolean is_using_browser_shared_relros,
44 jboolean is_low_memory_device) { 62 jboolean loaded_browser_at_fixed_address_failed) {
45 UMA_HISTOGRAM_BOOLEAN("ChromiumAndroidLinker.LoadedAtFixedAddressFailed", 63 UMA_HISTOGRAM_BOOLEAN(
46 loaded_at_fixed_address_failed); 64 "ChromiumAndroidLinker.IsUsingBrowserSharedRelros",
47 UMA_HISTOGRAM_BOOLEAN("ChromiumAndroidLinker.IsLowMemoryDevice", 65 is_using_browser_shared_relros);
48 is_low_memory_device); 66 UMA_HISTOGRAM_BOOLEAN(
67 "ChromiumAndroidLinker.LoadedBrowserAtFixedAddressFailed",
68 loaded_browser_at_fixed_address_failed);
49 } 69 }
50 70
51 void LibraryLoaderExitHook() { 71 void LibraryLoaderExitHook() {
52 if (g_at_exit_manager) { 72 if (g_at_exit_manager) {
53 delete g_at_exit_manager; 73 delete g_at_exit_manager;
54 g_at_exit_manager = NULL; 74 g_at_exit_manager = NULL;
55 } 75 }
56 } 76 }
57 77
58 bool RegisterLibraryLoaderEntryHook(JNIEnv* env) { 78 bool RegisterLibraryLoaderEntryHook(JNIEnv* env) {
(...skipping 10 matching lines...) Expand all
69 jstring GetVersionNumber(JNIEnv* env, jclass clazz) { 89 jstring GetVersionNumber(JNIEnv* env, jclass clazz) {
70 return ConvertUTF8ToJavaString(env, g_library_version_number).Release(); 90 return ConvertUTF8ToJavaString(env, g_library_version_number).Release();
71 } 91 }
72 92
73 static void RecordNativeLibraryHack(JNIEnv*, jclass, jboolean usedHack) { 93 static void RecordNativeLibraryHack(JNIEnv*, jclass, jboolean usedHack) {
74 UMA_HISTOGRAM_BOOLEAN("LibraryLoader.NativeLibraryHack", usedHack); 94 UMA_HISTOGRAM_BOOLEAN("LibraryLoader.NativeLibraryHack", usedHack);
75 } 95 }
76 96
77 } // namespace android 97 } // namespace android
78 } // namespace base 98 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698