diff options
author | Devin Moore <devinmoore@google.com> | 2023-11-28 00:20:32 +0000 |
---|---|---|
committer | Devin Moore <devinmoore@google.com> | 2023-11-28 00:34:40 +0000 |
commit | 0d30917a34bcc91ca9be783cb504c3b120f89007 (patch) | |
tree | 676469e5a345119e269bf6b58195e60dc03ae0b0 | |
parent | 22e6f1e1c54fbd6d8aa78e1fc87e77e6c271583f (diff) | |
download | libhidl-0d30917a34bcc91ca9be783cb504c3b120f89007.tar.gz |
NoHwServiceManager pretend like IServiceManager is registered
We don't actually want it registered, but we will return HWBINDER
transport so IServiceManager::getService() will actually return the fake
local NoHwServiceManager isntance.
Test: launch_cvd with isHidlSupported returning false
Bug: 218588089
Change-Id: Ibcd1c48687fa8f66bce07da5a23245a3a3a0fc9f
-rw-r--r-- | transport/ServiceManagement.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp index 8c9bc5b..a759c50 100644 --- a/transport/ServiceManagement.cpp +++ b/transport/ServiceManagement.cpp @@ -252,6 +252,12 @@ struct NoHwServiceManager : public IServiceManager1_2 { } Return<Transport> getTransport(const hidl_string& fqName, const hidl_string& name) { + // We pretend like IServiceManager is declared for + // IServiceManager::getService to return this NoHwServiceManager + // instance + if (isServiceManager(fqName)) { + return Transport::HWBINDER; + } LOG(INFO) << "Trying to get transport of " << fqName << "/" << name << " without hwservicemanager"; return Transport::EMPTY; |