From: Steven Moreland Date: Mon, 23 Oct 2017 07:09:33 +0000 (-0700) Subject: HIDL Java getService now the same as C++. X-Git-Tag: android-x86-9.0-r1~347^2~3^2~1^2^2^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c1f00f8cd895e38c74ed1cb1adff33065ccecd06;p=android-x86%2Fframeworks-base.git HIDL Java getService now the same as C++. getService: wait for service if it is declared in the manifest tryGetService: only return if the service is immediately available Bug: 67981006 Test: hidl_test_java Change-Id: I4485b84f0fde98851cf5f64d198a8c5410795c8c --- diff --git a/core/java/android/os/HwBinder.java b/core/java/android/os/HwBinder.java index 270e63f408a7..c1c65ffcc049 100644 --- a/core/java/android/os/HwBinder.java +++ b/core/java/android/os/HwBinder.java @@ -48,7 +48,8 @@ public abstract class HwBinder implements IHwBinder { public static native final IHwBinder getService( String iface, - String serviceName) + String serviceName, + boolean isTry) throws RemoteException, NoSuchElementException; public static native final void configureRpcThreadpool( diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp index fe14d483743f..7fd97b232f07 100644 --- a/core/jni/android_os_HwBinder.cpp +++ b/core/jni/android_os_HwBinder.cpp @@ -303,7 +303,8 @@ static jobject JHwBinder_native_getService( JNIEnv *env, jclass /* clazzObj */, jstring ifaceNameObj, - jstring serviceNameObj) { + jstring serviceNameObj, + jboolean isTry) { using ::android::hidl::base::V1_0::IBase; using ::android::hardware::details::getRawServiceInternal; @@ -331,8 +332,7 @@ static jobject JHwBinder_native_getService( std::string serviceName(serviceNameCStr); env->ReleaseStringUTFChars(serviceNameObj, serviceNameCStr); - // TODO(b/67981006): true /* retry */ - sp ret = getRawServiceInternal(ifaceName, serviceName, false /* retry */, false /* getStub */); + sp ret = getRawServiceInternal(ifaceName, serviceName, !isTry /* retry */, false /* getStub */); sp service = hardware::toBinder(ret); if (service == NULL) { @@ -371,7 +371,7 @@ static JNINativeMethod gMethods[] = { { "registerService", "(Ljava/lang/String;)V", (void *)JHwBinder_native_registerService }, - { "getService", "(Ljava/lang/String;Ljava/lang/String;)L" PACKAGE_PATH "/IHwBinder;", + { "getService", "(Ljava/lang/String;Ljava/lang/String;Z)L" PACKAGE_PATH "/IHwBinder;", (void *)JHwBinder_native_getService }, { "configureRpcThreadpool", "(JZ)V",