summaryrefslogtreecommitdiff
path: root/libs/fakeservicemanager/FakeServiceManager.cpp
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2023-08-25 02:09:52 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-08-25 02:09:52 +0000
commit48c2f3e161b5dca194833e5e54acad141437c9a3 (patch)
treeb9bd936dfb3b7af50581119bc7db24534b413cea /libs/fakeservicemanager/FakeServiceManager.cpp
parent2e77cd527ca7085f41d138043108dfb953127173 (diff)
parent3b907f9b073275e7a24b5abd8f864119bb623fa4 (diff)
Merge "Adding rust wrapper lib for libfakeServiceManager" into main am: c753ca67a5 am: 3b907f9b07
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2719667 Change-Id: I764f34ecc6c7fbc231c9efd9b98d8666e6abae93 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'libs/fakeservicemanager/FakeServiceManager.cpp')
-rw-r--r--libs/fakeservicemanager/FakeServiceManager.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/libs/fakeservicemanager/FakeServiceManager.cpp b/libs/fakeservicemanager/FakeServiceManager.cpp
index 80661c1cbd..241c866558 100644
--- a/libs/fakeservicemanager/FakeServiceManager.cpp
+++ b/libs/fakeservicemanager/FakeServiceManager.cpp
@@ -16,6 +16,10 @@
#include "fakeservicemanager/FakeServiceManager.h"
+using android::sp;
+using android::FakeServiceManager;
+using android::setDefaultServiceManager;
+
namespace android {
FakeServiceManager::FakeServiceManager() {}
@@ -123,3 +127,24 @@ void FakeServiceManager::clear() {
mNameToService.clear();
}
} // namespace android
+
+[[clang::no_destroy]] static sp<FakeServiceManager> gFakeServiceManager;
+[[clang::no_destroy]] static std::once_flag gSmOnce;
+
+extern "C" {
+
+// Setup FakeServiceManager to mock dependencies in test using this API for rust backend
+void setupFakeServiceManager() {
+ /* Create a FakeServiceManager instance and add required services */
+ std::call_once(gSmOnce, [&]() {
+ gFakeServiceManager = new FakeServiceManager();
+ android::setDefaultServiceManager(gFakeServiceManager);
+ });
+}
+
+// Clear existing services from Fake SM for rust backend
+void clearFakeServiceManager() {
+ LOG_ALWAYS_FATAL_IF(gFakeServiceManager == nullptr, "Fake Service Manager is not available. Forgot to call setupFakeServiceManager?");
+ gFakeServiceManager->clear();
+}
+} //extern "C" \ No newline at end of file