Remove libbinder from libpower

libpower doesn't use libbinder.

Bug: 263762963
Test: libpower_test
Change-Id: I35378e1d8e67c455dc8a24693c74165d3be65429
diff --git a/Android.bp b/Android.bp
index 7be18c7..409db5d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -29,6 +29,9 @@
 cc_defaults {
     name: "libpower_defaults",
     defaults: ["system_suspend_defaults"],
+    // system_suspend_defaults adds libbinder, but libbpower doesn't need it
+    // because libpower now uses libbinder_ndk.
+    exclude_shared_libs: ["libbinder"],
     cflags: [
         "-Wexit-time-destructors",
         "-fno-c++-static-destructors",
@@ -56,9 +59,9 @@
     name: "libpower_test",
     defaults: ["libpower_defaults"],
     srcs: ["power_test.cpp"],
-    static_libs: ["libpower"],
-    shared_libs: [
-        "android.system.suspend.control.internal-cpp",
+    static_libs: [
+        "libpower",
+        "android.system.suspend.control.internal-ndk",
         "android.system.suspend-V1-ndk",
     ],
     test_suites: ["device-tests"],
diff --git a/power_test.cpp b/power_test.cpp
index 9a68651..7e0b68e 100644
--- a/power_test.cpp
+++ b/power_test.cpp
@@ -14,21 +14,21 @@
  * limitations under the License.
  */
 
-#include <android/system/suspend/internal/ISuspendControlServiceInternal.h>
-#include <binder/IServiceManager.h>
+#include <aidl/android/system/suspend/internal/ISuspendControlServiceInternal.h>
+#include <android/binder_manager.h>
 #include <gtest/gtest.h>
 #include <hardware_legacy/power.h>
 #include <wakelock/wakelock.h>
 
 #include <csignal>
 #include <cstdlib>
+#include <memory>
 #include <string>
 #include <thread>
 #include <vector>
 
-using android::sp;
-using android::system::suspend::internal::ISuspendControlServiceInternal;
-using android::system::suspend::internal::WakeLockInfo;
+using aidl::android::system::suspend::internal::ISuspendControlServiceInternal;
+using aidl::android::system::suspend::internal::WakeLockInfo;
 using namespace std::chrono_literals;
 
 namespace android {
@@ -93,17 +93,16 @@
 class WakeLockTest : public ::testing::Test {
    public:
     virtual void SetUp() override {
-        sp<IBinder> control =
-            android::defaultServiceManager()->getService(android::String16("suspend_control_internal"));
-        ASSERT_NE(control, nullptr) << "failed to get the internal suspend control service";
-        controlService = interface_cast<ISuspendControlServiceInternal>(control);
+        ndk::SpAIBinder binder(AServiceManager_waitForService("suspend_control_internal"));
+        controlService = ISuspendControlServiceInternal::fromBinder(binder);
+        ASSERT_NE(controlService, nullptr) << "failed to get the internal suspend control service";
     }
 
     // Returns true iff found.
-    bool findWakeLockInfoByName(const sp<ISuspendControlServiceInternal>& service, const std::string& name,
+    bool findWakeLockInfoByName(const std::string& name,
                                 WakeLockInfo* info) {
         std::vector<WakeLockInfo> wlStats;
-        service->getWakeLockStats(&wlStats);
+        controlService->getWakeLockStats(&wlStats);
         auto it = std::find_if(wlStats.begin(), wlStats.end(),
                                [&name](const auto& x) { return x.name == name; });
         if (it != wlStats.end()) {
@@ -114,7 +113,7 @@
     }
 
     // All userspace wake locks are registered with system suspend.
-    sp<ISuspendControlServiceInternal> controlService;
+    std::shared_ptr<ISuspendControlServiceInternal> controlService;
 };
 
 // Test RAII properties of WakeLock destructor.
@@ -127,7 +126,7 @@
         }
 
         WakeLockInfo info;
-        auto success = findWakeLockInfoByName(controlService, name, &info);
+        auto success = findWakeLockInfoByName(name, &info);
         ASSERT_TRUE(success);
         ASSERT_EQ(info.name, name);
         ASSERT_EQ(info.pid, getpid());
@@ -138,7 +137,7 @@
     // come on binder thread. Sleep to make sure that stats are reported *after* wake lock release.
     std::this_thread::sleep_for(1ms);
     WakeLockInfo info;
-    auto success = findWakeLockInfoByName(controlService, name, &info);
+    auto success = findWakeLockInfoByName(name, &info);
     ASSERT_TRUE(success);
     ASSERT_EQ(info.name, name);
     ASSERT_EQ(info.pid, getpid());