summaryrefslogtreecommitdiff
path: root/base/android/library_loader/library_loader_hooks.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/android/library_loader/library_loader_hooks.cc')
-rw-r--r--base/android/library_loader/library_loader_hooks.cc152
1 files changed, 0 insertions, 152 deletions
diff --git a/base/android/library_loader/library_loader_hooks.cc b/base/android/library_loader/library_loader_hooks.cc
deleted file mode 100644
index 0b59a30429..0000000000
--- a/base/android/library_loader/library_loader_hooks.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/android/library_loader/library_loader_hooks.h"
-
-#include "base/android/command_line_android.h"
-#include "base/android/jni_string.h"
-#include "base/android/library_loader/library_load_from_apk_status_codes.h"
-#include "base/android/library_loader/library_prefetcher.h"
-#include "base/at_exit.h"
-#include "base/metrics/histogram.h"
-#include "jni/LibraryLoader_jni.h"
-
-namespace base {
-namespace android {
-
-namespace {
-
-base::AtExitManager* g_at_exit_manager = NULL;
-const char* g_library_version_number = "";
-LibraryLoadedHook* g_registration_callback = NULL;
-
-enum RendererHistogramCode {
- // Renderer load at fixed address success, fail, or not attempted.
- // Renderers do not attempt to load at at fixed address if on a
- // low-memory device on which browser load at fixed address has already
- // failed.
- LFA_SUCCESS = 0,
- LFA_BACKOFF_USED = 1,
- LFA_NOT_ATTEMPTED = 2,
-
- // End sentinel, also used as nothing-pending indicator.
- MAX_RENDERER_HISTOGRAM_CODE = 3,
- NO_PENDING_HISTOGRAM_CODE = MAX_RENDERER_HISTOGRAM_CODE
-};
-
-enum BrowserHistogramCode {
- // Non-low-memory random address browser loads.
- NORMAL_LRA_SUCCESS = 0,
-
- // Low-memory browser loads at fixed address, success or fail.
- LOW_MEMORY_LFA_SUCCESS = 1,
- LOW_MEMORY_LFA_BACKOFF_USED = 2,
-
- MAX_BROWSER_HISTOGRAM_CODE = 3,
-};
-
-RendererHistogramCode g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
-
-} // namespace
-
-static void RegisterChromiumAndroidLinkerRendererHistogram(
- JNIEnv* env,
- jobject jcaller,
- jboolean requested_shared_relro,
- jboolean load_at_fixed_address_failed) {
- // Note a pending histogram value for later recording.
- if (requested_shared_relro) {
- g_renderer_histogram_code = load_at_fixed_address_failed
- ? LFA_BACKOFF_USED : LFA_SUCCESS;
- } else {
- g_renderer_histogram_code = LFA_NOT_ATTEMPTED;
- }
-}
-
-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;
-}
-
-static void RecordChromiumAndroidLinkerBrowserHistogram(
- JNIEnv* env,
- jobject jcaller,
- jboolean is_using_browser_shared_relros,
- jboolean load_at_fixed_address_failed,
- jint library_load_from_apk_status) {
- // For low-memory devices, record whether or not we successfully loaded the
- // browser at a fixed address. Otherwise just record a normal invocation.
- BrowserHistogramCode histogram_code;
- if (is_using_browser_shared_relros) {
- histogram_code = load_at_fixed_address_failed
- ? LOW_MEMORY_LFA_BACKOFF_USED : LOW_MEMORY_LFA_SUCCESS;
- } else {
- histogram_code = NORMAL_LRA_SUCCESS;
- }
- UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.BrowserStates",
- histogram_code,
- MAX_BROWSER_HISTOGRAM_CODE);
-
- // Record the device support for loading a library directly from the APK file.
- UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.LibraryLoadFromApkStatus",
- library_load_from_apk_status,
- LIBRARY_LOAD_FROM_APK_STATUS_CODES_MAX);
-}
-
-void SetLibraryLoadedHook(LibraryLoadedHook* func) {
- g_registration_callback = func;
-}
-
-static void InitCommandLine(JNIEnv* env,
- jobject jcaller,
- jobjectArray init_command_line) {
- InitNativeCommandLineFromJavaArray(env, init_command_line);
-}
-
-static jboolean LibraryLoaded(JNIEnv* env, jobject jcaller) {
- if (g_registration_callback == NULL) {
- return true;
- }
- return g_registration_callback(env, NULL);
-}
-
-void LibraryLoaderExitHook() {
- if (g_at_exit_manager) {
- delete g_at_exit_manager;
- g_at_exit_manager = NULL;
- }
-}
-
-static jboolean ForkAndPrefetchNativeLibrary(JNIEnv* env, jclass clazz) {
- return NativeLibraryPrefetcher::ForkAndPrefetchNativeLibrary();
-}
-
-bool RegisterLibraryLoaderEntryHook(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-void SetVersionNumber(const char* version_number) {
- g_library_version_number = strdup(version_number);
-}
-
-jstring GetVersionNumber(JNIEnv* env, jobject jcaller) {
- return ConvertUTF8ToJavaString(env, g_library_version_number).Release();
-}
-
-LibraryProcessType GetLibraryProcessType(JNIEnv* env) {
- return static_cast<LibraryProcessType>(
- Java_LibraryLoader_getLibraryProcessType(env));
-}
-
-void InitAtExitManager() {
- g_at_exit_manager = new base::AtExitManager();
-}
-
-} // namespace android
-} // namespace base