From 538f99ab285c1440969b9b3331fc0ce750c0d316 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Tue, 3 Mar 2020 00:46:50 +0900 Subject: Loading JNI libraries in an APEX To load JNI libraries in an APEX, libnativeloader relies on jni.config.txt file which contains available JNI libraries for APEX namespaces: com_android_foo libfoo_jni.so:... com_android_bar libbar_jni.so:... This file is generated by linkerconfig. Bug: 143733063 Test: cuttlestone boots (For now, no behavioral changes because jni.config.txt is empty) Change-Id: I066de90a73875118be53972e50d076061922d762 --- libnativeloader/native_loader_test.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libnativeloader/native_loader_test.cpp') diff --git a/libnativeloader/native_loader_test.cpp b/libnativeloader/native_loader_test.cpp index f0446f0db1..e36a7e6de2 100644 --- a/libnativeloader/native_loader_test.cpp +++ b/libnativeloader/native_loader_test.cpp @@ -38,6 +38,7 @@ using ::testing::StrEq; using ::testing::_; using internal::ConfigEntry; using internal::ParseConfig; +using internal::ParseJniConfig; #if defined(__LP64__) #define LIB_DIR "lib64" @@ -682,5 +683,28 @@ TEST(NativeLoaderConfigParser, RejectMalformed) { ASSERT_FALSE(ParseConfig("libA.so nopreload # comment", always_true).ok()); } +TEST(NativeLoaderJniConfigParser, BasicLoading) { + const char file_content[] = R"( +# comment +com_android_foo libfoo.so +# Empty line is ignored + +com_android_bar libbar.so:libbar2.so +)"; + + std::map expected_result{ + {"com_android_foo", "libfoo.so"}, + {"com_android_bar", "libbar.so:libbar2.so"}, + }; + + Result> result = ParseJniConfig(file_content); + ASSERT_RESULT_OK(result); + ASSERT_EQ(expected_result, *result); +} + +TEST(NativeLoaderJniConfigParser, RejectMalformed) { + ASSERT_FALSE(ParseJniConfig("com_android_foo").ok()); +} + } // namespace nativeloader } // namespace android -- cgit v1.2.3-59-g8ed1b