summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin Moore <devinmoore@google.com>2023-11-28 00:20:32 +0000
committerDevin Moore <devinmoore@google.com>2023-11-28 00:34:40 +0000
commit0d30917a34bcc91ca9be783cb504c3b120f89007 (patch)
tree676469e5a345119e269bf6b58195e60dc03ae0b0
parent22e6f1e1c54fbd6d8aa78e1fc87e77e6c271583f (diff)
downloadlibhidl-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.cpp6
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;