diff options
| author | 2020-02-02 06:37:48 +0000 | |
|---|---|---|
| committer | 2020-02-02 06:37:48 +0000 | |
| commit | ad559f988129c204ce2f98b02fcb617333b56a69 (patch) | |
| tree | 17d66d89fac40703cc8161572670f7eab382d977 | |
| parent | 94396be999f854fff9e29a7ffa8aae18a0fd4e71 (diff) | |
| parent | 724335c562a714835e8bb8918b7fe9633dbb415e (diff) | |
Merge "libbinder: Add setDefaultServiceManager for use in host testing." am: fde696396d am: 724335c562
Change-Id: If8c912f25142710c5b49f7a6d94adcd7df80b689
| -rw-r--r-- | libs/binder/IServiceManager.cpp | 10 | ||||
| -rw-r--r-- | libs/binder/include/binder/IServiceManager.h | 5 |
2 files changed, 13 insertions, 2 deletions
diff --git a/libs/binder/IServiceManager.cpp b/libs/binder/IServiceManager.cpp index 5ca9156fb2..328653ad0c 100644 --- a/libs/binder/IServiceManager.cpp +++ b/libs/binder/IServiceManager.cpp @@ -85,10 +85,11 @@ private: sp<AidlServiceManager> mTheRealServiceManager; }; +static Mutex gDefaultServiceManagerLock; +static sp<IServiceManager> gDefaultServiceManager; + sp<IServiceManager> defaultServiceManager() { - static Mutex gDefaultServiceManagerLock; - static sp<IServiceManager> gDefaultServiceManager; if (gDefaultServiceManager != nullptr) return gDefaultServiceManager; @@ -106,6 +107,11 @@ sp<IServiceManager> defaultServiceManager() return gDefaultServiceManager; } +void setDefaultServiceManager(const sp<IServiceManager>& sm) { + AutoMutex _l(gDefaultServiceManagerLock); + gDefaultServiceManager = sm; +} + #if !defined(__ANDROID_VNDK__) && defined(__ANDROID__) // IPermissionController is not accessible to vendors diff --git a/libs/binder/include/binder/IServiceManager.h b/libs/binder/include/binder/IServiceManager.h index 2c4326393e..31f022dca9 100644 --- a/libs/binder/include/binder/IServiceManager.h +++ b/libs/binder/include/binder/IServiceManager.h @@ -100,6 +100,11 @@ public: sp<IServiceManager> defaultServiceManager(); +/** + * Directly set the default service manager. Only used for testing. + */ +void setDefaultServiceManager(const sp<IServiceManager>& sm); + template<typename INTERFACE> sp<INTERFACE> waitForService(const String16& name) { const sp<IServiceManager> sm = defaultServiceManager(); |