From 11da150351b13f5d216793176b41d0edfa2cf29e Mon Sep 17 00:00:00 2001 From: Alice Wang Date: Thu, 25 Jul 2024 12:03:22 +0000 Subject: [native] Restore ServiceManager#getService() to return IBinder This fixes a crash in 3p libraries. A new API ServiceManager#getService2() has been introduced to work with the Service enum type. Bug: 354674329 Bug: 355187769 Test: atest servicemanager_test Test: atest vm_accessor_test Test: Run the demo app in b/354674329 and check it works Change-Id: If1e0e9bee6dcd3cfceea69bea58ed5fbe431e81d --- libs/binder/BackendUnifiedServiceManager.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'libs/binder/BackendUnifiedServiceManager.cpp') diff --git a/libs/binder/BackendUnifiedServiceManager.cpp b/libs/binder/BackendUnifiedServiceManager.cpp index 0bf3cadd35..54f687b280 100644 --- a/libs/binder/BackendUnifiedServiceManager.cpp +++ b/libs/binder/BackendUnifiedServiceManager.cpp @@ -33,10 +33,19 @@ BackendUnifiedServiceManager::BackendUnifiedServiceManager(const sp BackendUnifiedServiceManager::getImpl() { return mTheRealServiceManager; } + binder::Status BackendUnifiedServiceManager::getService(const ::std::string& name, - os::Service* _out) { + sp* _aidl_return) { + os::Service service; + binder::Status status = getService2(name, &service); + *_aidl_return = service.get(); + return status; +} + +binder::Status BackendUnifiedServiceManager::getService2(const ::std::string& name, + os::Service* _out) { os::Service service; - binder::Status status = mTheRealServiceManager->getService(name, &service); + binder::Status status = mTheRealServiceManager->getService2(name, &service); toBinderService(service, _out); return status; } -- cgit v1.2.3-59-g8ed1b