summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2014-09-24 15:53:39 -0700
committerAndreas Gampe <agampe@google.com>2014-09-24 15:53:39 -0700
commit0eed2eb64a229d83859155889fdba14b0f429dc2 (patch)
treedc53140a9f2ba7adb8ed207500b33f123326575d
parent196ec73d0b4d4f4579e8261d7b06a48337626592 (diff)
downloadsystem_core-0eed2eb64a229d83859155889fdba14b0f429dc2.zip
system_core-0eed2eb64a229d83859155889fdba14b0f429dc2.tar.gz
system_core-0eed2eb64a229d83859155889fdba14b0f429dc2.tar.bz2
Revert "DO NOT MERGE Libnativebridge: Temporarily change back to late dlopen"
This reverts commit f00de413ed451f1a90d614ea5dce8b3d685e877c.
-rw-r--r--libnativebridge/native_bridge.cc90
-rw-r--r--libnativebridge/tests/ValidNameNativeBridge_test.cpp5
2 files changed, 30 insertions, 65 deletions
diff --git a/libnativebridge/native_bridge.cc b/libnativebridge/native_bridge.cc
index fa80e1e..6602d3f 100644
--- a/libnativebridge/native_bridge.cc
+++ b/libnativebridge/native_bridge.cc
@@ -29,7 +29,6 @@ static constexpr const char* kNativeBridgeInterfaceSymbol = "NativeBridgeItf";
enum class NativeBridgeState {
kNotSetup, // Initial state.
kOpened, // After successful dlopen.
- // Temporary meaning: string copied. TODO: remove. b/17440362
kInitialized, // After successful initialization.
kClosed // Closed or errors.
};
@@ -61,9 +60,6 @@ static NativeBridgeState state = NativeBridgeState::kNotSetup;
// Whether we had an error at some point.
static bool had_error = false;
-// Native bridge filename. TODO: Temporary, remove. b/17440362
-static const char* native_bridge_filename;
-
// Handle of the loaded library.
static void* native_bridge_handle = nullptr;
// Pointer to the callbacks. Available as soon as LoadNativeBridge succeeds, but only initialized
@@ -135,32 +131,28 @@ bool LoadNativeBridge(const char* nb_library_filename,
state = NativeBridgeState::kClosed;
had_error = true;
} else {
- // Save the name. TODO: Remove this, return to old flow. b/17440362
- native_bridge_filename = nb_library_filename;
- runtime_callbacks = runtime_cbs;
- state = NativeBridgeState::kOpened;
-// // Try to open the library.
-// void* handle = dlopen(nb_library_filename, RTLD_LAZY);
-// if (handle != nullptr) {
-// callbacks = reinterpret_cast<NativeBridgeCallbacks*>(dlsym(handle,
-// kNativeBridgeInterfaceSymbol));
-// if (callbacks != nullptr) {
-// // Store the handle for later.
-// native_bridge_handle = handle;
-// } else {
-// dlclose(handle);
-// }
-// }
-//
-// // Two failure conditions: could not find library (dlopen failed), or could not find native
-// // bridge interface (dlsym failed). Both are an error and close the native bridge.
-// if (callbacks == nullptr) {
-// had_error = true;
-// state = NativeBridgeState::kClosed;
-// } else {
-// runtime_callbacks = runtime_cbs;
-// state = NativeBridgeState::kOpened;
-// }
+ // Try to open the library.
+ void* handle = dlopen(nb_library_filename, RTLD_LAZY);
+ if (handle != nullptr) {
+ callbacks = reinterpret_cast<NativeBridgeCallbacks*>(dlsym(handle,
+ kNativeBridgeInterfaceSymbol));
+ if (callbacks != nullptr) {
+ // Store the handle for later.
+ native_bridge_handle = handle;
+ } else {
+ dlclose(handle);
+ }
+ }
+
+ // Two failure conditions: could not find library (dlopen failed), or could not find native
+ // bridge interface (dlsym failed). Both are an error and close the native bridge.
+ if (callbacks == nullptr) {
+ had_error = true;
+ state = NativeBridgeState::kClosed;
+ } else {
+ runtime_callbacks = runtime_cbs;
+ state = NativeBridgeState::kOpened;
+ }
}
return state == NativeBridgeState::kOpened;
}
@@ -171,38 +163,15 @@ bool InitializeNativeBridge() {
// point we are not multi-threaded, so we do not need locking here.
if (state == NativeBridgeState::kOpened) {
- // Open and initialize. TODO: Temporary, remove. b/17440362
- void* handle = dlopen(native_bridge_filename, RTLD_LAZY);
- if (handle != nullptr) {
- callbacks = reinterpret_cast<NativeBridgeCallbacks*>(dlsym(handle,
- kNativeBridgeInterfaceSymbol));
- if (callbacks != nullptr) {
- if (callbacks->initialize(runtime_callbacks)) {
- state = NativeBridgeState::kInitialized;
- native_bridge_handle = handle;
- } else {
- callbacks = nullptr;
- }
- }
-
- if (callbacks == nullptr) {
- state = NativeBridgeState::kClosed;
- had_error = true;
- dlclose(handle);
- }
+ // Try to initialize.
+ if (callbacks->initialize(runtime_callbacks)) {
+ state = NativeBridgeState::kInitialized;
} else {
- state = NativeBridgeState::kClosed;
+ // Unload the library.
+ dlclose(native_bridge_handle);
had_error = true;
+ state = NativeBridgeState::kClosed;
}
-// // Try to initialize.
-// if (callbacks->initialize(runtime_callbacks)) {
-// state = NativeBridgeState::kInitialized;
-// } else {
-// // Unload the library.
-// dlclose(native_bridge_handle);
-// had_error = true;
-// state = NativeBridgeState::kClosed;
-// }
} else {
had_error = true;
state = NativeBridgeState::kClosed;
@@ -216,7 +185,7 @@ void UnloadNativeBridge() {
// point we are not multi-threaded, so we do not need locking here.
switch(state) {
- // case NativeBridgeState::kOpened: // TODO: Re-add this. b/17440362
+ case NativeBridgeState::kOpened:
case NativeBridgeState::kInitialized:
// Unload.
dlclose(native_bridge_handle);
@@ -227,7 +196,6 @@ void UnloadNativeBridge() {
had_error = true;
break;
- case NativeBridgeState::kOpened: // TODO: Remove this. b/17440362
case NativeBridgeState::kClosed:
// Ignore.
break;
diff --git a/libnativebridge/tests/ValidNameNativeBridge_test.cpp b/libnativebridge/tests/ValidNameNativeBridge_test.cpp
index b28f5b2..690be4a 100644
--- a/libnativebridge/tests/ValidNameNativeBridge_test.cpp
+++ b/libnativebridge/tests/ValidNameNativeBridge_test.cpp
@@ -27,12 +27,9 @@ TEST_F(NativeBridgeTest, ValidName) {
// Now check what happens on LoadNativeBridge.
EXPECT_EQ(false, NativeBridgeError());
LoadNativeBridge(kTestName, nullptr);
- // TODO: Remove this call. b/17440362
- InitializeNativeBridge();
// This will lead to an error as the library doesn't exist.
EXPECT_EQ(true, NativeBridgeError());
- // TODO: Test again. b/17440362
-// EXPECT_EQ(false, NativeBridgeAvailable());
+ EXPECT_EQ(false, NativeBridgeAvailable());
}
} // namespace android