diff --git a/services/common/include/bundle_active_shutdown_callback_proxy.h b/services/common/include/bundle_active_shutdown_callback_proxy.h index e53fe5e96768074c1993b14cf201075cc684a376..e7330366a439d65f6b07861e1ce62ac6d0baab07 100644 --- a/services/common/include/bundle_active_shutdown_callback_proxy.h +++ b/services/common/include/bundle_active_shutdown_callback_proxy.h @@ -30,6 +30,9 @@ public: ~BundleActiveShutdownCallbackProxy() = default; DISALLOW_COPY_AND_MOVE(BundleActiveShutdownCallbackProxy); void ShutdownCallback() override; + bool OnTakeOverShutdown(bool isReboot) override; + void OnSyncShutdown() override; + void OnAsyncShutdown() override; private: static inline BrokerDelegator delegator_; }; diff --git a/services/common/include/bundle_active_shutdown_callback_service.h b/services/common/include/bundle_active_shutdown_callback_service.h index 95b3648a2a29ec43afaf0734409b6bd46e79dddb..811ae4105a5b1f3d40092c05cb0b2c170dbea7f1 100644 --- a/services/common/include/bundle_active_shutdown_callback_service.h +++ b/services/common/include/bundle_active_shutdown_callback_service.h @@ -26,6 +26,9 @@ public: BundleActiveShutdownCallbackService(std::shared_ptr bundleActiveCore); virtual ~BundleActiveShutdownCallbackService() {} void ShutdownCallback() override; + bool OnTakeOverShutdown(bool isReboot) override; + void OnSyncShutdown() override; + void OnAsyncShutdown() override; private: std::shared_ptr bundleActiveCore_; }; diff --git a/services/common/include/bundle_active_shutdown_callback_stub.h b/services/common/include/bundle_active_shutdown_callback_stub.h index 134e33d8a143f55f56d6338268c8a8c094f91370..626179da64bd0aaca96eb0260761d54a35a9ba78 100644 --- a/services/common/include/bundle_active_shutdown_callback_stub.h +++ b/services/common/include/bundle_active_shutdown_callback_stub.h @@ -34,6 +34,9 @@ public: int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel &reply, MessageOption &option) override; private: void ShutdownStub(); + bool OnTakeOverShutdownStub(bool isReboot); + void OnSyncShutdownStub(); + void OnAsyncShutdownStub(); }; } // namespace DeviceUsageStats } // namespace OHOS diff --git a/services/common/src/bundle_active_shutdown_callback_proxy.cpp b/services/common/src/bundle_active_shutdown_callback_proxy.cpp index a8c60c3ac7e9b8f4f2aaeabe79c6140736f6343a..bef179702f8fb6cf12da49ca060af51876b5a55c 100644 --- a/services/common/src/bundle_active_shutdown_callback_proxy.cpp +++ b/services/common/src/bundle_active_shutdown_callback_proxy.cpp @@ -34,6 +34,61 @@ void BundleActiveShutdownCallbackProxy::ShutdownCallback() BUNDLE_ACTIVE_LOGE("BundleActiveShutdownCallbackProxy::ShutdownCallback failed!"); } } + +void BundleActiveShutdownCallbackProxy::OnAsyncShutdown() +{ + sptr remote = Remote(); + if (remote == nullptr) { + return; + } + MessageParcel data; + MessageParcel reply; + MessageOption option; + if (!data.WriteInterfaceToken(BundleActiveShutdownCallbackProxy::GetDescriptor())) { + return; + } + int32_t ret = remote->SendRequest(IShutdownCallback::POWER_SHUTDOWN_ASYNC, data, reply, option); + if (ret != ERR_OK) { + BUNDLE_ACTIVE_LOGE("BundleActiveShutdownCallbackProxy::ShutdownCallback failed!"); + } +} + +void BundleActiveShutdownCallbackProxy::OnSyncShutdown() +{ + sptr remote = Remote(); + if (remote == nullptr) { + return; + } + MessageParcel data; + MessageParcel reply; + MessageOption option; + if (!data.WriteInterfaceToken(BundleActiveShutdownCallbackProxy::GetDescriptor())) { + return; + } + int32_t ret = remote->SendRequest(IShutdownCallback::POWER_SHUTDOWN_SYNC, data, reply, option); + if (ret != ERR_OK) { + BUNDLE_ACTIVE_LOGE("BundleActiveShutdownCallbackProxy::ShutdownCallback failed!"); + } +} + +bool BundleActiveShutdownCallbackProxy::OnTakeOverShutdown(bool isReboot) +{ + sptr remote = Remote(); + if (remote == nullptr) { + return false; + } + MessageParcel data; + MessageParcel reply; + MessageOption option; + if (!data.WriteInterfaceToken(BundleActiveShutdownCallbackProxy::GetDescriptor())) { + return false; + } + int32_t ret = remote->SendRequest(IShutdownCallback::POWER_SHUTDOWN_TAKE_OVER, data, reply, option); + if (ret != ERR_OK) { + BUNDLE_ACTIVE_LOGE("BundleActiveShutdownCallbackProxy::ShutdownCallback failed!"); + } + return true; +} } // namespace DeviceUsageStats } // namespace OHOS diff --git a/services/common/src/bundle_active_shutdown_callback_service.cpp b/services/common/src/bundle_active_shutdown_callback_service.cpp index 18d469a72919c7fac5e5633aa71edca216ccae65..cfb855ec647529ce8cb89b2de0d2adaf4dfd7c91 100644 --- a/services/common/src/bundle_active_shutdown_callback_service.cpp +++ b/services/common/src/bundle_active_shutdown_callback_service.cpp @@ -29,6 +29,15 @@ void BundleActiveShutdownCallbackService::ShutdownCallback() { bundleActiveCore_->ShutDown(); } + +bool BundleActiveShutdownCallbackService::OnTakeOverShutdown(bool isReboot) +{ + return false; +} + +void BundleActiveShutdownCallbackService::OnSyncShutdown() {} + +void BundleActiveShutdownCallbackService::OnAsyncShutdown() {} } // namespace DeviceUsageStats } // namespace OHOS diff --git a/services/common/src/bundle_active_shutdown_callback_stub.cpp b/services/common/src/bundle_active_shutdown_callback_stub.cpp index 5380b59e8db801661b35915181628eb75152da3d..05b911513963b1112ddd3a8aeb577b4715e4f846 100644 --- a/services/common/src/bundle_active_shutdown_callback_stub.cpp +++ b/services/common/src/bundle_active_shutdown_callback_stub.cpp @@ -43,6 +43,22 @@ void BundleActiveShutdownCallbackStub::ShutdownStub() { ShutdownCallback(); } + +void BundleActiveShutdownCallbackStub::OnSyncShutdownStub() +{ + OnSyncShutdown(); +} + +bool BundleActiveShutdownCallbackStub::OnTakeOverShutdownStub(bool isReboot) +{ + OnTakeOverShutdown(isReboot); + return false; +} + +void BundleActiveShutdownCallbackStub::OnAsyncShutdownStub() +{ + OnAsyncShutdown(); +} } // namespace DeviceUsageStats } // namespace OHOS