From f7019c2e53ed95689a7a559c5e9489c8b48e9161 Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Thu, 6 Apr 2017 09:28:32 -0700 Subject: Use hwservicemanager getTransport. libhidl no longer provides a getTransport function. Now, call into the hwservicemanager which directly interfaces with libvintf. Test: extensive, see Ia5d1eb41b057ab5d6800f6c3fd22658adecc4be7 Bug: 36377072 Merged-In: I8b0ca845251cd7cd156f3471cbd4b0ce17617be0 Change-Id: I8b0ca845251cd7cd156f3471cbd4b0ce17617be0 (cherry picked from commit f8202e464e09618c2b780d331541f32cc186598e) --- core/jni/android_os_HwBinder.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp index c3978e7556ee..577cd49cbaec 100644 --- a/core/jni/android_os_HwBinder.cpp +++ b/core/jni/android_os_HwBinder.cpp @@ -276,7 +276,8 @@ static jobject JHwBinder_native_getService( jstring ifaceNameObj, jstring serviceNameObj) { - using ::android::vintf::operator<<; + using ::android::hidl::base::V1_0::IBase; + using ::android::hidl::manager::V1_0::IServiceManager; if (ifaceNameObj == NULL) { jniThrowException(env, "java/lang/NullPointerException", NULL); @@ -318,13 +319,20 @@ static jobject JHwBinder_native_getService( << "/" << serviceName; - ::android::vintf::Transport transport = - ::android::hardware::getTransport(ifaceName, serviceName); - if ( transport != ::android::vintf::Transport::EMPTY - && transport != ::android::vintf::Transport::HWBINDER) { + Return transportRet = + manager->getTransport(ifaceNameHStr, serviceNameHStr); + + if (!transportRet.isOk()) { + signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */); + return NULL; + } + + IServiceManager::Transport transport = transportRet; + + if ( transport != IServiceManager::Transport::EMPTY + && transport != IServiceManager::Transport::HWBINDER) { LOG(ERROR) << "service " << ifaceName << " declares transport method " - << transport << " but framework expects " - << ::android::vintf::Transport::HWBINDER; + << toString(transport) << " but framework expects hwbinder."; signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */); return NULL; } -- cgit v1.2.3-59-g8ed1b