| Index: base/android/library_loader/library_loader_hooks.cc
|
| diff --git a/base/android/library_loader/library_loader_hooks.cc b/base/android/library_loader/library_loader_hooks.cc
|
| index bbc99352f6d8211146574ca3025328de0bfcbbaf..025075e4992ead936ee099201465e39c91e197b9 100644
|
| --- a/base/android/library_loader/library_loader_hooks.cc
|
| +++ b/base/android/library_loader/library_loader_hooks.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/android/library_loader/library_prefetcher.h"
|
| #include "base/at_exit.h"
|
| #include "base/metrics/histogram.h"
|
| +#include "base/metrics/sparse_histogram.h"
|
| #include "jni/LibraryLoader_jni.h"
|
|
|
| namespace base {
|
| @@ -48,11 +49,40 @@ enum BrowserHistogramCode {
|
|
|
| RendererHistogramCode g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
|
|
|
| +// Indicate whether g_library_preloader_renderer_histogram_code is valid
|
| +bool g_library_preloader_renderer_histogram_code_registered = false;
|
| +
|
| +// The return value of NativeLibraryPreloader.loadLibrary() in child processes,
|
| +// it is initialized to the invalid value which shouldn't showup in UMA report.
|
| +int g_library_preloader_renderer_histogram_code = -1;
|
| +
|
| // The amount of time, in milliseconds, that it took to load the shared
|
| // libraries in the renderer. Set in
|
| // RegisterChromiumAndroidLinkerRendererHistogram.
|
| long g_renderer_library_load_time_ms = 0;
|
|
|
| +void RecordChromiumAndroidLinkerRendererHistogram() {
|
| + if (g_renderer_histogram_code == NO_PENDING_HISTOGRAM_CODE)
|
| + return;
|
| + // Record and release the pending histogram value.
|
| + UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.RendererStates",
|
| + g_renderer_histogram_code,
|
| + MAX_RENDERER_HISTOGRAM_CODE);
|
| + g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
|
| +
|
| + // Record how long it took to load the shared libraries.
|
| + UMA_HISTOGRAM_TIMES("ChromiumAndroidLinker.RendererLoadTime",
|
| + base::TimeDelta::FromMilliseconds(g_renderer_library_load_time_ms));
|
| +}
|
| +
|
| +void RecordLibraryPreloaderRendereHistogram() {
|
| + if (g_library_preloader_renderer_histogram_code_registered) {
|
| + UMA_HISTOGRAM_SPARSE_SLOWLY(
|
| + "Android.NativeLibraryPreloader.Result.Renderer",
|
| + g_library_preloader_renderer_histogram_code);
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| static void RegisterChromiumAndroidLinkerRendererHistogram(
|
| @@ -72,20 +102,6 @@ static void RegisterChromiumAndroidLinkerRendererHistogram(
|
| g_renderer_library_load_time_ms = library_load_time_ms;
|
| }
|
|
|
| -void RecordChromiumAndroidLinkerRendererHistogram() {
|
| - if (g_renderer_histogram_code == NO_PENDING_HISTOGRAM_CODE)
|
| - return;
|
| - // Record and release the pending histogram value.
|
| - UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.RendererStates",
|
| - g_renderer_histogram_code,
|
| - MAX_RENDERER_HISTOGRAM_CODE);
|
| - g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
|
| -
|
| - // Record how long it took to load the shared libraries.
|
| - UMA_HISTOGRAM_TIMES("ChromiumAndroidLinker.RendererLoadTime",
|
| - base::TimeDelta::FromMilliseconds(g_renderer_library_load_time_ms));
|
| -}
|
| -
|
| static void RecordChromiumAndroidLinkerBrowserHistogram(
|
| JNIEnv* env,
|
| const JavaParamRef<jobject>& jcaller,
|
| @@ -116,6 +132,28 @@ static void RecordChromiumAndroidLinkerBrowserHistogram(
|
| base::TimeDelta::FromMilliseconds(library_load_time_ms));
|
| }
|
|
|
| +static void RecordLibraryPreloaderBrowserHistogram(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& jcaller,
|
| + jint status) {
|
| + UMA_HISTOGRAM_SPARSE_SLOWLY(
|
| + "Android.NativeLibraryPreloader.Result.Browser",
|
| + status);
|
| +}
|
| +
|
| +static void RegisterLibraryPreloaderRendererHistogram(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& jcaller,
|
| + jint status) {
|
| + g_library_preloader_renderer_histogram_code = status;
|
| + g_library_preloader_renderer_histogram_code_registered = true;
|
| +}
|
| +
|
| +void RecordLibraryLoaderRendererHistograms() {
|
| + RecordChromiumAndroidLinkerRendererHistogram();
|
| + RecordLibraryPreloaderRendereHistogram();
|
| +}
|
| +
|
| void SetLibraryLoadedHook(LibraryLoadedHook* func) {
|
| g_registration_callback = func;
|
| }
|
|
|