diff options
author | 2023-05-22 13:12:16 -0700 | |
---|---|---|
committer | 2023-05-24 18:47:13 -0700 | |
commit | 99f6f3cfd0ebc10af5fec9423323d5d73e01193a (patch) | |
tree | 8f3627532ff0babbff79cd3558c85f3e9de531c9 | |
parent | a525c455397d038604ed026e4889ef606843eced (diff) |
Update power manager to use power ndk
Bug: 280438886
Test: atest libpowermanager_test libsurfaceflinger_unittest libcompositionengine_test
Change-Id: I6bc17035665d5654b6becf71aa4e29ab9351cae8
26 files changed, 373 insertions, 306 deletions
diff --git a/include/powermanager/PowerHalController.h b/include/powermanager/PowerHalController.h index 71a36d09e5..32ceb2805b 100644 --- a/include/powermanager/PowerHalController.h +++ b/include/powermanager/PowerHalController.h @@ -17,11 +17,11 @@ #ifndef ANDROID_POWERHALCONTROLLER_H #define ANDROID_POWERHALCONTROLLER_H +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/IPowerHintSession.h> +#include <aidl/android/hardware/power/Mode.h> #include <android-base/thread_annotations.h> -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/IPowerHintSession.h> -#include <android/hardware/power/Mode.h> #include <powermanager/PowerHalWrapper.h> namespace android { @@ -55,11 +55,13 @@ public: void init(); - virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) override; - virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) override; - virtual HalResult<sp<hardware::power::IPowerHintSession>> createHintSession( - int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, - int64_t durationNanos) override; + virtual HalResult<void> setBoost(aidl::android::hardware::power::Boost boost, + int32_t durationMs) override; + virtual HalResult<void> setMode(aidl::android::hardware::power::Mode mode, + bool enabled) override; + virtual HalResult<std::shared_ptr<aidl::android::hardware::power::IPowerHintSession>> + createHintSession(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, + int64_t durationNanos) override; virtual HalResult<int64_t> getHintSessionPreferredRate() override; private: diff --git a/include/powermanager/PowerHalLoader.h b/include/powermanager/PowerHalLoader.h index e0384f31db..cbbfa597ba 100644 --- a/include/powermanager/PowerHalLoader.h +++ b/include/powermanager/PowerHalLoader.h @@ -17,11 +17,11 @@ #ifndef ANDROID_POWERHALLOADER_H #define ANDROID_POWERHALLOADER_H +#include <aidl/android/hardware/power/IPower.h> #include <android-base/thread_annotations.h> #include <android/hardware/power/1.1/IPower.h> #include <android/hardware/power/1.2/IPower.h> #include <android/hardware/power/1.3/IPower.h> -#include <android/hardware/power/IPower.h> namespace android { @@ -31,7 +31,7 @@ namespace power { class PowerHalLoader { public: static void unloadAll(); - static sp<hardware::power::IPower> loadAidl(); + static std::shared_ptr<aidl::android::hardware::power::IPower> loadAidl(); static sp<hardware::power::V1_0::IPower> loadHidlV1_0(); static sp<hardware::power::V1_1::IPower> loadHidlV1_1(); static sp<hardware::power::V1_2::IPower> loadHidlV1_2(); @@ -39,7 +39,7 @@ public: private: static std::mutex gHalMutex; - static sp<hardware::power::IPower> gHalAidl GUARDED_BY(gHalMutex); + static std::shared_ptr<aidl::android::hardware::power::IPower> gHalAidl GUARDED_BY(gHalMutex); static sp<hardware::power::V1_0::IPower> gHalHidlV1_0 GUARDED_BY(gHalMutex); static sp<hardware::power::V1_1::IPower> gHalHidlV1_1 GUARDED_BY(gHalMutex); static sp<hardware::power::V1_2::IPower> gHalHidlV1_2 GUARDED_BY(gHalMutex); diff --git a/include/powermanager/PowerHalWrapper.h b/include/powermanager/PowerHalWrapper.h index 8028aa86e1..4e4a1b000d 100644 --- a/include/powermanager/PowerHalWrapper.h +++ b/include/powermanager/PowerHalWrapper.h @@ -17,14 +17,15 @@ #ifndef ANDROID_POWERHALWRAPPER_H #define ANDROID_POWERHALWRAPPER_H +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/IPowerHintSession.h> +#include <aidl/android/hardware/power/Mode.h> #include <android-base/thread_annotations.h> #include <android/hardware/power/1.1/IPower.h> #include <android/hardware/power/1.2/IPower.h> #include <android/hardware/power/1.3/IPower.h> -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/IPowerHintSession.h> -#include <android/hardware/power/Mode.h> +#include <binder/Status.h> namespace android { @@ -47,7 +48,7 @@ public: } static HalResult<T> unsupported() { return HalResult("", /* unsupported= */ true); } - static HalResult<T> fromStatus(binder::Status status, T data) { + static HalResult<T> fromStatus(const binder::Status& status, T data) { if (status.exceptionCode() == binder::Status::EX_UNSUPPORTED_OPERATION) { return HalResult<T>::unsupported(); } @@ -56,14 +57,28 @@ public: } return HalResult<T>::failed(std::string(status.toString8().c_str())); } - static HalResult<T> fromStatus(hardware::power::V1_0::Status status, T data); + + static HalResult<T> fromStatus(const ndk::ScopedAStatus& status, T data) { + if (status.getExceptionCode() == binder::Status::EX_UNSUPPORTED_OPERATION) { + return HalResult<T>::unsupported(); + } + if (status.isOk()) { + return HalResult<T>::ok(data); + } + return HalResult<T>::failed(std::string(status.getDescription())); + } template <typename R> - static HalResult<T> fromReturn(hardware::Return<R>& ret, T data); + static HalResult<T> fromReturn(hardware::Return<R>& ret, T data) { + return ret.isOk() ? HalResult<T>::ok(data) : HalResult<T>::failed(ret.description()); + } template <typename R> static HalResult<T> fromReturn(hardware::Return<R>& ret, hardware::power::V1_0::Status status, - T data); + T data) { + return ret.isOk() ? HalResult<T>::fromStatus(status, data) + : HalResult<T>::failed(ret.description()); + } // This will throw std::bad_optional_access if this result is not ok. const T& value() const { return mValue.value(); } @@ -91,12 +106,30 @@ public: static HalResult<void> failed(std::string msg) { return HalResult(std::move(msg)); } static HalResult<void> unsupported() { return HalResult(/* unsupported= */ true); } - static HalResult<void> fromStatus(status_t status); - static HalResult<void> fromStatus(binder::Status status); - static HalResult<void> fromStatus(hardware::power::V1_0::Status status); + static HalResult<void> fromStatus(const binder::Status& status) { + if (status.exceptionCode() == binder::Status::EX_UNSUPPORTED_OPERATION) { + return HalResult<void>::unsupported(); + } + if (status.isOk()) { + return HalResult<void>::ok(); + } + return HalResult<void>::failed(std::string(status.toString8().c_str())); + } + + static HalResult<void> fromStatus(const ndk::ScopedAStatus& status) { + if (status.getExceptionCode() == binder::Status::EX_UNSUPPORTED_OPERATION) { + return HalResult<void>::unsupported(); + } + if (status.isOk()) { + return HalResult<void>::ok(); + } + return HalResult<void>::failed(std::string(status.getDescription())); + } template <typename R> - static HalResult<void> fromReturn(hardware::Return<R>& ret); + static HalResult<void> fromReturn(hardware::Return<R>& ret) { + return ret.isOk() ? HalResult<void>::ok() : HalResult<void>::failed(ret.description()); + } bool isOk() const { return !mUnsupported && !mFailed; } bool isFailed() const { return !mUnsupported && mFailed; } @@ -119,11 +152,12 @@ class HalWrapper { public: virtual ~HalWrapper() = default; - virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) = 0; - virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) = 0; - virtual HalResult<sp<hardware::power::IPowerHintSession>> createHintSession( - int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, - int64_t durationNanos) = 0; + virtual HalResult<void> setBoost(aidl::android::hardware::power::Boost boost, + int32_t durationMs) = 0; + virtual HalResult<void> setMode(aidl::android::hardware::power::Mode mode, bool enabled) = 0; + virtual HalResult<std::shared_ptr<aidl::android::hardware::power::IPowerHintSession>> + createHintSession(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, + int64_t durationNanos) = 0; virtual HalResult<int64_t> getHintSessionPreferredRate() = 0; }; @@ -131,14 +165,15 @@ public: class EmptyHalWrapper : public HalWrapper { public: EmptyHalWrapper() = default; - ~EmptyHalWrapper() = default; + ~EmptyHalWrapper() override = default; - virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) override; - virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) override; - virtual HalResult<sp<hardware::power::IPowerHintSession>> createHintSession( + HalResult<void> setBoost(aidl::android::hardware::power::Boost boost, + int32_t durationMs) override; + HalResult<void> setMode(aidl::android::hardware::power::Mode mode, bool enabled) override; + HalResult<std::shared_ptr<aidl::android::hardware::power::IPowerHintSession>> createHintSession( int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos) override; - virtual HalResult<int64_t> getHintSessionPreferredRate() override; + HalResult<int64_t> getHintSessionPreferredRate() override; }; // Wrapper for the HIDL Power HAL v1.0. @@ -146,14 +181,15 @@ class HidlHalWrapperV1_0 : public HalWrapper { public: explicit HidlHalWrapperV1_0(sp<hardware::power::V1_0::IPower> handleV1_0) : mHandleV1_0(std::move(handleV1_0)) {} - virtual ~HidlHalWrapperV1_0() = default; + ~HidlHalWrapperV1_0() override = default; - virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) override; - virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) override; - virtual HalResult<sp<hardware::power::IPowerHintSession>> createHintSession( + HalResult<void> setBoost(aidl::android::hardware::power::Boost boost, + int32_t durationMs) override; + HalResult<void> setMode(aidl::android::hardware::power::Mode mode, bool enabled) override; + HalResult<std::shared_ptr<aidl::android::hardware::power::IPowerHintSession>> createHintSession( int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos) override; - virtual HalResult<int64_t> getHintSessionPreferredRate() override; + HalResult<int64_t> getHintSessionPreferredRate() override; protected: const sp<hardware::power::V1_0::IPower> mHandleV1_0; @@ -167,67 +203,71 @@ private: // Wrapper for the HIDL Power HAL v1.1. class HidlHalWrapperV1_1 : public HidlHalWrapperV1_0 { public: - HidlHalWrapperV1_1(sp<hardware::power::V1_1::IPower> handleV1_1) + explicit HidlHalWrapperV1_1(sp<hardware::power::V1_1::IPower> handleV1_1) : HidlHalWrapperV1_0(std::move(handleV1_1)) {} - virtual ~HidlHalWrapperV1_1() = default; + ~HidlHalWrapperV1_1() override = default; protected: - virtual HalResult<void> sendPowerHint(hardware::power::V1_3::PowerHint hintId, - uint32_t data) override; + HalResult<void> sendPowerHint(hardware::power::V1_3::PowerHint hintId, uint32_t data) override; }; // Wrapper for the HIDL Power HAL v1.2. class HidlHalWrapperV1_2 : public HidlHalWrapperV1_1 { public: - virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) override; - virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) override; - HidlHalWrapperV1_2(sp<hardware::power::V1_2::IPower> handleV1_2) + HalResult<void> setBoost(aidl::android::hardware::power::Boost boost, + int32_t durationMs) override; + HalResult<void> setMode(aidl::android::hardware::power::Mode mode, bool enabled) override; + explicit HidlHalWrapperV1_2(sp<hardware::power::V1_2::IPower> handleV1_2) : HidlHalWrapperV1_1(std::move(handleV1_2)) {} - virtual ~HidlHalWrapperV1_2() = default; + ~HidlHalWrapperV1_2() override = default; protected: - virtual HalResult<void> sendPowerHint(hardware::power::V1_3::PowerHint hintId, - uint32_t data) override; + HalResult<void> sendPowerHint(hardware::power::V1_3::PowerHint hintId, uint32_t data) override; }; // Wrapper for the HIDL Power HAL v1.3. class HidlHalWrapperV1_3 : public HidlHalWrapperV1_2 { public: - virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) override; - HidlHalWrapperV1_3(sp<hardware::power::V1_3::IPower> handleV1_3) + HalResult<void> setMode(aidl::android::hardware::power::Mode mode, bool enabled) override; + explicit HidlHalWrapperV1_3(sp<hardware::power::V1_3::IPower> handleV1_3) : HidlHalWrapperV1_2(std::move(handleV1_3)) {} - virtual ~HidlHalWrapperV1_3() = default; + ~HidlHalWrapperV1_3() override = default; protected: - virtual HalResult<void> sendPowerHint(hardware::power::V1_3::PowerHint hintId, - uint32_t data) override; + HalResult<void> sendPowerHint(hardware::power::V1_3::PowerHint hintId, uint32_t data) override; }; // Wrapper for the AIDL Power HAL. class AidlHalWrapper : public HalWrapper { public: - explicit AidlHalWrapper(sp<hardware::power::IPower> handle) : mHandle(std::move(handle)) {} - virtual ~AidlHalWrapper() = default; - - virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) override; - virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) override; - virtual HalResult<sp<hardware::power::IPowerHintSession>> createHintSession( + explicit AidlHalWrapper(std::shared_ptr<aidl::android::hardware::power::IPower> handle) + : mHandle(std::move(handle)) {} + ~AidlHalWrapper() override = default; + + HalResult<void> setBoost(aidl::android::hardware::power::Boost boost, + int32_t durationMs) override; + HalResult<void> setMode(aidl::android::hardware::power::Mode mode, bool enabled) override; + HalResult<std::shared_ptr<aidl::android::hardware::power::IPowerHintSession>> createHintSession( int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos) override; - virtual HalResult<int64_t> getHintSessionPreferredRate() override; + HalResult<int64_t> getHintSessionPreferredRate() override; private: // Control access to the boost and mode supported arrays. std::mutex mBoostMutex; std::mutex mModeMutex; - sp<hardware::power::IPower> mHandle; + std::shared_ptr<aidl::android::hardware::power::IPower> mHandle; // Android framework only sends boost upto DISPLAY_UPDATE_IMMINENT. // Need to increase the array size if more boost supported. - std::array<std::atomic<HalSupport>, - static_cast<int32_t>(hardware::power::Boost::DISPLAY_UPDATE_IMMINENT) + 1> + std::array< + std::atomic<HalSupport>, + static_cast<int32_t>(aidl::android::hardware::power::Boost::DISPLAY_UPDATE_IMMINENT) + + 1> mBoostSupportedArray GUARDED_BY(mBoostMutex) = {HalSupport::UNKNOWN}; std::array<std::atomic<HalSupport>, - static_cast<int32_t>(*(android::enum_range<hardware::power::Mode>().end() - 1)) + 1> + static_cast<int32_t>( + *(ndk::enum_range<aidl::android::hardware::power::Mode>().end() - 1)) + + 1> mModeSupportedArray GUARDED_BY(mModeMutex) = {HalSupport::UNKNOWN}; }; diff --git a/services/powermanager/Android.bp b/services/powermanager/Android.bp index b34e54fd6b..2523f3b6a6 100644 --- a/services/powermanager/Android.bp +++ b/services/powermanager/Android.bp @@ -33,6 +33,7 @@ cc_library_shared { shared_libs: [ "libbinder", + "libbinder_ndk", "libhidlbase", "liblog", "libutils", @@ -40,7 +41,7 @@ cc_library_shared { "android.hardware.power@1.1", "android.hardware.power@1.2", "android.hardware.power@1.3", - "android.hardware.power-V4-cpp", + "android.hardware.power-V4-ndk", ], export_shared_lib_headers: [ @@ -48,7 +49,7 @@ cc_library_shared { "android.hardware.power@1.1", "android.hardware.power@1.2", "android.hardware.power@1.3", - "android.hardware.power-V4-cpp", + "android.hardware.power-V4-ndk", ], cflags: [ diff --git a/services/powermanager/PowerHalController.cpp b/services/powermanager/PowerHalController.cpp index f89035fd1c..9a23c848c9 100644 --- a/services/powermanager/PowerHalController.cpp +++ b/services/powermanager/PowerHalController.cpp @@ -15,11 +15,11 @@ */ #define LOG_TAG "PowerHalController" +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/IPowerHintSession.h> +#include <aidl/android/hardware/power/Mode.h> #include <android/hardware/power/1.1/IPower.h> -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/IPowerHintSession.h> -#include <android/hardware/power/Mode.h> #include <powermanager/PowerHalController.h> #include <powermanager/PowerHalLoader.h> #include <utils/Log.h> @@ -33,7 +33,8 @@ namespace power { // ------------------------------------------------------------------------------------------------- std::unique_ptr<HalWrapper> HalConnector::connect() { - if (sp<IPower> halAidl = PowerHalLoader::loadAidl()) { + if (std::shared_ptr<aidl::android::hardware::power::IPower> halAidl = + PowerHalLoader::loadAidl()) { return std::make_unique<AidlHalWrapper>(halAidl); } // If V1_0 isn't defined, none of them are @@ -90,20 +91,24 @@ HalResult<T> PowerHalController::processHalResult(HalResult<T> result, const cha return result; } -HalResult<void> PowerHalController::setBoost(Boost boost, int32_t durationMs) { +HalResult<void> PowerHalController::setBoost(aidl::android::hardware::power::Boost boost, + int32_t durationMs) { std::shared_ptr<HalWrapper> handle = initHal(); auto result = handle->setBoost(boost, durationMs); return processHalResult(result, "setBoost"); } -HalResult<void> PowerHalController::setMode(Mode mode, bool enabled) { +HalResult<void> PowerHalController::setMode(aidl::android::hardware::power::Mode mode, + bool enabled) { std::shared_ptr<HalWrapper> handle = initHal(); auto result = handle->setMode(mode, enabled); return processHalResult(result, "setMode"); } -HalResult<sp<IPowerHintSession>> PowerHalController::createHintSession( - int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos) { +HalResult<std::shared_ptr<aidl::android::hardware::power::IPowerHintSession>> +PowerHalController::createHintSession(int32_t tgid, int32_t uid, + const std::vector<int32_t>& threadIds, + int64_t durationNanos) { std::shared_ptr<HalWrapper> handle = initHal(); auto result = handle->createHintSession(tgid, uid, threadIds, durationNanos); return processHalResult(result, "createHintSession"); diff --git a/services/powermanager/PowerHalLoader.cpp b/services/powermanager/PowerHalLoader.cpp index 6bd40f8ff2..22144615da 100644 --- a/services/powermanager/PowerHalLoader.cpp +++ b/services/powermanager/PowerHalLoader.cpp @@ -16,10 +16,11 @@ #define LOG_TAG "PowerHalLoader" +#include <aidl/android/hardware/power/IPower.h> +#include <android/binder_manager.h> #include <android/hardware/power/1.1/IPower.h> #include <android/hardware/power/1.2/IPower.h> #include <android/hardware/power/1.3/IPower.h> -#include <android/hardware/power/IPower.h> #include <binder/IServiceManager.h> #include <hardware/power.h> #include <hardware_legacy/power.h> @@ -54,7 +55,7 @@ sp<T> loadHal(bool& exists, sp<T>& hal, F& loadFn, const char* halName) { // ------------------------------------------------------------------------------------------------- std::mutex PowerHalLoader::gHalMutex; -sp<IPower> PowerHalLoader::gHalAidl = nullptr; +std::shared_ptr<aidl::android::hardware::power::IPower> PowerHalLoader::gHalAidl = nullptr; sp<V1_0::IPower> PowerHalLoader::gHalHidlV1_0 = nullptr; sp<V1_1::IPower> PowerHalLoader::gHalHidlV1_1 = nullptr; sp<V1_2::IPower> PowerHalLoader::gHalHidlV1_2 = nullptr; @@ -69,11 +70,30 @@ void PowerHalLoader::unloadAll() { gHalHidlV1_3 = nullptr; } -sp<IPower> PowerHalLoader::loadAidl() { +std::shared_ptr<aidl::android::hardware::power::IPower> PowerHalLoader::loadAidl() { std::lock_guard<std::mutex> lock(gHalMutex); static bool gHalExists = true; - static auto loadFn = []() { return waitForVintfService<IPower>(); }; - return loadHal<IPower>(gHalExists, gHalAidl, loadFn, "AIDL"); + if (!gHalExists) { + return nullptr; + } + if (gHalAidl) { + return gHalAidl; + } + auto aidlServiceName = + std::string(aidl::android::hardware::power::IPower::descriptor) + "/default"; + if (!AServiceManager_isDeclared(aidlServiceName.c_str())) { + gHalExists = false; + return nullptr; + } + gHalAidl = aidl::android::hardware::power::IPower::fromBinder( + ndk::SpAIBinder(AServiceManager_waitForService(aidlServiceName.c_str()))); + if (gHalAidl) { + ALOGI("Successfully connected to Power HAL AIDL service."); + } else { + ALOGI("Power HAL AIDL service not available."); + gHalExists = false; + } + return gHalAidl; } sp<V1_0::IPower> PowerHalLoader::loadHidlV1_0() { diff --git a/services/powermanager/PowerHalWrapper.cpp b/services/powermanager/PowerHalWrapper.cpp index 9e7adf8e5c..76afbfc646 100644 --- a/services/powermanager/PowerHalWrapper.cpp +++ b/services/powermanager/PowerHalWrapper.cpp @@ -15,86 +15,49 @@ */ #define LOG_TAG "HalWrapper" -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPowerHintSession.h> -#include <android/hardware/power/Mode.h> +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPowerHintSession.h> +#include <aidl/android/hardware/power/Mode.h> #include <powermanager/PowerHalWrapper.h> #include <utils/Log.h> #include <cinttypes> using namespace android::hardware::power; -namespace Aidl = android::hardware::power; +namespace Aidl = aidl::android::hardware::power; namespace android { namespace power { // ------------------------------------------------------------------------------------------------- - -inline HalResult<void> toHalResult(const binder::Status& result) { +inline HalResult<void> toHalResult(const ndk::ScopedAStatus& result) { if (result.isOk()) { return HalResult<void>::ok(); } - ALOGE("Power HAL request failed: %s", result.toString8().c_str()); - return HalResult<void>::fromStatus(result); -} - -template <typename T> -template <typename R> -HalResult<T> HalResult<T>::fromReturn(hardware::Return<R>& ret, T data) { - return ret.isOk() ? HalResult<T>::ok(data) : HalResult<T>::failed(ret.description()); -} - -template <typename T> -template <typename R> -HalResult<T> HalResult<T>::fromReturn(hardware::Return<R>& ret, V1_0::Status status, T data) { - return ret.isOk() ? HalResult<T>::fromStatus(status, data) - : HalResult<T>::failed(ret.description()); -} - -// ------------------------------------------------------------------------------------------------- - -HalResult<void> HalResult<void>::fromStatus(status_t status) { - if (status == android::OK) { - return HalResult<void>::ok(); - } - return HalResult<void>::failed(statusToString(status)); + ALOGE("Power HAL request failed: %s", result.getDescription().c_str()); + return HalResult<void>::failed(result.getDescription()); } -HalResult<void> HalResult<void>::fromStatus(binder::Status status) { - if (status.exceptionCode() == binder::Status::EX_UNSUPPORTED_OPERATION) { - return HalResult<void>::unsupported(); - } - if (status.isOk()) { - return HalResult<void>::ok(); - } - return HalResult<void>::failed(std::string(status.toString8().c_str())); -} - -template <typename R> -HalResult<void> HalResult<void>::fromReturn(hardware::Return<R>& ret) { - return ret.isOk() ? HalResult<void>::ok() : HalResult<void>::failed(ret.description()); -} // ------------------------------------------------------------------------------------------------- -HalResult<void> EmptyHalWrapper::setBoost(Boost boost, int32_t durationMs) { +HalResult<void> EmptyHalWrapper::setBoost(Aidl::Boost boost, int32_t durationMs) { ALOGV("Skipped setBoost %s with duration %dms because Power HAL not available", toString(boost).c_str(), durationMs); return HalResult<void>::unsupported(); } -HalResult<void> EmptyHalWrapper::setMode(Mode mode, bool enabled) { +HalResult<void> EmptyHalWrapper::setMode(Aidl::Mode mode, bool enabled) { ALOGV("Skipped setMode %s to %s because Power HAL not available", toString(mode).c_str(), enabled ? "true" : "false"); return HalResult<void>::unsupported(); } -HalResult<sp<Aidl::IPowerHintSession>> EmptyHalWrapper::createHintSession( +HalResult<std::shared_ptr<Aidl::IPowerHintSession>> EmptyHalWrapper::createHintSession( int32_t, int32_t, const std::vector<int32_t>& threadIds, int64_t) { ALOGV("Skipped createHintSession(task num=%zu) because Power HAL not available", threadIds.size()); - return HalResult<sp<Aidl::IPowerHintSession>>::unsupported(); + return HalResult<std::shared_ptr<Aidl::IPowerHintSession>>::unsupported(); } HalResult<int64_t> EmptyHalWrapper::getHintSessionPreferredRate() { @@ -104,8 +67,8 @@ HalResult<int64_t> EmptyHalWrapper::getHintSessionPreferredRate() { // ------------------------------------------------------------------------------------------------- -HalResult<void> HidlHalWrapperV1_0::setBoost(Boost boost, int32_t durationMs) { - if (boost == Boost::INTERACTION) { +HalResult<void> HidlHalWrapperV1_0::setBoost(Aidl::Boost boost, int32_t durationMs) { + if (boost == Aidl::Boost::INTERACTION) { return sendPowerHint(V1_3::PowerHint::INTERACTION, durationMs); } else { ALOGV("Skipped setBoost %s because Power HAL AIDL not available", toString(boost).c_str()); @@ -113,20 +76,20 @@ HalResult<void> HidlHalWrapperV1_0::setBoost(Boost boost, int32_t durationMs) { } } -HalResult<void> HidlHalWrapperV1_0::setMode(Mode mode, bool enabled) { +HalResult<void> HidlHalWrapperV1_0::setMode(Aidl::Mode mode, bool enabled) { uint32_t data = enabled ? 1 : 0; switch (mode) { - case Mode::LAUNCH: + case Aidl::Mode::LAUNCH: return sendPowerHint(V1_3::PowerHint::LAUNCH, data); - case Mode::LOW_POWER: + case Aidl::Mode::LOW_POWER: return sendPowerHint(V1_3::PowerHint::LOW_POWER, data); - case Mode::SUSTAINED_PERFORMANCE: + case Aidl::Mode::SUSTAINED_PERFORMANCE: return sendPowerHint(V1_3::PowerHint::SUSTAINED_PERFORMANCE, data); - case Mode::VR: + case Aidl::Mode::VR: return sendPowerHint(V1_3::PowerHint::VR_MODE, data); - case Mode::INTERACTIVE: + case Aidl::Mode::INTERACTIVE: return setInteractive(enabled); - case Mode::DOUBLE_TAP_TO_WAKE: + case Aidl::Mode::DOUBLE_TAP_TO_WAKE: return setFeature(V1_0::Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, enabled); default: ALOGV("Skipped setMode %s because Power HAL AIDL not available", @@ -150,11 +113,11 @@ HalResult<void> HidlHalWrapperV1_0::setFeature(V1_0::Feature feature, bool enabl return HalResult<void>::fromReturn(ret); } -HalResult<sp<hardware::power::IPowerHintSession>> HidlHalWrapperV1_0::createHintSession( +HalResult<std::shared_ptr<Aidl::IPowerHintSession>> HidlHalWrapperV1_0::createHintSession( int32_t, int32_t, const std::vector<int32_t>& threadIds, int64_t) { ALOGV("Skipped createHintSession(task num=%zu) because Power HAL not available", threadIds.size()); - return HalResult<sp<Aidl::IPowerHintSession>>::unsupported(); + return HalResult<std::shared_ptr<Aidl::IPowerHintSession>>::unsupported(); } HalResult<int64_t> HidlHalWrapperV1_0::getHintSessionPreferredRate() { @@ -178,26 +141,26 @@ HalResult<void> HidlHalWrapperV1_2::sendPowerHint(V1_3::PowerHint hintId, uint32 return HalResult<void>::fromReturn(ret); } -HalResult<void> HidlHalWrapperV1_2::setBoost(Boost boost, int32_t durationMs) { +HalResult<void> HidlHalWrapperV1_2::setBoost(Aidl::Boost boost, int32_t durationMs) { switch (boost) { - case Boost::CAMERA_SHOT: + case Aidl::Boost::CAMERA_SHOT: return sendPowerHint(V1_3::PowerHint::CAMERA_SHOT, durationMs); - case Boost::CAMERA_LAUNCH: + case Aidl::Boost::CAMERA_LAUNCH: return sendPowerHint(V1_3::PowerHint::CAMERA_LAUNCH, durationMs); default: return HidlHalWrapperV1_1::setBoost(boost, durationMs); } } -HalResult<void> HidlHalWrapperV1_2::setMode(Mode mode, bool enabled) { +HalResult<void> HidlHalWrapperV1_2::setMode(Aidl::Mode mode, bool enabled) { uint32_t data = enabled ? 1 : 0; switch (mode) { - case Mode::CAMERA_STREAMING_SECURE: - case Mode::CAMERA_STREAMING_LOW: - case Mode::CAMERA_STREAMING_MID: - case Mode::CAMERA_STREAMING_HIGH: + case Aidl::Mode::CAMERA_STREAMING_SECURE: + case Aidl::Mode::CAMERA_STREAMING_LOW: + case Aidl::Mode::CAMERA_STREAMING_MID: + case Aidl::Mode::CAMERA_STREAMING_HIGH: return sendPowerHint(V1_3::PowerHint::CAMERA_STREAMING, data); - case Mode::AUDIO_STREAMING_LOW_LATENCY: + case Aidl::Mode::AUDIO_STREAMING_LOW_LATENCY: return sendPowerHint(V1_3::PowerHint::AUDIO_LOW_LATENCY, data); default: return HidlHalWrapperV1_1::setMode(mode, enabled); @@ -206,9 +169,9 @@ HalResult<void> HidlHalWrapperV1_2::setMode(Mode mode, bool enabled) { // ------------------------------------------------------------------------------------------------- -HalResult<void> HidlHalWrapperV1_3::setMode(Mode mode, bool enabled) { +HalResult<void> HidlHalWrapperV1_3::setMode(Aidl::Mode mode, bool enabled) { uint32_t data = enabled ? 1 : 0; - if (mode == Mode::EXPENSIVE_RENDERING) { + if (mode == Aidl::Mode::EXPENSIVE_RENDERING) { return sendPowerHint(V1_3::PowerHint::EXPENSIVE_RENDERING, data); } return HidlHalWrapperV1_2::setMode(mode, enabled); @@ -222,7 +185,7 @@ HalResult<void> HidlHalWrapperV1_3::sendPowerHint(V1_3::PowerHint hintId, uint32 // ------------------------------------------------------------------------------------------------- -HalResult<void> AidlHalWrapper::setBoost(Boost boost, int32_t durationMs) { +HalResult<void> AidlHalWrapper::setBoost(Aidl::Boost boost, int32_t durationMs) { std::unique_lock<std::mutex> lock(mBoostMutex); size_t idx = static_cast<size_t>(boost); @@ -237,7 +200,7 @@ HalResult<void> AidlHalWrapper::setBoost(Boost boost, int32_t durationMs) { auto isSupportedRet = mHandle->isBoostSupported(boost, &isSupported); if (!isSupportedRet.isOk()) { ALOGE("Skipped setBoost %s because check support failed with: %s", - toString(boost).c_str(), isSupportedRet.toString8().c_str()); + toString(boost).c_str(), isSupportedRet.getDescription().c_str()); // return HalResult::FAILED; return HalResult<void>::fromStatus(isSupportedRet); } @@ -254,7 +217,7 @@ HalResult<void> AidlHalWrapper::setBoost(Boost boost, int32_t durationMs) { return toHalResult(mHandle->setBoost(boost, durationMs)); } -HalResult<void> AidlHalWrapper::setMode(Mode mode, bool enabled) { +HalResult<void> AidlHalWrapper::setMode(Aidl::Mode mode, bool enabled) { std::unique_lock<std::mutex> lock(mModeMutex); size_t idx = static_cast<size_t>(mode); @@ -268,7 +231,7 @@ HalResult<void> AidlHalWrapper::setMode(Mode mode, bool enabled) { bool isSupported = false; auto isSupportedRet = mHandle->isModeSupported(mode, &isSupported); if (!isSupportedRet.isOk()) { - return HalResult<void>::failed(isSupportedRet.toString8().c_str()); + return HalResult<void>::failed(isSupportedRet.getDescription()); } mModeSupportedArray[idx] = isSupported ? HalSupport::ON : HalSupport::OFF; @@ -283,10 +246,10 @@ HalResult<void> AidlHalWrapper::setMode(Mode mode, bool enabled) { return toHalResult(mHandle->setMode(mode, enabled)); } -HalResult<sp<Aidl::IPowerHintSession>> AidlHalWrapper::createHintSession( +HalResult<std::shared_ptr<Aidl::IPowerHintSession>> AidlHalWrapper::createHintSession( int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos) { - sp<IPowerHintSession> appSession; - return HalResult<sp<Aidl::IPowerHintSession>>:: + std::shared_ptr<Aidl::IPowerHintSession> appSession; + return HalResult<std::shared_ptr<Aidl::IPowerHintSession>>:: fromStatus(mHandle->createHintSession(tgid, uid, threadIds, durationNanos, &appSession), appSession); } diff --git a/services/powermanager/tests/Android.bp b/services/powermanager/tests/Android.bp index 54dffcf817..08fcdc8275 100644 --- a/services/powermanager/tests/Android.bp +++ b/services/powermanager/tests/Android.bp @@ -43,6 +43,7 @@ cc_test { shared_libs: [ "libbase", "libbinder", + "libbinder_ndk", "libhidlbase", "liblog", "libpowermanager", @@ -51,9 +52,10 @@ cc_test { "android.hardware.power@1.1", "android.hardware.power@1.2", "android.hardware.power@1.3", - "android.hardware.power-V4-cpp", + "android.hardware.power-V4-ndk", ], static_libs: [ "libgmock", ], + require_root: true, } diff --git a/services/powermanager/tests/PowerHalControllerTest.cpp b/services/powermanager/tests/PowerHalControllerTest.cpp index 6cc7a6f3da..01270ce599 100644 --- a/services/powermanager/tests/PowerHalControllerTest.cpp +++ b/services/powermanager/tests/PowerHalControllerTest.cpp @@ -16,9 +16,9 @@ #define LOG_TAG "PowerHalControllerTest" -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/Mode.h> +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/Mode.h> #include <gmock/gmock.h> #include <gtest/gtest.h> #include <powermanager/PowerHalController.h> @@ -26,8 +26,8 @@ #include <thread> -using android::hardware::power::Boost; -using android::hardware::power::Mode; +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::Mode; using android::hardware::power::V1_0::Feature; using android::hardware::power::V1_0::IPower; using android::hardware::power::V1_0::PowerHint; diff --git a/services/powermanager/tests/PowerHalLoaderTest.cpp b/services/powermanager/tests/PowerHalLoaderTest.cpp index e36deed042..7d9735421b 100644 --- a/services/powermanager/tests/PowerHalLoaderTest.cpp +++ b/services/powermanager/tests/PowerHalLoaderTest.cpp @@ -16,9 +16,8 @@ #define LOG_TAG "PowerHalLoaderTest" -#include <android-base/logging.h> +#include <aidl/android/hardware/power/IPower.h> #include <android/hardware/power/1.1/IPower.h> -#include <android/hardware/power/IPower.h> #include <gtest/gtest.h> #include <powermanager/PowerHalLoader.h> @@ -28,7 +27,7 @@ using IPowerV1_0 = android::hardware::power::V1_0::IPower; using IPowerV1_1 = android::hardware::power::V1_1::IPower; using IPowerV1_2 = android::hardware::power::V1_2::IPower; using IPowerV1_3 = android::hardware::power::V1_3::IPower; -using IPowerAidl = android::hardware::power::IPower; +using IPowerAidl = aidl::android::hardware::power::IPower; using namespace android; using namespace android::power; @@ -37,30 +36,30 @@ using namespace testing; // ------------------------------------------------------------------------------------------------- template <typename T> -sp<T> loadHal(); +T loadHal(); template <> -sp<IPowerAidl> loadHal<IPowerAidl>() { +std::shared_ptr<IPowerAidl> loadHal<std::shared_ptr<IPowerAidl>>() { return PowerHalLoader::loadAidl(); } template <> -sp<IPowerV1_0> loadHal<IPowerV1_0>() { +sp<IPowerV1_0> loadHal<sp<IPowerV1_0>>() { return PowerHalLoader::loadHidlV1_0(); } template <> -sp<IPowerV1_1> loadHal<IPowerV1_1>() { +sp<IPowerV1_1> loadHal<sp<IPowerV1_1>>() { return PowerHalLoader::loadHidlV1_1(); } template <> -sp<IPowerV1_2> loadHal<IPowerV1_2>() { +sp<IPowerV1_2> loadHal<sp<IPowerV1_2>>() { return PowerHalLoader::loadHidlV1_2(); } template <> -sp<IPowerV1_3> loadHal<IPowerV1_3>() { +sp<IPowerV1_3> loadHal<sp<IPowerV1_3>>() { return PowerHalLoader::loadHidlV1_3(); } @@ -69,46 +68,47 @@ sp<IPowerV1_3> loadHal<IPowerV1_3>() { template <typename T> class PowerHalLoaderTest : public Test { public: - sp<T> load() { return ::loadHal<T>(); } + T load() { return ::loadHal<T>(); } void unload() { PowerHalLoader::unloadAll(); } }; // ------------------------------------------------------------------------------------------------- - -typedef ::testing::Types<IPowerAidl, IPowerV1_0, IPowerV1_1, IPowerV1_2, IPowerV1_3> PowerHalTypes; +typedef ::testing::Types<std::shared_ptr<IPowerAidl>, sp<IPowerV1_0>, sp<IPowerV1_1>, + sp<IPowerV1_2>, sp<IPowerV1_3>> + PowerHalTypes; TYPED_TEST_SUITE(PowerHalLoaderTest, PowerHalTypes); TYPED_TEST(PowerHalLoaderTest, TestLoadsOnlyOnce) { - sp<TypeParam> firstHal = this->load(); + TypeParam firstHal = this->load(); if (firstHal == nullptr) { ALOGE("Power HAL not available. Skipping test."); return; } - sp<TypeParam> secondHal = this->load(); + TypeParam secondHal = this->load(); ASSERT_EQ(firstHal, secondHal); } TYPED_TEST(PowerHalLoaderTest, TestUnload) { - sp<TypeParam> firstHal = this->load(); + TypeParam firstHal = this->load(); if (firstHal == nullptr) { ALOGE("Power HAL not available. Skipping test."); return; } this->unload(); - sp<TypeParam> secondHal = this->load(); + TypeParam secondHal = this->load(); ASSERT_NE(secondHal, nullptr); ASSERT_NE(firstHal, secondHal); } TYPED_TEST(PowerHalLoaderTest, TestLoadMultiThreadLoadsOnlyOnce) { - std::vector<std::future<sp<TypeParam>>> futures; + std::vector<std::future<TypeParam>> futures; for (int i = 0; i < 10; i++) { futures.push_back( std::async(std::launch::async, &PowerHalLoaderTest<TypeParam>::load, this)); } futures[0].wait(); - sp<TypeParam> firstHal = futures[0].get(); + TypeParam firstHal = futures[0].get(); if (firstHal == nullptr) { ALOGE("Power HAL not available. Skipping test."); return; @@ -116,7 +116,7 @@ TYPED_TEST(PowerHalLoaderTest, TestLoadMultiThreadLoadsOnlyOnce) { for (int i = 1; i < 10; i++) { futures[i].wait(); - sp<TypeParam> currentHal = futures[i].get(); + TypeParam currentHal = futures[i].get(); ASSERT_EQ(firstHal, currentHal); } } diff --git a/services/powermanager/tests/PowerHalWrapperAidlTest.cpp b/services/powermanager/tests/PowerHalWrapperAidlTest.cpp index cb1a77a45f..641ba9f44b 100644 --- a/services/powermanager/tests/PowerHalWrapperAidlTest.cpp +++ b/services/powermanager/tests/PowerHalWrapperAidlTest.cpp @@ -16,9 +16,9 @@ #define LOG_TAG "PowerHalWrapperAidlTest" -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPowerHintSession.h> -#include <android/hardware/power/Mode.h> +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPowerHintSession.h> +#include <aidl/android/hardware/power/Mode.h> #include <binder/IServiceManager.h> #include <gmock/gmock.h> #include <gtest/gtest.h> @@ -28,11 +28,11 @@ #include <unistd.h> #include <thread> +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::IPower; +using aidl::android::hardware::power::IPowerHintSession; +using aidl::android::hardware::power::Mode; using android::binder::Status; -using android::hardware::power::Boost; -using android::hardware::power::IPower; -using android::hardware::power::IPowerHintSession; -using android::hardware::power::Mode; using namespace android; using namespace android::power; @@ -43,18 +43,21 @@ using namespace testing; class MockIPower : public IPower { public: - MOCK_METHOD(Status, isBoostSupported, (Boost boost, bool* ret), (override)); - MOCK_METHOD(Status, setBoost, (Boost boost, int32_t durationMs), (override)); - MOCK_METHOD(Status, isModeSupported, (Mode mode, bool* ret), (override)); - MOCK_METHOD(Status, setMode, (Mode mode, bool enabled), (override)); - MOCK_METHOD(Status, createHintSession, + MockIPower() = default; + + MOCK_METHOD(ndk::ScopedAStatus, isBoostSupported, (Boost boost, bool* ret), (override)); + MOCK_METHOD(ndk::ScopedAStatus, setBoost, (Boost boost, int32_t durationMs), (override)); + MOCK_METHOD(ndk::ScopedAStatus, isModeSupported, (Mode mode, bool* ret), (override)); + MOCK_METHOD(ndk::ScopedAStatus, setMode, (Mode mode, bool enabled), (override)); + MOCK_METHOD(ndk::ScopedAStatus, createHintSession, (int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, - int64_t durationNanos, sp<IPowerHintSession>* session), + int64_t durationNanos, std::shared_ptr<IPowerHintSession>* session), (override)); - MOCK_METHOD(Status, getHintSessionPreferredRate, (int64_t * rate), (override)); - MOCK_METHOD(int32_t, getInterfaceVersion, (), (override)); - MOCK_METHOD(std::string, getInterfaceHash, (), (override)); - MOCK_METHOD(IBinder*, onAsBinder, (), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getHintSessionPreferredRate, (int64_t * rate), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getInterfaceVersion, (int32_t * version), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getInterfaceHash, (std::string * hash), (override)); + MOCK_METHOD(ndk::SpAIBinder, asBinder, (), (override)); + MOCK_METHOD(bool, isRemote, (), (override)); }; // ------------------------------------------------------------------------------------------------- @@ -65,13 +68,13 @@ public: protected: std::unique_ptr<HalWrapper> mWrapper = nullptr; - sp<StrictMock<MockIPower>> mMockHal = nullptr; + std::shared_ptr<StrictMock<MockIPower>> mMockHal = nullptr; }; // ------------------------------------------------------------------------------------------------- void PowerHalWrapperAidlTest::SetUp() { - mMockHal = new StrictMock<MockIPower>(); + mMockHal = ndk::SharedRefBase::make<StrictMock<MockIPower>>(); mWrapper = std::make_unique<AidlHalWrapper>(mMockHal); ASSERT_NE(nullptr, mWrapper); } @@ -83,9 +86,11 @@ TEST_F(PowerHalWrapperAidlTest, TestSetBoostSuccessful) { InSequence seq; EXPECT_CALL(*mMockHal.get(), isBoostSupported(Eq(Boost::DISPLAY_UPDATE_IMMINENT), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(true), Return(Status()))); + .WillOnce(DoAll(SetArgPointee<1>(true), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); EXPECT_CALL(*mMockHal.get(), setBoost(Eq(Boost::DISPLAY_UPDATE_IMMINENT), Eq(100))) - .Times(Exactly(1)); + .Times(Exactly(1)) + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); } auto result = mWrapper->setBoost(Boost::DISPLAY_UPDATE_IMMINENT, 100); @@ -97,13 +102,14 @@ TEST_F(PowerHalWrapperAidlTest, TestSetBoostFailed) { InSequence seq; EXPECT_CALL(*mMockHal.get(), isBoostSupported(Eq(Boost::INTERACTION), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(true), Return(Status()))); + .WillOnce(DoAll(SetArgPointee<1>(true), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); EXPECT_CALL(*mMockHal.get(), setBoost(Eq(Boost::INTERACTION), Eq(100))) .Times(Exactly(1)) - .WillRepeatedly(Return(Status::fromExceptionCode(-1))); + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::fromExceptionCode(-1)))); EXPECT_CALL(*mMockHal.get(), isBoostSupported(Eq(Boost::DISPLAY_UPDATE_IMMINENT), _)) .Times(Exactly(1)) - .WillRepeatedly(Return(Status::fromExceptionCode(-1))); + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::fromExceptionCode(-1)))); } auto result = mWrapper->setBoost(Boost::INTERACTION, 100); @@ -115,7 +121,8 @@ TEST_F(PowerHalWrapperAidlTest, TestSetBoostFailed) { TEST_F(PowerHalWrapperAidlTest, TestSetBoostUnsupported) { EXPECT_CALL(*mMockHal.get(), isBoostSupported(Eq(Boost::INTERACTION), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(false), Return(Status()))); + .WillOnce(DoAll(SetArgPointee<1>(false), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); auto result = mWrapper->setBoost(Boost::INTERACTION, 1000); ASSERT_TRUE(result.isUnsupported()); @@ -128,8 +135,13 @@ TEST_F(PowerHalWrapperAidlTest, TestSetBoostMultiThreadCheckSupportedOnlyOnce) { InSequence seq; EXPECT_CALL(*mMockHal.get(), isBoostSupported(Eq(Boost::INTERACTION), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(true), Return(Status()))); - EXPECT_CALL(*mMockHal.get(), setBoost(Eq(Boost::INTERACTION), Eq(100))).Times(Exactly(10)); + .WillOnce(DoAll(SetArgPointee<1>(true), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); + auto& exp = EXPECT_CALL(*mMockHal.get(), setBoost(Eq(Boost::INTERACTION), Eq(100))) + .Times(Exactly(10)); + for (int i = 0; i < 10; i++) { + exp.WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); + } } std::vector<std::thread> threads; @@ -147,9 +159,11 @@ TEST_F(PowerHalWrapperAidlTest, TestSetModeSuccessful) { InSequence seq; EXPECT_CALL(*mMockHal.get(), isModeSupported(Eq(Mode::DISPLAY_INACTIVE), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(true), Return(Status()))); + .WillOnce(DoAll(SetArgPointee<1>(true), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); EXPECT_CALL(*mMockHal.get(), setMode(Eq(Mode::DISPLAY_INACTIVE), Eq(false))) - .Times(Exactly(1)); + .Times(Exactly(1)) + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); } auto result = mWrapper->setMode(Mode::DISPLAY_INACTIVE, false); @@ -161,13 +175,14 @@ TEST_F(PowerHalWrapperAidlTest, TestSetModeFailed) { InSequence seq; EXPECT_CALL(*mMockHal.get(), isModeSupported(Eq(Mode::LAUNCH), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(true), Return(Status()))); + .WillOnce(DoAll(SetArgPointee<1>(true), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); EXPECT_CALL(*mMockHal.get(), setMode(Eq(Mode::LAUNCH), Eq(true))) .Times(Exactly(1)) - .WillRepeatedly(Return(Status::fromExceptionCode(-1))); + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::fromExceptionCode(-1)))); EXPECT_CALL(*mMockHal.get(), isModeSupported(Eq(Mode::DISPLAY_INACTIVE), _)) .Times(Exactly(1)) - .WillRepeatedly(Return(Status::fromExceptionCode(-1))); + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::fromExceptionCode(-1)))); } auto result = mWrapper->setMode(Mode::LAUNCH, true); @@ -179,14 +194,16 @@ TEST_F(PowerHalWrapperAidlTest, TestSetModeFailed) { TEST_F(PowerHalWrapperAidlTest, TestSetModeUnsupported) { EXPECT_CALL(*mMockHal.get(), isModeSupported(Eq(Mode::LAUNCH), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(false), Return(Status()))); + .WillOnce(DoAll(SetArgPointee<1>(false), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); auto result = mWrapper->setMode(Mode::LAUNCH, true); ASSERT_TRUE(result.isUnsupported()); EXPECT_CALL(*mMockHal.get(), isModeSupported(Eq(Mode::CAMERA_STREAMING_HIGH), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(false), Return(Status()))); + .WillOnce(DoAll(SetArgPointee<1>(false), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); result = mWrapper->setMode(Mode::CAMERA_STREAMING_HIGH, true); ASSERT_TRUE(result.isUnsupported()); } @@ -196,8 +213,13 @@ TEST_F(PowerHalWrapperAidlTest, TestSetModeMultiThreadCheckSupportedOnlyOnce) { InSequence seq; EXPECT_CALL(*mMockHal.get(), isModeSupported(Eq(Mode::LAUNCH), _)) .Times(Exactly(1)) - .WillRepeatedly(DoAll(SetArgPointee<1>(true), Return(Status()))); - EXPECT_CALL(*mMockHal.get(), setMode(Eq(Mode::LAUNCH), Eq(false))).Times(Exactly(10)); + .WillOnce(DoAll(SetArgPointee<1>(true), + Return(testing::ByMove(ndk::ScopedAStatus::ok())))); + auto& exp = EXPECT_CALL(*mMockHal.get(), setMode(Eq(Mode::LAUNCH), Eq(false))) + .Times(Exactly(10)); + for (int i = 0; i < 10; i++) { + exp.WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); + } } std::vector<std::thread> threads; @@ -217,7 +239,8 @@ TEST_F(PowerHalWrapperAidlTest, TestCreateHintSessionSuccessful) { int64_t durationNanos = 16666666L; EXPECT_CALL(*mMockHal.get(), createHintSession(Eq(tgid), Eq(uid), Eq(threadIds), Eq(durationNanos), _)) - .Times(Exactly(1)); + .Times(Exactly(1)) + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); auto result = mWrapper->createHintSession(tgid, uid, threadIds, durationNanos); ASSERT_TRUE(result.isOk()); } @@ -230,13 +253,16 @@ TEST_F(PowerHalWrapperAidlTest, TestCreateHintSessionFailed) { EXPECT_CALL(*mMockHal.get(), createHintSession(Eq(tgid), Eq(uid), Eq(threadIds), Eq(durationNanos), _)) .Times(Exactly(1)) - .WillRepeatedly(Return(Status::fromExceptionCode(Status::EX_ILLEGAL_ARGUMENT))); + .WillOnce(Return(testing::ByMove( + ndk::ScopedAStatus::fromExceptionCode(Status::EX_ILLEGAL_ARGUMENT)))); auto result = mWrapper->createHintSession(tgid, uid, threadIds, durationNanos); ASSERT_TRUE(result.isFailed()); } TEST_F(PowerHalWrapperAidlTest, TestGetHintSessionPreferredRate) { - EXPECT_CALL(*mMockHal.get(), getHintSessionPreferredRate(_)).Times(Exactly(1)); + EXPECT_CALL(*mMockHal.get(), getHintSessionPreferredRate(_)) + .Times(Exactly(1)) + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); auto result = mWrapper->getHintSessionPreferredRate(); ASSERT_TRUE(result.isOk()); int64_t rate = result.value(); diff --git a/services/powermanager/tests/PowerHalWrapperHidlV1_0Test.cpp b/services/powermanager/tests/PowerHalWrapperHidlV1_0Test.cpp index 0cd2e22e7e..461143bfc6 100644 --- a/services/powermanager/tests/PowerHalWrapperHidlV1_0Test.cpp +++ b/services/powermanager/tests/PowerHalWrapperHidlV1_0Test.cpp @@ -16,17 +16,17 @@ #define LOG_TAG "PowerHalWrapperHidlV1_0Test" -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/Mode.h> +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/Mode.h> #include <binder/IServiceManager.h> #include <gmock/gmock.h> #include <gtest/gtest.h> #include <powermanager/PowerHalWrapper.h> #include <utils/Log.h> -using android::hardware::power::Boost; -using android::hardware::power::Mode; +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::Mode; using android::hardware::power::V1_0::Feature; using android::hardware::power::V1_0::IPower; using android::hardware::power::V1_0::PowerHint; diff --git a/services/powermanager/tests/PowerHalWrapperHidlV1_1Test.cpp b/services/powermanager/tests/PowerHalWrapperHidlV1_1Test.cpp index 32f84e20b6..79dd996098 100644 --- a/services/powermanager/tests/PowerHalWrapperHidlV1_1Test.cpp +++ b/services/powermanager/tests/PowerHalWrapperHidlV1_1Test.cpp @@ -16,18 +16,18 @@ #define LOG_TAG "PowerHalWrapperHidlV1_1Test" +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/Mode.h> #include <android/hardware/power/1.1/IPower.h> -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/Mode.h> #include <binder/IServiceManager.h> #include <gmock/gmock.h> #include <gtest/gtest.h> #include <powermanager/PowerHalWrapper.h> #include <utils/Log.h> -using android::hardware::power::Boost; -using android::hardware::power::Mode; +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::Mode; using android::hardware::power::V1_0::Feature; using android::hardware::power::V1_0::PowerHint; using IPowerV1_1 = android::hardware::power::V1_1::IPower; diff --git a/services/powermanager/tests/PowerHalWrapperHidlV1_2Test.cpp b/services/powermanager/tests/PowerHalWrapperHidlV1_2Test.cpp index cf48409f5f..aa6d6c7a3d 100644 --- a/services/powermanager/tests/PowerHalWrapperHidlV1_2Test.cpp +++ b/services/powermanager/tests/PowerHalWrapperHidlV1_2Test.cpp @@ -16,18 +16,18 @@ #define LOG_TAG "PowerHalWrapperHidlV1_2Test" +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/Mode.h> #include <android/hardware/power/1.2/IPower.h> -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/Mode.h> #include <binder/IServiceManager.h> #include <gmock/gmock.h> #include <gtest/gtest.h> #include <powermanager/PowerHalWrapper.h> #include <utils/Log.h> -using android::hardware::power::Boost; -using android::hardware::power::Mode; +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::Mode; using android::hardware::power::V1_0::Feature; using PowerHintV1_0 = android::hardware::power::V1_0::PowerHint; using PowerHintV1_2 = android::hardware::power::V1_2::PowerHint; diff --git a/services/powermanager/tests/PowerHalWrapperHidlV1_3Test.cpp b/services/powermanager/tests/PowerHalWrapperHidlV1_3Test.cpp index 2c48537edc..a995afd750 100644 --- a/services/powermanager/tests/PowerHalWrapperHidlV1_3Test.cpp +++ b/services/powermanager/tests/PowerHalWrapperHidlV1_3Test.cpp @@ -16,18 +16,18 @@ #define LOG_TAG "PowerHalWrapperHidlV1_3Test" +#include <aidl/android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/Mode.h> #include <android/hardware/power/1.3/IPower.h> -#include <android/hardware/power/Boost.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/Mode.h> #include <binder/IServiceManager.h> #include <gmock/gmock.h> #include <gtest/gtest.h> #include <powermanager/PowerHalWrapper.h> #include <utils/Log.h> -using android::hardware::power::Boost; -using android::hardware::power::Mode; +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::Mode; using android::hardware::power::V1_0::Feature; using PowerHintV1_0 = android::hardware::power::V1_0::PowerHint; using PowerHintV1_2 = android::hardware::power::V1_2::PowerHint; diff --git a/services/surfaceflinger/Android.bp b/services/surfaceflinger/Android.bp index 5683a9280f..e0c80249b9 100644 --- a/services/surfaceflinger/Android.bp +++ b/services/surfaceflinger/Android.bp @@ -47,7 +47,7 @@ cc_defaults { "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", - "android.hardware.power-V4-cpp", + "android.hardware.power-V4-ndk", "libbase", "libbinder", "libbinder_ndk", diff --git a/services/surfaceflinger/CompositionEngine/Android.bp b/services/surfaceflinger/CompositionEngine/Android.bp index f3a0186e3e..a094111d40 100644 --- a/services/surfaceflinger/CompositionEngine/Android.bp +++ b/services/surfaceflinger/CompositionEngine/Android.bp @@ -26,7 +26,7 @@ cc_defaults { "android.hardware.graphics.composer@2.4", "android.hardware.power@1.0", "android.hardware.power@1.3", - "android.hardware.power-V4-cpp", + "android.hardware.power-V4-ndk", "libbase", "libcutils", "libgui", diff --git a/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp b/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp index 37b68c865e..730db40f7a 100644 --- a/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp +++ b/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp @@ -31,9 +31,9 @@ #include <utils/Mutex.h> #include <utils/Trace.h> -#include <android/hardware/power/IPower.h> -#include <android/hardware/power/IPowerHintSession.h> -#include <android/hardware/power/WorkDuration.h> +#include <aidl/android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/IPowerHintSession.h> +#include <aidl/android/hardware/power/WorkDuration.h> #include <binder/IServiceManager.h> @@ -49,11 +49,11 @@ PowerAdvisor::~PowerAdvisor() = default; namespace impl { -using android::hardware::power::Boost; -using android::hardware::power::IPowerHintSession; -using android::hardware::power::Mode; -using android::hardware::power::SessionHint; -using android::hardware::power::WorkDuration; +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::IPowerHintSession; +using aidl::android::hardware::power::Mode; +using aidl::android::hardware::power::SessionHint; +using aidl::android::hardware::power::WorkDuration; PowerAdvisor::~PowerAdvisor() = default; @@ -215,7 +215,7 @@ void PowerAdvisor::updateTargetWorkDuration(Duration targetDuration) { auto ret = mHintSession->updateTargetWorkDuration(targetDuration.ns()); if (!ret.isOk()) { ALOGW("Failed to set power hint target work duration with error: %s", - ret.exceptionMessage().c_str()); + ret.getDescription().c_str()); mHintSessionRunning = false; } } @@ -259,7 +259,7 @@ void PowerAdvisor::reportActualWorkDuration() { auto ret = mHintSession->reportActualWorkDuration(mHintSessionQueue); if (!ret.isOk()) { ALOGW("Failed to report actual work durations with error: %s", - ret.exceptionMessage().c_str()); + ret.getDescription().c_str()); mHintSessionRunning = false; return; } diff --git a/services/surfaceflinger/DisplayHardware/PowerAdvisor.h b/services/surfaceflinger/DisplayHardware/PowerAdvisor.h index 7a0d4267fe..8c724df24c 100644 --- a/services/surfaceflinger/DisplayHardware/PowerAdvisor.h +++ b/services/surfaceflinger/DisplayHardware/PowerAdvisor.h @@ -25,7 +25,7 @@ #include <ui/FenceTime.h> #include <utils/Mutex.h> -#include <android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/IPower.h> #include <compositionengine/impl/OutputCompositionState.h> #include <powermanager/PowerHalController.h> #include <scheduler/Time.h> @@ -245,13 +245,14 @@ private: bool mHintSessionRunning = false; std::mutex mHintSessionMutex; - sp<hardware::power::IPowerHintSession> mHintSession GUARDED_BY(mHintSessionMutex) = nullptr; + std::shared_ptr<aidl::android::hardware::power::IPowerHintSession> mHintSession + GUARDED_BY(mHintSessionMutex) = nullptr; // Initialize to true so we try to call, to check if it's supported bool mHasExpensiveRendering = true; bool mHasDisplayUpdateImminent = true; // Queue of actual durations saved to report - std::vector<hardware::power::WorkDuration> mHintSessionQueue; + std::vector<aidl::android::hardware::power::WorkDuration> mHintSessionQueue; // The latest values we have received for target and actual Duration mTargetDuration = kDefaultTargetDuration; std::optional<Duration> mActualDuration; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 8f506f1086..626450efaa 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -24,6 +24,7 @@ #include "SurfaceFlinger.h" +#include <aidl/android/hardware/power/Boost.h> #include <android-base/parseint.h> #include <android-base/properties.h> #include <android-base/stringprintf.h> @@ -34,7 +35,6 @@ #include <android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h> #include <android/hardware/configstore/1.1/ISurfaceFlingerConfigs.h> #include <android/hardware/configstore/1.1/types.h> -#include <android/hardware/power/Boost.h> #include <android/native_window.h> #include <android/os/IInputFlinger.h> #include <binder/IPCThreadState.h> @@ -1999,7 +1999,7 @@ status_t SurfaceFlinger::removeHdrLayerInfoListener( } status_t SurfaceFlinger::notifyPowerBoost(int32_t boostId) { - using hardware::power::Boost; + using aidl::android::hardware::power::Boost; Boost powerBoost = static_cast<Boost>(boostId); if (powerBoost == Boost::INTERACTION) { diff --git a/services/surfaceflinger/tests/unittests/Android.bp b/services/surfaceflinger/tests/unittests/Android.bp index faa1fb124a..7932daa7a0 100644 --- a/services/surfaceflinger/tests/unittests/Android.bp +++ b/services/surfaceflinger/tests/unittests/Android.bp @@ -159,7 +159,7 @@ cc_defaults { "android.hardware.power@1.1", "android.hardware.power@1.2", "android.hardware.power@1.3", - "android.hardware.power-V4-cpp", + "android.hardware.power-V4-ndk", "libaidlcommonsupport", "libcompositionengine_mocks", "libcompositionengine", diff --git a/services/surfaceflinger/tests/unittests/PowerAdvisorTest.cpp b/services/surfaceflinger/tests/unittests/PowerAdvisorTest.cpp index 0d66d59f26..85f66f4ed0 100644 --- a/services/surfaceflinger/tests/unittests/PowerAdvisorTest.cpp +++ b/services/surfaceflinger/tests/unittests/PowerAdvisorTest.cpp @@ -18,10 +18,10 @@ #define LOG_TAG "PowerAdvisorTest" #include <DisplayHardware/PowerAdvisor.h> -#include <compositionengine/Display.h> -#include <ftl/fake_guard.h> +#include <binder/Status.h> #include <gmock/gmock.h> #include <gtest/gtest.h> +#include <powermanager/PowerHalWrapper.h> #include <ui/DisplayId.h> #include <chrono> #include "TestableSurfaceFlinger.h" @@ -50,7 +50,7 @@ protected: TestableSurfaceFlinger mFlinger; std::unique_ptr<PowerAdvisor> mPowerAdvisor; MockPowerHalController* mMockPowerHalController; - sp<MockIPowerHintSession> mMockPowerHintSession; + std::shared_ptr<MockIPowerHintSession> mMockPowerHintSession; }; void PowerAdvisorTest::SetUp() { @@ -64,13 +64,14 @@ void PowerAdvisorTest::SetUp() { void PowerAdvisorTest::startPowerHintSession() { const std::vector<int32_t> threadIds = {1, 2, 3}; - mMockPowerHintSession = android::sp<NiceMock<MockIPowerHintSession>>::make(); + mMockPowerHintSession = ndk::SharedRefBase::make<NiceMock<MockIPowerHintSession>>(); ON_CALL(*mMockPowerHalController, createHintSession) - .WillByDefault( - Return(HalResult<sp<IPowerHintSession>>::fromStatus(binder::Status::ok(), - mMockPowerHintSession))); + .WillByDefault(Return(HalResult<std::shared_ptr<IPowerHintSession>>:: + fromStatus(binder::Status::ok(), mMockPowerHintSession))); mPowerAdvisor->enablePowerHintSession(true); mPowerAdvisor->startPowerHintSession(threadIds); + ON_CALL(*mMockPowerHintSession, updateTargetWorkDuration) + .WillByDefault(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); } void PowerAdvisorTest::setExpectedTiming(Duration totalFrameTargetDuration, @@ -123,8 +124,8 @@ TEST_F(PowerAdvisorTest, hintSessionUseHwcDisplay) { EXPECT_CALL(*mMockPowerHintSession, reportActualWorkDuration(ElementsAre( Field(&WorkDuration::durationNanos, Eq(expectedDuration.ns()))))) - .Times(1); - + .Times(1) + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); fakeBasicFrameTiming(startTime, vsyncPeriod); setExpectedTiming(vsyncPeriod, startTime + vsyncPeriod); mPowerAdvisor->setDisplays(displayIds); @@ -163,7 +164,8 @@ TEST_F(PowerAdvisorTest, hintSessionSubtractsHwcFenceTime) { EXPECT_CALL(*mMockPowerHintSession, reportActualWorkDuration(ElementsAre( Field(&WorkDuration::durationNanos, Eq(expectedDuration.ns()))))) - .Times(1); + .Times(1) + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); fakeBasicFrameTiming(startTime, vsyncPeriod); setExpectedTiming(vsyncPeriod, startTime + vsyncPeriod); @@ -205,7 +207,8 @@ TEST_F(PowerAdvisorTest, hintSessionUsingSecondaryVirtualDisplays) { EXPECT_CALL(*mMockPowerHintSession, reportActualWorkDuration(ElementsAre( Field(&WorkDuration::durationNanos, Eq(expectedDuration.ns()))))) - .Times(1); + .Times(1) + .WillOnce(Return(testing::ByMove(ndk::ScopedAStatus::ok()))); fakeBasicFrameTiming(startTime, vsyncPeriod); setExpectedTiming(vsyncPeriod, startTime + vsyncPeriod); diff --git a/services/surfaceflinger/tests/unittests/SurfaceFlinger_NotifyPowerBoostTest.cpp b/services/surfaceflinger/tests/unittests/SurfaceFlinger_NotifyPowerBoostTest.cpp index 4e9f293dc3..22b72f98e5 100644 --- a/services/surfaceflinger/tests/unittests/SurfaceFlinger_NotifyPowerBoostTest.cpp +++ b/services/surfaceflinger/tests/unittests/SurfaceFlinger_NotifyPowerBoostTest.cpp @@ -23,12 +23,12 @@ #include "DisplayTransactionTestHelpers.h" #include "FakeDisplayInjector.h" -#include <android/hardware/power/Boost.h> +#include <aidl/android/hardware/power/Boost.h> namespace android { namespace { -using android::hardware::power::Boost; +using aidl::android::hardware::power::Boost; TEST_F(DisplayTransactionTest, notifyPowerBoostNotifiesTouchEvent) { using namespace std::chrono_literals; diff --git a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPower.h b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPower.h index 0ddc90d585..a088aabc11 100644 --- a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPower.h +++ b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPower.h @@ -18,14 +18,14 @@ #include "binder/Status.h" -#include <android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/IPower.h> #include <gmock/gmock.h> +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::IPower; +using aidl::android::hardware::power::IPowerHintSession; +using aidl::android::hardware::power::Mode; using android::binder::Status; -using android::hardware::power::Boost; -using android::hardware::power::IPower; -using android::hardware::power::IPowerHintSession; -using android::hardware::power::Mode; namespace android::Hwc2::mock { @@ -33,18 +33,19 @@ class MockIPower : public IPower { public: MockIPower(); - MOCK_METHOD(Status, isBoostSupported, (Boost boost, bool* ret), (override)); - MOCK_METHOD(Status, setBoost, (Boost boost, int32_t durationMs), (override)); - MOCK_METHOD(Status, isModeSupported, (Mode mode, bool* ret), (override)); - MOCK_METHOD(Status, setMode, (Mode mode, bool enabled), (override)); - MOCK_METHOD(Status, createHintSession, + MOCK_METHOD(ndk::ScopedAStatus, isBoostSupported, (Boost boost, bool* ret), (override)); + MOCK_METHOD(ndk::ScopedAStatus, setBoost, (Boost boost, int32_t durationMs), (override)); + MOCK_METHOD(ndk::ScopedAStatus, isModeSupported, (Mode mode, bool* ret), (override)); + MOCK_METHOD(ndk::ScopedAStatus, setMode, (Mode mode, bool enabled), (override)); + MOCK_METHOD(ndk::ScopedAStatus, createHintSession, (int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, - int64_t durationNanos, sp<IPowerHintSession>* session), + int64_t durationNanos, std::shared_ptr<IPowerHintSession>* session), (override)); - MOCK_METHOD(Status, getHintSessionPreferredRate, (int64_t * rate), (override)); - MOCK_METHOD(int32_t, getInterfaceVersion, (), (override)); - MOCK_METHOD(std::string, getInterfaceHash, (), (override)); - MOCK_METHOD(IBinder*, onAsBinder, (), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getHintSessionPreferredRate, (int64_t * rate), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getInterfaceVersion, (int32_t * version), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getInterfaceHash, (std::string * hash), (override)); + MOCK_METHOD(ndk::SpAIBinder, asBinder, (), (override)); + MOCK_METHOD(bool, isRemote, (), (override)); }; } // namespace android::Hwc2::mock diff --git a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPowerHintSession.h b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPowerHintSession.h index f4ded216cb..2b9520fca7 100644 --- a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPowerHintSession.h +++ b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockIPowerHintSession.h @@ -18,14 +18,14 @@ #include "binder/Status.h" -#include <android/hardware/power/IPower.h> +#include <aidl/android/hardware/power/IPower.h> #include <gmock/gmock.h> +using aidl::android::hardware::power::IPowerHintSession; +using aidl::android::hardware::power::SessionHint; using android::binder::Status; -using android::hardware::power::IPowerHintSession; -using android::hardware::power::SessionHint; -using namespace android::hardware::power; +using namespace aidl::android::hardware::power; namespace android::Hwc2::mock { @@ -33,16 +33,18 @@ class MockIPowerHintSession : public IPowerHintSession { public: MockIPowerHintSession(); - MOCK_METHOD(IBinder*, onAsBinder, (), (override)); - MOCK_METHOD(Status, pause, (), (override)); - MOCK_METHOD(Status, resume, (), (override)); - MOCK_METHOD(Status, close, (), (override)); - MOCK_METHOD(int32_t, getInterfaceVersion, (), (override)); - MOCK_METHOD(std::string, getInterfaceHash, (), (override)); - MOCK_METHOD(Status, updateTargetWorkDuration, (int64_t), (override)); - MOCK_METHOD(Status, reportActualWorkDuration, (const ::std::vector<WorkDuration>&), (override)); - MOCK_METHOD(Status, sendHint, (SessionHint), (override)); - MOCK_METHOD(Status, setThreads, (const ::std::vector<int32_t>&), (override)); + MOCK_METHOD(ndk::SpAIBinder, asBinder, (), (override)); + MOCK_METHOD(ndk::ScopedAStatus, pause, (), (override)); + MOCK_METHOD(ndk::ScopedAStatus, resume, (), (override)); + MOCK_METHOD(ndk::ScopedAStatus, close, (), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getInterfaceVersion, (int32_t * version), (override)); + MOCK_METHOD(ndk::ScopedAStatus, getInterfaceHash, (std::string * hash), (override)); + MOCK_METHOD(bool, isRemote, (), (override)); + MOCK_METHOD(ndk::ScopedAStatus, updateTargetWorkDuration, (int64_t), (override)); + MOCK_METHOD(ndk::ScopedAStatus, reportActualWorkDuration, (const ::std::vector<WorkDuration>&), + (override)); + MOCK_METHOD(ndk::ScopedAStatus, sendHint, (SessionHint), (override)); + MOCK_METHOD(ndk::ScopedAStatus, setThreads, (const ::std::vector<int32_t>&), (override)); }; } // namespace android::Hwc2::mock diff --git a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockPowerHalController.h b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockPowerHalController.h index 358395d323..c8269302b1 100644 --- a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockPowerHalController.h +++ b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockPowerHalController.h @@ -31,8 +31,8 @@ class IPower; namespace android::Hwc2::mock { -using android::hardware::power::Boost; -using android::hardware::power::Mode; +using aidl::android::hardware::power::Boost; +using aidl::android::hardware::power::Mode; using android::power::HalResult; class MockPowerHalController : public power::PowerHalController { @@ -41,8 +41,9 @@ public: ~MockPowerHalController() override; MOCK_METHOD(HalResult<void>, setBoost, (Boost, int32_t), (override)); MOCK_METHOD(HalResult<void>, setMode, (Mode, bool), (override)); - MOCK_METHOD(HalResult<sp<hardware::power::IPowerHintSession>>, createHintSession, - (int32_t, int32_t, const std::vector<int32_t>&, int64_t), (override)); + MOCK_METHOD(HalResult<std::shared_ptr<aidl::android::hardware::power::IPowerHintSession>>, + createHintSession, (int32_t, int32_t, const std::vector<int32_t>&, int64_t), + (override)); MOCK_METHOD(HalResult<int64_t>, getHintSessionPreferredRate, (), (override)); }; |