diff options
author | 2023-08-25 02:09:52 +0000 | |
---|---|---|
committer | 2023-08-25 02:09:52 +0000 | |
commit | 48c2f3e161b5dca194833e5e54acad141437c9a3 (patch) | |
tree | b9bd936dfb3b7af50581119bc7db24534b413cea /libs/fakeservicemanager/FakeServiceManager.cpp | |
parent | 2e77cd527ca7085f41d138043108dfb953127173 (diff) | |
parent | 3b907f9b073275e7a24b5abd8f864119bb623fa4 (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.cpp | 25 |
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 |