diff --git a/Android.bp b/Android.bp index 7be18c7..409db5d 100644 --- a/Android.bp +++ b/Android.bp @@ -29,6 +29,9 @@ cc_library_headers { 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 @@ cc_test { 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 -#include +#include +#include #include #include #include #include #include +#include #include #include #include -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 @@ TEST(LibpowerTest, WakeLockStressTest) { class WakeLockTest : public ::testing::Test { public: virtual void SetUp() override { - sp control = - android::defaultServiceManager()->getService(android::String16("suspend_control_internal")); - ASSERT_NE(control, nullptr) << "failed to get the internal suspend control service"; - controlService = interface_cast(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& service, const std::string& name, + bool findWakeLockInfoByName(const std::string& name, WakeLockInfo* info) { std::vector 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 @@ class WakeLockTest : public ::testing::Test { } // All userspace wake locks are registered with system suspend. - sp controlService; + std::shared_ptr controlService; }; // Test RAII properties of WakeLock destructor. @@ -127,7 +126,7 @@ TEST_F(WakeLockTest, WakeLockDestructor) { } 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 @@ TEST_F(WakeLockTest, WakeLockDestructor) { // 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());