Merge "Use IBase instead of IBinder for IServiceManager." am: 8ead2f0c9a am: dab9e7bfc7
am: bc9c711513

Change-Id: I6047e1d936ef515d531a8ad4b875ab443ff2f50d
diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp
index 10090a1..23a988a 100644
--- a/core/jni/android_os_HwBinder.cpp
+++ b/core/jni/android_os_HwBinder.cpp
@@ -25,6 +25,8 @@
 
 #include <JNIHelp.h>
 #include <android/hidl/manager/1.0/IServiceManager.h>
+#include <android/hidl/base/1.0/IBase.h>
+#include <android/hidl/base/1.0/IHwBase.h>
 #include <android_runtime/AndroidRuntime.h>
 #include <hidl/ServiceManagement.h>
 #include <hidl/Status.h>
@@ -239,11 +241,11 @@
     using android::hidl::manager::V1_0::IServiceManager;
 
     sp<hardware::IBinder> binder = JHwBinder::GetNativeContext(env, thiz);
-
+    sp<hidl::base::V1_0::IBase> base = hidl::base::V1_0::IHwBase::asInterface(binder);
     bool ok = hardware::defaultServiceManager()->add(
                 interfaceChain,
                 serviceName,
-                binder);
+                base);
 
     env->ReleaseStringUTFChars(serviceNameObj, serviceName);
     serviceName = NULL;
@@ -289,8 +291,10 @@
     hardware::defaultServiceManager()->get(
             ifaceName,
             serviceName,
-            [&service](sp<hardware::IBinder> out) {
-                service = out;
+            [&service](sp<hidl::base::V1_0::IBase> out) {
+                service = hardware::toBinder<
+                        hidl::base::V1_0::IBase, hidl::base::V1_0::IHwBase
+                    >(out);
             });
 
     env->ReleaseStringUTFChars(ifaceNameObj, ifaceName);