summaryrefslogtreecommitdiff
path: root/libnativeloader/native_loader.cpp
diff options
context:
space:
mode:
authorDimitry Ivanov <dimitry@google.com>2016-02-22 13:48:22 -0800
committerDimitry Ivanov <dimitry@google.com>2016-02-22 13:48:22 -0800
commit0cd10d83e4e14300d03a60f28547b90d0c805579 (patch)
tree79d4e39090ef037f6cd27ac4d58bd38f7f5b996f /libnativeloader/native_loader.cpp
parent34fa704df45c5f74aeb5230e4bf3930585cf32fb (diff)
nativeloader: Export FindNamespaceByClassLoader
Bug: http://b/27189432 Change-Id: Ib80dcce949276ee620f601c47b20f783708e8e85
Diffstat (limited to 'libnativeloader/native_loader.cpp')
-rw-r--r--libnativeloader/native_loader.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp
index 5d35523f2..a64b9720c 100644
--- a/libnativeloader/native_loader.cpp
+++ b/libnativeloader/native_loader.cpp
@@ -103,6 +103,14 @@ class LibraryNamespaces {
return ns;
}
+ android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) {
+ auto it = std::find_if(namespaces_.begin(), namespaces_.end(),
+ [&](const std::pair<jweak, android_namespace_t*>& value) {
+ return env->IsSameObject(value.first, class_loader);
+ });
+ return it != namespaces_.end() ? it->second : nullptr;
+ }
+
private:
void PreloadPublicLibraries() {
// android_init_namespaces() expects all the public libraries
@@ -121,14 +129,6 @@ class LibraryNamespaces {
return initialized_;
}
- android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) {
- auto it = std::find_if(namespaces_.begin(), namespaces_.end(),
- [&](const std::pair<jweak, android_namespace_t*>& value) {
- return env->IsSameObject(value.first, class_loader);
- });
- return it != namespaces_.end() ? it->second : nullptr;
- }
-
bool initialized_;
std::mutex mutex_;
std::vector<std::pair<jweak, android_namespace_t*>> namespaces_;
@@ -168,4 +168,10 @@ void* OpenNativeLibrary(JNIEnv* env, int32_t target_sdk_version, const char* pat
#endif
}
+#if defined(__ANDROID__)
+android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) {
+ return g_namespaces->FindNamespaceByClassLoader(env, class_loader);
+}
+#endif
+
}; // android namespace