Add a helper function to get service runtime

The bufferhub binder service would be used a lot after migrated to
binder, so have a helper function and including all the checks inside it
should help a lot.

Also rewrite the test to use and check this function as well.

Test: "atest buffer_hub_binder_service-test" passed.
Bug: 112338294
Change-Id: Ifa66f25cc284b2c03586b8dc75e05801bf393fa6
diff --git a/services/vr/bufferhubd/buffer_hub_binder.cpp b/services/vr/bufferhubd/buffer_hub_binder.cpp
index 26de45d..b507717 100644
--- a/services/vr/bufferhubd/buffer_hub_binder.cpp
+++ b/services/vr/bufferhubd/buffer_hub_binder.cpp
@@ -58,5 +58,24 @@
   return NO_ERROR;
 }
 
+sp<IBufferHub> BufferHubBinderService::getServiceProxy() {
+  sp<IServiceManager> sm = defaultServiceManager();
+  sp<IBinder> service = sm->checkService(String16(getServiceName()));
+
+  if (service == nullptr) {
+    ALOGE("getServiceProxy(): %s binder service not found!", getServiceName());
+    return nullptr;
+  }
+
+  sp<IBufferHub> ret = interface_cast<IBufferHub>(service);
+  if (ret == nullptr) {
+    ALOGE("getServiceProxy(): %s binder service type casting error!",
+          getServiceName());
+    return nullptr;
+  }
+
+  return ret;
+}
+
 }  // namespace dvr
 }  // namespace android
diff --git a/services/vr/bufferhubd/include/private/dvr/buffer_hub_binder.h b/services/vr/bufferhubd/include/private/dvr/buffer_hub_binder.h
index b47c34b..672a348 100644
--- a/services/vr/bufferhubd/include/private/dvr/buffer_hub_binder.h
+++ b/services/vr/bufferhubd/include/private/dvr/buffer_hub_binder.h
@@ -18,6 +18,9 @@
   // usage: adb shell dumpsys bufferhubd
   virtual status_t dump(int fd, const Vector<String16>& args) override;
 
+  // Helper function to get the BpReference to this service
+  static sp<IBufferHub> getServiceProxy();
+
  private:
   std::shared_ptr<BufferHubService> pdx_service_;
 };
diff --git a/services/vr/bufferhubd/tests/buffer_hub_binder_service-test.cpp b/services/vr/bufferhubd/tests/buffer_hub_binder_service-test.cpp
index 67ac1cb..587e6db 100644
--- a/services/vr/bufferhubd/tests/buffer_hub_binder_service-test.cpp
+++ b/services/vr/bufferhubd/tests/buffer_hub_binder_service-test.cpp
@@ -1,4 +1,3 @@
-#include <binder/IServiceManager.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 #include <private/dvr/buffer_hub_binder.h>
@@ -8,6 +7,8 @@
 
 namespace {
 
+using testing::Ne;
+
 class BufferHubBinderServiceTest : public ::testing::Test {
   // Add setup and teardown if necessary
 };
@@ -15,10 +16,8 @@
 TEST_F(BufferHubBinderServiceTest, TestInitialize) {
   // Create a new service will kill the current one.
   // So just check if Binder service is running
-  sp<IServiceManager> sm = defaultServiceManager();
-  sp<IBinder> service =
-      sm->checkService(String16(BufferHubBinderService::getServiceName()));
-  EXPECT_THAT(service, ::testing::Ne(nullptr));
+  sp<IBufferHub> service = BufferHubBinderService::getServiceProxy();
+  EXPECT_THAT(service, Ne(nullptr));
 }
 
 }  // namespace