summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steven Moreland <smoreland@google.com> 2017-10-20 04:32:10 +0000
committer android-build-merger <android-build-merger@google.com> 2017-10-20 04:32:10 +0000
commitcb2bde9c7f79c910cc9d2c260a9d39a75ce85d95 (patch)
treee51a172ede29dc67cd48e5462e37e3e5492d04da
parentff426ec10ca802eb87b42e4f5a8d7cc9326d4265 (diff)
parent3147d2f429a149bc5fd322839015afa90c4541f7 (diff)
Merge "HwBinder: don't re-implement libhidl's getService" am: 992f9e7e0b
am: 3147d2f429 Change-Id: I588305d25372f4c2465d0e1f3a0610599aea28b7
-rw-r--r--core/jni/Android.bp9
-rw-r--r--core/jni/android_os_HwBinder.cpp57
2 files changed, 3 insertions, 63 deletions
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 3d71d1db52c5..e7667ca191fd 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -292,13 +292,4 @@ cc_library_shared {
// GraphicsJNI.h includes hwui headers
"libhwui",
],
-
- product_variables: {
- debuggable: {
- cflags: ["-D__ANDROID_DEBUGGABLE__"]
- },
- treble: {
- cflags: ["-D__ANDROID_TREBLE__"]
- },
- },
}
diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp
index 59ca050a23e1..fe14d483743f 100644
--- a/core/jni/android_os_HwBinder.cpp
+++ b/core/jni/android_os_HwBinder.cpp
@@ -306,7 +306,7 @@ static jobject JHwBinder_native_getService(
jstring serviceNameObj) {
using ::android::hidl::base::V1_0::IBase;
- using ::android::hidl::manager::V1_0::IServiceManager;
+ using ::android::hardware::details::getRawServiceInternal;
if (ifaceNameObj == NULL) {
jniThrowException(env, "java/lang/NullPointerException", NULL);
@@ -317,22 +317,12 @@ static jobject JHwBinder_native_getService(
return NULL;
}
- auto manager = hardware::defaultServiceManager();
-
- if (manager == nullptr) {
- LOG(ERROR) << "Could not get hwservicemanager.";
- signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
- return NULL;
- }
-
const char *ifaceNameCStr = env->GetStringUTFChars(ifaceNameObj, NULL);
if (ifaceNameCStr == NULL) {
return NULL; // XXX exception already pending?
}
std::string ifaceName(ifaceNameCStr);
env->ReleaseStringUTFChars(ifaceNameObj, ifaceNameCStr);
- ::android::hardware::hidl_string ifaceNameHStr;
- ifaceNameHStr.setToExternal(ifaceName.c_str(), ifaceName.size());
const char *serviceNameCStr = env->GetStringUTFChars(serviceNameObj, NULL);
if (serviceNameCStr == NULL) {
@@ -340,50 +330,9 @@ static jobject JHwBinder_native_getService(
}
std::string serviceName(serviceNameCStr);
env->ReleaseStringUTFChars(serviceNameObj, serviceNameCStr);
- ::android::hardware::hidl_string serviceNameHStr;
- serviceNameHStr.setToExternal(serviceName.c_str(), serviceName.size());
-
- LOG(INFO) << "Looking for service "
- << ifaceName
- << "/"
- << serviceName;
-
- Return<IServiceManager::Transport> transportRet =
- manager->getTransport(ifaceNameHStr, serviceNameHStr);
-
- if (!transportRet.isOk()) {
- signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
- return NULL;
- }
-
- IServiceManager::Transport transport = transportRet;
-
-#ifdef __ANDROID_TREBLE__
-#ifdef __ANDROID_DEBUGGABLE__
- const char* testingOverride = std::getenv("TREBLE_TESTING_OVERRIDE");
- const bool vintfLegacy = (transport == IServiceManager::Transport::EMPTY)
- && testingOverride && !strcmp(testingOverride, "true");
-#else // __ANDROID_TREBLE__ but not __ANDROID_DEBUGGABLE__
- const bool vintfLegacy = false;
-#endif // __ANDROID_DEBUGGABLE__
-#else // not __ANDROID_TREBLE__
- const bool vintfLegacy = (transport == IServiceManager::Transport::EMPTY);
-#endif // __ANDROID_TREBLE__";
-
- if (transport != IServiceManager::Transport::HWBINDER && !vintfLegacy) {
- LOG(ERROR) << "service " << ifaceName << " declares transport method "
- << toString(transport) << " but framework expects hwbinder.";
- signalExceptionForError(env, NAME_NOT_FOUND, true /* canThrowRemoteException */);
- return NULL;
- }
-
- Return<sp<hidl::base::V1_0::IBase>> ret = manager->get(ifaceNameHStr, serviceNameHStr);
-
- if (!ret.isOk()) {
- signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
- return NULL;
- }
+ // TODO(b/67981006): true /* retry */
+ sp<IBase> ret = getRawServiceInternal(ifaceName, serviceName, false /* retry */, false /* getStub */);
sp<hardware::IBinder> service = hardware::toBinder<hidl::base::V1_0::IBase>(ret);
if (service == NULL) {