interfacesEqual: not templatized, use const sp&.

So, this will save space when the function is used, and it'll also
save copies (when the object is already of this type, otherwise, the
conversion constructor will still be invoked).

Bug: 118394906
Test: boot, hidl_test

Change-Id: I3cb81d578df43e9e91d54f52945c0c44cc35208e
diff --git a/transport/HidlTransportSupport.cpp b/transport/HidlTransportSupport.cpp
index 591ccba..c9937f1 100644
--- a/transport/HidlTransportSupport.cpp
+++ b/transport/HidlTransportSupport.cpp
@@ -23,6 +23,8 @@
 namespace android {
 namespace hardware {
 
+using ::android::hidl::base::V1_0::IBase;
+
 void configureRpcThreadpool(size_t maxThreads, bool callerWillJoin) {
     // TODO(b/32756130) this should be transport-dependent
     configureBinderRpcThreadpool(maxThreads, callerWillJoin);
@@ -40,8 +42,7 @@
     return handleBinderPoll();
 }
 
-bool setMinSchedulerPolicy(const sp<::android::hidl::base::V1_0::IBase>& service,
-                           int policy, int priority) {
+bool setMinSchedulerPolicy(const sp<IBase>& service, int policy, int priority) {
     if (service->isRemote()) {
         LOG(ERROR) << "Can't set scheduler policy on remote service.";
         return false;
@@ -74,7 +75,7 @@
     // release in the meta-version sense, we should remove this.
     std::unique_lock<std::mutex> lock = details::gServicePrioMap.lock();
 
-    std::vector<wp<::android::hidl::base::V1_0::IBase>> toDelete;
+    std::vector<wp<IBase>> toDelete;
     for (const auto& kv : details::gServicePrioMap) {
         if (kv.first.promote() == nullptr) {
             toDelete.push_back(kv.first);
@@ -88,6 +89,13 @@
     return true;
 }
 
+bool interfacesEqual(const sp<IBase>& left, const sp<IBase>& right) {
+    if (left == nullptr || right == nullptr || !left->isRemote() || !right->isRemote()) {
+        return left == right;
+    }
+    return getOrCreateCachedBinder(left.get()) == getOrCreateCachedBinder(right.get());
+}
+
 namespace details {
 int32_t getPidIfSharable() {
 #if LIBHIDL_TARGET_DEBUGGABLE
diff --git a/transport/include/hidl/HidlTransportSupport.h b/transport/include/hidl/HidlTransportSupport.h
index db1974c..69f3291 100644
--- a/transport/include/hidl/HidlTransportSupport.h
+++ b/transport/include/hidl/HidlTransportSupport.h
@@ -84,17 +84,13 @@
 bool setMinSchedulerPolicy(const sp<::android::hidl::base::V1_0::IBase>& service,
                            int policy, int priority);
 
-template <typename ILeft,
-          typename IRight,
-          typename = std::enable_if_t<std::is_same<details::i_tag, typename ILeft::_hidl_tag>::value>,
-          typename = std::enable_if_t<std::is_same<details::i_tag, typename IRight::_hidl_tag>::value>>
-bool interfacesEqual(sp<ILeft> left, sp<IRight> right) {
-    if (left == nullptr || right == nullptr || !left->isRemote() || !right->isRemote()) {
-        return left == right;
-    }
-
-    return getOrCreateCachedBinder(left.get()) == getOrCreateCachedBinder(right.get());
-}
+/**
+ * Returns whether two interfaces represent the same interface. References to interfaces in the same
+ * process will always be equivalent. However, in order to compare a service that is a proxy to a
+ * different process, its underlying structure may have to be checked.
+ */
+bool interfacesEqual(const sp<::android::hidl::base::V1_0::IBase>& left,
+                     const sp<::android::hidl::base::V1_0::IBase>& right);
 
 namespace details {