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 3// found in the LICENSE file. 4 5#ifndef BASE_ANDROID_LIBRARY_LOADER_HOOKS_H_ 6#define BASE_ANDROID_LIBRARY_LOADER_HOOKS_H_ 7 8#include <jni.h> 9 10#include "base/base_export.h" 11 12namespace base { 13namespace android { 14 15// Registers the callbacks that allows the entry point of the library to be 16// exposed to the calling java code. This handles only registering the 17// the callbacks needed by the loader. Any application specific JNI bindings 18// should happen once the native library has fully loaded, either in the library 19// loaded hook function or later. 20BASE_EXPORT bool RegisterLibraryLoaderEntryHook(JNIEnv* env); 21 22// Typedef for hook function to be called (indirectly from Java) once the 23// libraries are loaded. The hook function should register the JNI bindings 24// required to start the application. It should return true for success and 25// false for failure. 26// Note: this can't use base::Callback because there is no way of initializing 27// the default callback without using static objects, which we forbid. 28typedef bool LibraryLoadedHook(JNIEnv* env, 29 jclass clazz); 30 31// Set the hook function to be called (from Java) once the libraries are loaded. 32// SetLibraryLoadedHook may only be called from JNI_OnLoad. The hook function 33// should register the JNI bindings required to start the application. 34 35BASE_EXPORT void SetLibraryLoadedHook(LibraryLoadedHook* func); 36 37// Pass the version name to the loader. This used to check that the library 38// version matches the version expected by Java before completing JNI 39// registration. 40// Note: argument must remain valid at least until library loading is complete. 41BASE_EXPORT void SetVersionNumber(const char* version_number); 42 43// Call on exit to delete the AtExitManager which OnLibraryLoadedOnUIThread 44// created. 45BASE_EXPORT void LibraryLoaderExitHook(); 46 47} // namespace android 48} // namespace base 49 50#endif // BASE_ANDROID_LIBRARY_LOADER_HOOKS_H_ 51