From 4660643541274546b89e99a80f90207d6b8c74e6 Mon Sep 17 00:00:00 2001 From: fateddd Date: Fri, 29 Aug 2025 07:59:36 +0000 Subject: [PATCH 01/15] update interfaces/innerkits/wm/window_manager.h. Signed-off-by: fateddd --- interfaces/innerkits/wm/window_manager.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/interfaces/innerkits/wm/window_manager.h b/interfaces/innerkits/wm/window_manager.h index 1db684ff1f..0c274b3a89 100644 --- a/interfaces/innerkits/wm/window_manager.h +++ b/interfaces/innerkits/wm/window_manager.h @@ -1254,6 +1254,15 @@ public: */ WMError MinimizeByWindowId(const std::vector& windowIds); + /** + * @brief Set the animation speed multiplier for a specific process. + * + * @param pid Process id. + * @param multiplier The animation speed multiplier. + * @return WM_OK means set success, others means failed. + */ + WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier); + /** * @brief Set foreground window number. Only main window. Only support freeMultiWindow. * -- Gitee From 8aeed4b31ecfd57cfcb592bb3b37cbc3463175d1 Mon Sep 17 00:00:00 2001 From: fateddd Date: Fri, 29 Aug 2025 08:03:04 +0000 Subject: [PATCH 02/15] update window_scene/session/container/include/zidl/session_stage_interface.h. Signed-off-by: fateddd --- .../session/container/include/zidl/session_stage_interface.h | 1 + 1 file changed, 1 insertion(+) diff --git a/window_scene/session/container/include/zidl/session_stage_interface.h b/window_scene/session/container/include/zidl/session_stage_interface.h index c08cbf3016..3f296bbaaa 100644 --- a/window_scene/session/container/include/zidl/session_stage_interface.h +++ b/window_scene/session/container/include/zidl/session_stage_interface.h @@ -206,6 +206,7 @@ public: return WSError::WS_OK; } virtual void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) = 0; + virtual void ApplyAnimationSpeedMultiplier(float multiplier) = 0; virtual void NotifySessionFullScreen(bool fullScreen) {} // **Non** IPC interface -- Gitee From 8a144fdc0a553e638b302e363bfff8a5e9edab59 Mon Sep 17 00:00:00 2001 From: fateddd Date: Fri, 29 Aug 2025 08:03:59 +0000 Subject: [PATCH 03/15] update window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h. Signed-off-by: fateddd --- .../container/include/zidl/session_stage_ipc_interface_code.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h index 99cacaf6c4..4e906ec676 100644 --- a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h +++ b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h @@ -97,6 +97,8 @@ enum class SessionStageInterfaceCode { TRANS_ID_UPDATE_GLOBAL_DISPLAY_RECT, // Floating ball TRANS_ID_SEND_FB_ACTION_EVENT, + + TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER, }; } // namespace Rosen } // namespace OHOS -- Gitee From 1e786b3e54b8bfab9e84d6505d5061fa242ae65f Mon Sep 17 00:00:00 2001 From: fateddd Date: Fri, 29 Aug 2025 08:05:17 +0000 Subject: [PATCH 04/15] update window_scene/session/container/include/zidl/session_stage_proxy.h. Signed-off-by: fateddd --- .../session/container/include/zidl/session_stage_proxy.h | 1 + 1 file changed, 1 insertion(+) diff --git a/window_scene/session/container/include/zidl/session_stage_proxy.h b/window_scene/session/container/include/zidl/session_stage_proxy.h index 700cc196d9..2ce7923c17 100644 --- a/window_scene/session/container/include/zidl/session_stage_proxy.h +++ b/window_scene/session/container/include/zidl/session_stage_proxy.h @@ -80,6 +80,7 @@ public: WSError PcAppInPadNormalClose() override; WSError NotifyCompatibleModePropertyChange(const sptr property) override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; + void ApplyAnimationSpeedMultiplier(float multiplier) override; void NotifySessionFullScreen(bool fullScreen) override; WSError NotifyTargetRotationInfo(OrientationInfo& Info) override; RotationChangeResult NotifyRotationChange(const RotationChangeInfo& rotationChangeInfo) override; -- Gitee From c98236e885b49806d39deb70068872eb4c3481de Mon Sep 17 00:00:00 2001 From: fateddd Date: Fri, 29 Aug 2025 08:06:27 +0000 Subject: [PATCH 05/15] update window_scene/session/container/include/zidl/session_stage_stub.h. Signed-off-by: fateddd --- window_scene/session/container/include/zidl/session_stage_stub.h | 1 + 1 file changed, 1 insertion(+) diff --git a/window_scene/session/container/include/zidl/session_stage_stub.h b/window_scene/session/container/include/zidl/session_stage_stub.h index 79e0024968..e76c785b86 100644 --- a/window_scene/session/container/include/zidl/session_stage_stub.h +++ b/window_scene/session/container/include/zidl/session_stage_stub.h @@ -80,6 +80,7 @@ private: int HandlePcAppInPadNormalClose(MessageParcel& data, MessageParcel& reply); int HandleNotifyCompatibleModePropertyChange(MessageParcel& data, MessageParcel& reply); int HandleSetUniqueVirtualPixelRatio(MessageParcel& data, MessageParcel& reply); + int HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply); int HandleNotifySessionFullScreen(MessageParcel& data, MessageParcel& reply); int HandleNotifyDumpInfo(MessageParcel& data, MessageParcel& reply); int HandleExtensionHostData(MessageParcel& data, MessageParcel& reply, MessageOption& option); -- Gitee From 15c8960f95996ee1118382f96c88d96d005626f8 Mon Sep 17 00:00:00 2001 From: fateddd Date: Tue, 2 Sep 2025 07:02:03 +0000 Subject: [PATCH 06/15] Revert "update interfaces/innerkits/wm/window_manager.h." This reverts commit 4660643541274546b89e99a80f90207d6b8c74e6. --- interfaces/innerkits/wm/window_manager.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/interfaces/innerkits/wm/window_manager.h b/interfaces/innerkits/wm/window_manager.h index 0c274b3a89..1db684ff1f 100644 --- a/interfaces/innerkits/wm/window_manager.h +++ b/interfaces/innerkits/wm/window_manager.h @@ -1254,15 +1254,6 @@ public: */ WMError MinimizeByWindowId(const std::vector& windowIds); - /** - * @brief Set the animation speed multiplier for a specific process. - * - * @param pid Process id. - * @param multiplier The animation speed multiplier. - * @return WM_OK means set success, others means failed. - */ - WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier); - /** * @brief Set foreground window number. Only main window. Only support freeMultiWindow. * -- Gitee From 7fafade194da8b5020f36529bdb4481232eb82f1 Mon Sep 17 00:00:00 2001 From: fateddd Date: Tue, 2 Sep 2025 07:02:24 +0000 Subject: [PATCH 07/15] Revert "update window_scene/session/container/include/zidl/session_stage_interface.h." This reverts commit 8aeed4b31ecfd57cfcb592bb3b37cbc3463175d1. --- .../session/container/include/zidl/session_stage_interface.h | 1 - 1 file changed, 1 deletion(-) diff --git a/window_scene/session/container/include/zidl/session_stage_interface.h b/window_scene/session/container/include/zidl/session_stage_interface.h index 3f296bbaaa..c08cbf3016 100644 --- a/window_scene/session/container/include/zidl/session_stage_interface.h +++ b/window_scene/session/container/include/zidl/session_stage_interface.h @@ -206,7 +206,6 @@ public: return WSError::WS_OK; } virtual void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) = 0; - virtual void ApplyAnimationSpeedMultiplier(float multiplier) = 0; virtual void NotifySessionFullScreen(bool fullScreen) {} // **Non** IPC interface -- Gitee From fb416cf4e3caafb93156a808abd8d9c511236d50 Mon Sep 17 00:00:00 2001 From: fateddd Date: Tue, 2 Sep 2025 07:02:44 +0000 Subject: [PATCH 08/15] =?UTF-8?q?Revert=20"update=20window=5Fscene/session?= =?UTF-8?q?/container/include/zidl/session=5Fstage=5Fipc=5Fi=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 8a144fdc0a553e638b302e363bfff8a5e9edab59. --- .../container/include/zidl/session_stage_ipc_interface_code.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h index 4e906ec676..99cacaf6c4 100644 --- a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h +++ b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h @@ -97,8 +97,6 @@ enum class SessionStageInterfaceCode { TRANS_ID_UPDATE_GLOBAL_DISPLAY_RECT, // Floating ball TRANS_ID_SEND_FB_ACTION_EVENT, - - TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER, }; } // namespace Rosen } // namespace OHOS -- Gitee From a7ac61f9a46ef6a5eb9c2784d22270568b6480fb Mon Sep 17 00:00:00 2001 From: fateddd Date: Tue, 2 Sep 2025 07:03:06 +0000 Subject: [PATCH 09/15] Revert "update window_scene/session/container/include/zidl/session_stage_proxy.h." This reverts commit 1e786b3e54b8bfab9e84d6505d5061fa242ae65f. --- .../session/container/include/zidl/session_stage_proxy.h | 1 - 1 file changed, 1 deletion(-) diff --git a/window_scene/session/container/include/zidl/session_stage_proxy.h b/window_scene/session/container/include/zidl/session_stage_proxy.h index 2ce7923c17..700cc196d9 100644 --- a/window_scene/session/container/include/zidl/session_stage_proxy.h +++ b/window_scene/session/container/include/zidl/session_stage_proxy.h @@ -80,7 +80,6 @@ public: WSError PcAppInPadNormalClose() override; WSError NotifyCompatibleModePropertyChange(const sptr property) override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; - void ApplyAnimationSpeedMultiplier(float multiplier) override; void NotifySessionFullScreen(bool fullScreen) override; WSError NotifyTargetRotationInfo(OrientationInfo& Info) override; RotationChangeResult NotifyRotationChange(const RotationChangeInfo& rotationChangeInfo) override; -- Gitee From 25d42a2cce9f270b1535700faff82fb5cebd7ab4 Mon Sep 17 00:00:00 2001 From: fateddd Date: Tue, 2 Sep 2025 07:03:26 +0000 Subject: [PATCH 10/15] Revert "update window_scene/session/container/include/zidl/session_stage_stub.h." This reverts commit c98236e885b49806d39deb70068872eb4c3481de. --- window_scene/session/container/include/zidl/session_stage_stub.h | 1 - 1 file changed, 1 deletion(-) diff --git a/window_scene/session/container/include/zidl/session_stage_stub.h b/window_scene/session/container/include/zidl/session_stage_stub.h index e76c785b86..79e0024968 100644 --- a/window_scene/session/container/include/zidl/session_stage_stub.h +++ b/window_scene/session/container/include/zidl/session_stage_stub.h @@ -80,7 +80,6 @@ private: int HandlePcAppInPadNormalClose(MessageParcel& data, MessageParcel& reply); int HandleNotifyCompatibleModePropertyChange(MessageParcel& data, MessageParcel& reply); int HandleSetUniqueVirtualPixelRatio(MessageParcel& data, MessageParcel& reply); - int HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply); int HandleNotifySessionFullScreen(MessageParcel& data, MessageParcel& reply); int HandleNotifyDumpInfo(MessageParcel& data, MessageParcel& reply); int HandleExtensionHostData(MessageParcel& data, MessageParcel& reply, MessageOption& option); -- Gitee From f1a262671f819f5744d817a3457d3ebd47bdbc1c Mon Sep 17 00:00:00 2001 From: fateddd Date: Wed, 10 Sep 2025 09:53:06 +0800 Subject: [PATCH 11/15] window animtionspeedmultiplier Signed-off-by: fateddd --- interfaces/innerkits/wm/window_manager.h | 9 ++++ .../include/zidl/session_stage_interface.h | 1 + .../zidl/session_stage_ipc_interface_code.h | 2 + .../include/zidl/session_stage_proxy.h | 1 + .../include/zidl/session_stage_stub.h | 1 + .../src/zidl/session_stage_proxy.cpp | 28 ++++++++++ .../container/src/zidl/session_stage_stub.cpp | 14 +++++ .../session/host/include/scene_session.h | 1 + .../session/host/src/scene_session.cpp | 15 ++++++ .../include/scene_session_manager.h | 1 + .../zidl/scene_session_manager_interface.h | 1 + .../zidl/scene_session_manager_proxy.h | 1 + .../include/zidl/scene_session_manager_stub.h | 1 + .../src/scene_session_manager.cpp | 16 ++++++ .../src/zidl/scene_session_manager_proxy.cpp | 35 +++++++++++++ .../src/zidl/scene_session_manager_stub.cpp | 22 ++++++++ window_scene/test/mock/mock_session_stage.h | 1 + .../scene_session_manager_proxy_test.cpp | 16 ++++++ .../scene_session_manager_stub_test.cpp | 24 +++++++++ .../unittest/scene_session_manager_test7.cpp | 51 +++++++++++++++++++ .../test/unittest/scene_session_test5.cpp | 25 +++++++++ .../unittest/session_stage_proxy_test.cpp | 12 +++++ .../test/unittest/session_stage_stub_test.cpp | 15 ++++++ wm/include/window_adapter.h | 1 + wm/include/window_session_impl.h | 3 ++ wm/src/window_adapter.cpp | 8 +++ wm/src/window_manager.cpp | 9 ++++ wm/src/window_scene_session_impl.cpp | 7 +++ wm/src/window_session_impl.cpp | 27 ++++++++++ wm/test/unittest/window_adapter_test.cpp | 12 +++++ wm/test/unittest/window_manager_test.cpp | 17 +++++++ wm/test/unittest/window_session_impl_test.cpp | 16 ++++++ .../include/zidl/window_manager_interface.h | 1 + 33 files changed, 394 insertions(+) diff --git a/interfaces/innerkits/wm/window_manager.h b/interfaces/innerkits/wm/window_manager.h index 1db684ff1f..b29999c253 100644 --- a/interfaces/innerkits/wm/window_manager.h +++ b/interfaces/innerkits/wm/window_manager.h @@ -1254,6 +1254,15 @@ public: */ WMError MinimizeByWindowId(const std::vector& windowIds); + /** + * @brief Set the animation speed multiplier for a specific process. + * + * @param pid process id. + * @param multiplier The animation speed multiplier. + * @return WM_OK means set success, others means set failed. + */ + WMError UpdateAnimationSpeedMultiplerForPid(pid_t pid, float multiplier); + /** * @brief Set foreground window number. Only main window. Only support freeMultiWindow. * diff --git a/window_scene/session/container/include/zidl/session_stage_interface.h b/window_scene/session/container/include/zidl/session_stage_interface.h index c08cbf3016..3f296bbaaa 100644 --- a/window_scene/session/container/include/zidl/session_stage_interface.h +++ b/window_scene/session/container/include/zidl/session_stage_interface.h @@ -206,6 +206,7 @@ public: return WSError::WS_OK; } virtual void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) = 0; + virtual void ApplyAnimationSpeedMultiplier(float multiplier) = 0; virtual void NotifySessionFullScreen(bool fullScreen) {} // **Non** IPC interface diff --git a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h index 99cacaf6c4..5ef8495abb 100644 --- a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h +++ b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h @@ -97,6 +97,8 @@ enum class SessionStageInterfaceCode { TRANS_ID_UPDATE_GLOBAL_DISPLAY_RECT, // Floating ball TRANS_ID_SEND_FB_ACTION_EVENT, + + TRANS_ID_APPLY_ANIMATION_MULTIPLIER, }; } // namespace Rosen } // namespace OHOS diff --git a/window_scene/session/container/include/zidl/session_stage_proxy.h b/window_scene/session/container/include/zidl/session_stage_proxy.h index 700cc196d9..2ce7923c17 100644 --- a/window_scene/session/container/include/zidl/session_stage_proxy.h +++ b/window_scene/session/container/include/zidl/session_stage_proxy.h @@ -80,6 +80,7 @@ public: WSError PcAppInPadNormalClose() override; WSError NotifyCompatibleModePropertyChange(const sptr property) override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; + void ApplyAnimationSpeedMultiplier(float multiplier) override; void NotifySessionFullScreen(bool fullScreen) override; WSError NotifyTargetRotationInfo(OrientationInfo& Info) override; RotationChangeResult NotifyRotationChange(const RotationChangeInfo& rotationChangeInfo) override; diff --git a/window_scene/session/container/include/zidl/session_stage_stub.h b/window_scene/session/container/include/zidl/session_stage_stub.h index 79e0024968..e76c785b86 100644 --- a/window_scene/session/container/include/zidl/session_stage_stub.h +++ b/window_scene/session/container/include/zidl/session_stage_stub.h @@ -80,6 +80,7 @@ private: int HandlePcAppInPadNormalClose(MessageParcel& data, MessageParcel& reply); int HandleNotifyCompatibleModePropertyChange(MessageParcel& data, MessageParcel& reply); int HandleSetUniqueVirtualPixelRatio(MessageParcel& data, MessageParcel& reply); + int HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply); int HandleNotifySessionFullScreen(MessageParcel& data, MessageParcel& reply); int HandleNotifyDumpInfo(MessageParcel& data, MessageParcel& reply); int HandleExtensionHostData(MessageParcel& data, MessageParcel& reply, MessageOption& option); diff --git a/window_scene/session/container/src/zidl/session_stage_proxy.cpp b/window_scene/session/container/src/zidl/session_stage_proxy.cpp index 05c8b318be..73ee13514f 100644 --- a/window_scene/session/container/src/zidl/session_stage_proxy.cpp +++ b/window_scene/session/container/src/zidl/session_stage_proxy.cpp @@ -1590,6 +1590,34 @@ void SessionStageProxy::SetUniqueVirtualPixelRatio(bool useUniqueDensity, float } } +void SessionStageProxy::ApplyAnimationSpeedMultiplier(float multiplier) +{ + sptr remote = Remote(); + if (remote == nullptr) { + TLOGE(WmsLogTag::WMS_ANIMATION, "remote is nullptr"); + return; + } + + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_ASYNC); + if (!data.WriteInterfaceToken(GetDescriptor())) { + TLOGE(WmsLogTag::WMS_ANIMATION, "WriteInterfaceToken failed"); + return; + } + + if (!data.WriteFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write multiplier failed"); + return; + } + + if (remote->SendRequest(static_cast(SessionStageInterfaceCode::TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER), + data, reply, option) != ERR_NONE) { + TLOGE(WmsLogTag::WMS_ANIMATION, "SendRequest failed"); + return; + } +} + WSError SessionStageProxy::NotifyDumpInfo(const std::vector& params, std::vector& info) { sptr remote = Remote(); diff --git a/window_scene/session/container/src/zidl/session_stage_stub.cpp b/window_scene/session/container/src/zidl/session_stage_stub.cpp index c52c1d0969..e9b5b02694 100644 --- a/window_scene/session/container/src/zidl/session_stage_stub.cpp +++ b/window_scene/session/container/src/zidl/session_stage_stub.cpp @@ -236,6 +236,8 @@ int SessionStageStub::OnRemoteRequest(uint32_t code, MessageParcel& data, Messag return HandleUpdateGlobalDisplayRectFromServer(data, reply); case static_cast(SessionStageInterfaceCode::TRANS_ID_SEND_FB_ACTION_EVENT): return HandleSendFbActionEvent(data, reply); + case static_cast(SessionStageInterfaceCode::TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER): + return HandleApplyAnimationSpeedMultiplier(data, reply); default: WLOGFE("Failed to find function handler!"); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -863,6 +865,18 @@ int SessionStageStub::HandleSetUniqueVirtualPixelRatio(MessageParcel& data, Mess return ERR_NONE; } +int SessionStageStub::HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply) +{ + TLOGD(WmsLogTag::WMS_ANIMATION, "HandleApplyAnimationSpeedMultiplier!"); + float multiplier; + if (!data.ReadFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Read multiplier failed."); + return ERR_INVALID_DATA; + } + ApplyAnimationSpeedMultiplier(multiplier); + return ERR_NONE; +} + int SessionStageStub::HandleSetSplitButtonVisible(MessageParcel& data, MessageParcel& reply) { TLOGD(WmsLogTag::WMS_LAYOUT, "in"); diff --git a/window_scene/session/host/include/scene_session.h b/window_scene/session/host/include/scene_session.h index 9d327a9443..9b9e0fb5d7 100644 --- a/window_scene/session/host/include/scene_session.h +++ b/window_scene/session/host/include/scene_session.h @@ -489,6 +489,7 @@ public: virtual void SetSkipSelfWhenShowOnVirtualScreen(bool isSkip); virtual void SetSkipEventOnCastPlus(bool isSkip); WMError SetUniqueDensityDpi(bool useUnique, float dpi); + WMErroe ApplyAnimationSpeedMultiplier(float multiplier); bool IsAnco() const override; void SetBlank(bool isAddBlank) override; diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 932968ca90..2000cddaf6 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -7368,6 +7368,21 @@ WMError SceneSession::SetUniqueDensityDpi(bool useUnique, float dpi) return WMError::WM_OK; } +WMError SceneSession::ApplyAnimationSpeedMultiplier(float multiplier) +{ + if (!IsSessionValid()) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Session is invalid"); + return WMError::WM_ERROR_INVALID_SESSION; + } + + if (!sessionStage_) { + TLOGE(WmsLogTag::WMS_ANIMATION, "sessionStage_ is nullptr"); + return WMError::WM_ERROR_NULLPTR; + } + sessionStage_->ApplyAnimationSpeedMultiplier(multiplier); + return WMError::WM_OK; +} + WMError SceneSession::SetSystemWindowEnableDrag(bool enableDrag) { if (!WindowHelper::IsSubWindow(GetWindowType()) && !WindowHelper::IsSystemWindow(GetWindowType())) { diff --git a/window_scene/session_manager/include/scene_session_manager.h b/window_scene/session_manager/include/scene_session_manager.h index e9ba28d36e..b062880184 100644 --- a/window_scene/session_manager/include/scene_session_manager.h +++ b/window_scene/session_manager/include/scene_session_manager.h @@ -742,6 +742,7 @@ public: bool IsMainWindowByPersistentId(int32_t persistentId); WMError MinimizeByWindowId(const std::vector& windowIds) override; void RegisterMinimizeByWindowIdCallback(MinimizeByWindowIdFunc&& func); + WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) override; void RegisterSceneSessionDestructCallback(NotifySceneSessionDestructFunc&& func); void RegisterTransferSessionToTargetScreenCallback(NotifyTransferSessionToTargetScreenFunc&& func); WMError NotifyTransferSessionToTargetScreen(const TransferSessionInfo& info); diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_interface.h b/window_scene/session_manager/include/zidl/scene_session_manager_interface.h index 4b9ffc7271..c11fbbc95f 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_interface.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_interface.h @@ -154,6 +154,7 @@ public: TRANS_ID_REMOVE_SESSION_BLACK_LIST, TRANS_ID_GET_PIP_SWITCH_STATUS, TRANS_ID_RECOVER_WINDOW_PROPERTY_CHANGE_FLAG, + TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID, }; virtual WSError SetSessionLabel(const sptr& token, const std::string& label) = 0; diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h b/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h index 7e97bb0fd9..6d60abd7c3 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h @@ -163,6 +163,7 @@ public: WMError SetStartWindowBackgroundColor( const std::string& moduleName, const std::string& abilityName, uint32_t color, int32_t uid) override; WMError MinimizeByWindowId(const std::vector& windowIds) override; + WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) override; WMError SetForegroundWindowNum(uint32_t windowNum) override; WSError UseImplicitAnimation(int32_t hostWindowId, bool useImplicit) override; WMError RegisterWindowPropertyChangeAgent(WindowInfoKey windowInfoKey, uint32_t interestInfo, diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_stub.h b/window_scene/session_manager/include/zidl/scene_session_manager_stub.h index 99c01df2d2..dd49349eab 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_stub.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_stub.h @@ -142,6 +142,7 @@ private: int ProcessRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option); int HandleMinimizeByWindowId(MessageParcel& data, MessageParcel& reply); + int HandleUpdateAnimationSpeedMultiplierForPid(MessageParcel& data, MessageParcel& reply); int HandleSetForegroundWindowNum(MessageParcel& data, MessageParcel& reply); int HandleUseImplicitAnimation(MessageParcel& data, MessageParcel& reply); int HandleCreateUIEffectController(MessageParcel& data, MessageParcel& reply); diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index c48cdaca15..07377681fc 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -16698,6 +16698,22 @@ void SceneSessionManager::RegisterMinimizeByWindowIdCallback(MinimizeByWindowIdF minimizeByWindowIdFunc_ = std::move(func); } +WMError SceneSessionManager::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) +{ + if (!SessionPermission::IsSystemServiceCalling()) { + TLOGE(WmsLogTag::WMS_ANIMATION, "The caller is not system service."); + return WMError::WM_ERROR_INVALID_PERMISSION; + } + + for (const auto& [_, session] : sceneSessionMap_) { + if (session && session->GetCallingPid() == pid && session->IsVisible()) { + session->ApplyAnimationSpeedMultiplier(multiplier); + return WMError::WM_OK; + } + } + return WMError::WM_OK; +} + const std::vector> SceneSessionManager::GetActiveSceneSessionCopy() { std::map> sceneSessionMapCopy; diff --git a/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp b/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp index cae8eb38fa..3803bb5d7d 100644 --- a/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp +++ b/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp @@ -3570,6 +3570,41 @@ WMError SceneSessionManagerProxy::MinimizeByWindowId(const std::vector& return static_cast(reply.ReadInt32()); } +WMError SceneSessionManagerProxy::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option; + if (!data.WriteInterfaceToken(GetDescriptor())) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write interfaceToken failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + if (!data.WriteInt32(pid)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write pid failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + if (!data.WriteFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write multiplier failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + sptr remote = Remote(); + if (remote == nullptr) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Remote is null"); + return WMError::WM_ERROR_IPC_FAILED; + } + if (remote->SendRequest(static_cast(SceneSessionManagerMessage::TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID), + data, reply, option) != ERR_NONE) { + TLOGE(WmsLogTag::WMS_ANIMATION, "SendRequest failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + int32_t ret = 0; + if (!reply.ReadInt32(ret)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Read ret failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + return static_cast(ret); +} + WMError SceneSessionManagerProxy::SetForegroundWindowNum(uint32_t windowNum) { MessageParcel data; diff --git a/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp b/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp index aab739f17e..d41b369350 100644 --- a/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp +++ b/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp @@ -258,6 +258,8 @@ int SceneSessionManagerStub::ProcessRemoteRequest(uint32_t code, MessageParcel& return HandleGetPiPSettingSwitchStatus(data, reply); case static_cast(SceneSessionManagerMessage::TRANS_ID_RECOVER_WINDOW_PROPERTY_CHANGE_FLAG): return HandleRecoverWindowPropertyChangeFlag(data, reply); + case static_cast(SceneSessionManageerMessage::TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID): + return HandleUpdateAnimationSpeedMultiplierForPid(data, reply); default: WLOGFE("Failed to find function handler!"); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -2228,6 +2230,26 @@ int SceneSessionManagerStub::HandleMinimizeByWindowId(MessageParcel& data, Messa return ERR_NONE; } +int SceneSessionManagerStub::HandleUpdateAnimationSpeedMultiplierForPid(MessageParcel& data, MessageParcel& reply) +{ + int32_t pid = 0; + float multiplier = 1.0f; + if (!data.ReadInt32(pid)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "read pid failed"); + return ERR_INVALID_DATA; + } + if (!data.ReadFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "read multiplier failed"); + return ERR_INVALID_DATA; + } + WMError errCode = UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + if (!reply.WriteInt32(static_cast(errCode))) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write errCode failed."); + return ERR_INVALID_DATA; + } + return ERR_NONE; +} + int SceneSessionManagerStub::HandleSetForegroundWindowNum(MessageParcel& data, MessageParcel& reply) { uint32_t windowNum = 0; diff --git a/window_scene/test/mock/mock_session_stage.h b/window_scene/test/mock/mock_session_stage.h index 08d8e34420..e39816c4fb 100644 --- a/window_scene/test/mock/mock_session_stage.h +++ b/window_scene/test/mock/mock_session_stage.h @@ -68,6 +68,7 @@ public: MOCK_METHOD2(NotifyDisplayMove, void(DisplayId from, DisplayId to)); MOCK_METHOD1(SwitchFreeMultiWindow, WSError(bool enable)); MOCK_METHOD2(SetUniqueVirtualPixelRatio, void(bool useUniqueDensity, float virtualPixelRatio)); + MOCK_METHOD1(ApplyAnimationSpeedMultiplier, void(float multiplier)); MOCK_METHOD0(PcAppInPadNormalClose, WSError(void)); MOCK_METHOD1(NotifyCompatibleModePropertyChange, WSError(const sptr property)); MOCK_METHOD1(NotifySessionFullScreen, void(bool fullScreen)); diff --git a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp index 8b314386af..3eaadfde8d 100644 --- a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp @@ -621,6 +621,22 @@ HWTEST_F(sceneSessionManagerProxyTest, SetStartWindowBackgroundColor, TestSize.L sceneSessionManagerProxy->SetStartWindowBackgroundColor("moduleName", "abilityName", 0xffffffff, 100)); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: normal function + * @tc.type: FUNC + */ +HWTEST_F(sceneSessionManagerProxyTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + sptr iRemoteObjectMocker = sptr::MakeSptr(); + ASSERT_NE(iRemoteObjectMocker, nullptr); + sptr sceneSessionManagerProxy = + sptr::MakeSptr(iRemoteObjectMocker); + ASSERT_NE(sceneSessionManagerProxy, nullptr); + + EXPECT_EQ(WMError::WM_OK, sceneSessionManagerProxy->UpdateAnimationSpeedMultiplierForPid(10000, 2.0f)); +} + /** * @tc.name: RemoveExtensionWindowStageFromSCB * @tc.desc: normal function diff --git a/window_scene/test/unittest/scene_session_manager_stub_test.cpp b/window_scene/test/unittest/scene_session_manager_stub_test.cpp index 4f901b1675..d491545b28 100644 --- a/window_scene/test/unittest/scene_session_manager_stub_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_stub_test.cpp @@ -2039,6 +2039,30 @@ HWTEST_F(SceneSessionManagerStubTest, HandleSetStartWindowBackgroundColor, TestS EXPECT_EQ(res, ERR_NONE); } +/** + * @tc.name: HandleUpdateAnimationSpeedMultiplierForPid + * @tc.desc: test HandleUpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionManagerStubTest, HandleUpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + ASSERT_NE(stub_, nullptr); + MessageParcel data; + MessageParcel reply; + + int res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); + EXPECT_EQ(res, ERR_INVALID_DATA); + + data.WriteInt32(10000); + res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); + EXPECT_EQ(res, ERR_INVALID_DATA); + + data.WriteInt32(10000); + data.WriteFloat(2.0f); + res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); + EXPECT_EQ(res, ERR_NONE); +} + /** * @tc.name: HandleNotifyScreenshotEvent * @tc.desc: test HandleNotifyScreenshotEvent diff --git a/window_scene/test/unittest/scene_session_manager_test7.cpp b/window_scene/test/unittest/scene_session_manager_test7.cpp index 2a9360f66b..95e349db00 100644 --- a/window_scene/test/unittest/scene_session_manager_test7.cpp +++ b/window_scene/test/unittest/scene_session_manager_test7.cpp @@ -2123,6 +2123,57 @@ HWTEST_F(SceneSessionManagerTest7, MinimizeByWindowId, TestSize.Level1) EXPECT_EQ(WMError::WM_ERROR_INVALID_PARAM, res); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: test function : UpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionManagerTest7, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + ASSERT_NE(nullptr, ssm_); + + MockAccesstokenKit::MockIsSACalling(false); + + float multiplier = 2.0f; + int32_t pid = 1; + + auto result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_ERROR_INVALID_PERMISSION); + + MockAccesstokenKit::MockIsSACalling(true); + SessionInfo info; + info.bundleName_ = "SceneSessionManagerTest7"; + info.abilityName_ = "UpdateAnimationSpeedMultiplierForPid"; + sptr sceneSession01 = sptr::MakeSptr(info, nullptr); + sptr sceneSession02 = sptr::MakeSptr(info, nullptr); + sptr sceneSession03 = sptr::MakeSptr(info, nullptr); + sptr sceneSession04 = sptr::MakeSptr(info, nullptr); + ASSERT_NE(sceneSession01, nullptr); + ASSERT_NE(sceneSession02, nullptr); + ASSERT_NE(sceneSession03, nullptr); + ASSERT_NE(sceneSession04, nullptr); + sceneSession01->isVisible_ = false; + sceneSession01->SetCallingPid(2); + ssm_->sceneSessionMap_.insert(std::make_pair(1, sceneSession01)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); + sceneSession02->isVisible_ = true; + sceneSession02->SetCallingPid(3); + ssm_->sceneSessionMap_.insert(std::make_pair(2, sceneSession02)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); + sceneSession03->isVisible_ = false; + sceneSession03->SetCallingPid(pid); + ssm_->sceneSessionMap_.insert(std::make_pair(3, sceneSession03)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); + sceneSession04->isVisible_ = true; + sceneSession04->SetCallingPid(pid); + ssm_->sceneSessionMap_.insert(std::make_pair(4, sceneSession04)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); +} + /** * @tc.name: SetForegroundWindowNum * @tc.desc: test function : SetForegroundWindowNum diff --git a/window_scene/test/unittest/scene_session_test5.cpp b/window_scene/test/unittest/scene_session_test5.cpp index 36b9cc8d43..cb1de5b0ad 100644 --- a/window_scene/test/unittest/scene_session_test5.cpp +++ b/window_scene/test/unittest/scene_session_test5.cpp @@ -1518,6 +1518,31 @@ HWTEST_F(SceneSessionTest5, SetUniqueDensityDpi, TestSize.Level1) EXPECT_NE(nullptr, session->sessionStage_); } +/** + * @tc.name: ApplyAnimationSpeedMultiplier + * @tc.desc: ApplyAnimationSpeedMultiplier function01 + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionTest5, ApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + SessionInfo info; + info.abilityName_ = "ApplyAnimationSpeedMultiplier"; + info.bundleName_ = "ApplyAnimationSpeedMultiplier"; + sptr session = sptr::MakeSptr(info, nullptr); + EXPECT_NE(session, nullptr); + session->sessionStage_ = nullptr; + EXPECT_EQ(WMError::WM_ERROR_INVALID_SESSION, session->ApplyAnimationSpeedMultiplier(2.0f)); + session->sessionInfo_.isSystem_ = false; + session->state_ = SessionState::STATE_DISCONNECT; + EXPECT_EQ(WMError::WM_ERROR_INVALID_SESSION, session->ApplyAnimationSpeedMultiplier(2.0f)); + session->state_ = SessionState::STATE_CONNECT; + EXPECT_EQ(WMError::WM_ERROR_NULLPTR, session->ApplyAnimationSpeedMultiplier(2.0f)); + + session->sessionStage_ = sptr::MakeSptr(); + EXPECT_NE(nullptr, session->sessionStage_); + EXPECT_EQ(WMError::WM_OK, session->ApplyAnimationSpeedMultiplier(2.0f)); +} + /** * @tc.name: HandleActionUpdateWindowModeSupportType * @tc.desc: HandleActionUpdateWindowModeSupportType function01 diff --git a/window_scene/test/unittest/session_stage_proxy_test.cpp b/window_scene/test/unittest/session_stage_proxy_test.cpp index 270ff05d8c..9996f53965 100755 --- a/window_scene/test/unittest/session_stage_proxy_test.cpp +++ b/window_scene/test/unittest/session_stage_proxy_test.cpp @@ -286,6 +286,18 @@ HWTEST_F(SessionStageProxyTest, NotifyOccupiedAreaChangeInfo, TestSize.Level1) sessionStage_->NotifyOccupiedAreaChangeInfo(info, nullptr, {}, {}); } +/** + * @tc.name: ApplyAnimationSpeedMultiplier + * @tc.desc: test function : ApplyAnimationSpeedMultiplier + * @tc.type: FUNC + */ +HWTEST_F(SessionStageProxyTest, ApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + float multiplier = 2.0f; + ASSERT_TRUE((sessionStage_ != nullptr)); + sessionStage_->ApplyAnimationSpeedMultiplier(multiplier); +} + /** * @tc.name: NotifyKeyboardAnimationCompleted * @tc.desc: test function : NotifyKeyboardAnimationCompleted diff --git a/window_scene/test/unittest/session_stage_stub_test.cpp b/window_scene/test/unittest/session_stage_stub_test.cpp index dd2777cac6..c98fa38eb2 100644 --- a/window_scene/test/unittest/session_stage_stub_test.cpp +++ b/window_scene/test/unittest/session_stage_stub_test.cpp @@ -811,6 +811,21 @@ HWTEST_F(SessionStageStubTest, HandleSetUniqueVirtualPixelRatio, TestSize.Level1 ASSERT_EQ(0, sessionStageStub_->OnRemoteRequest(code, data, reply, option)); } +/** + * @tc.name: HandleApplyAnimationSpeedMultiplier + * @tc.desc: test function : HandleApplyAnimationSpeedMultiplier + * @tc.type: FUNC + */ +HWTEST_F(SessionStageStubTest, HandleApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + ASSERT_TRUE(sessionStageStub_ != nullptr); + ASSERT_EQ(ERR_INVALID_DATA, sessionStageStub_->HandleApplyAnimationSpeedMultiplier(data, reply)); + data.WriteFloat(2.0f); + ASSERT_EQ(0, sessionStageStub_->HandleApplyAnimationSpeedMultiplier(data, reply)); +} + /** * @tc.name: HandleNotifySessionFullScreen * @tc.desc: test function : HandleNotifySessionFullScreen diff --git a/wm/include/window_adapter.h b/wm/include/window_adapter.h index 4f511464dd..7f71801231 100644 --- a/wm/include/window_adapter.h +++ b/wm/include/window_adapter.h @@ -148,6 +148,7 @@ public: virtual WMError NotifyWatchGestureConsumeResult(int32_t keyCode, bool isConsumed); virtual WMError NotifyWatchFocusActiveChange(bool isActive); virtual WMError MinimizeByWindowId(const std::vector& windowIds); + virtual WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier); virtual WMError SetForegroundWindowNum(uint32_t windowNum); virtual WMError SetStartWindowBackgroundColor( const std::string& moduleName, const std::string& abilityName, uint32_t color, int32_t uid); diff --git a/wm/include/window_session_impl.h b/wm/include/window_session_impl.h index 47924c35df..570aa29364 100644 --- a/wm/include/window_session_impl.h +++ b/wm/include/window_session_impl.h @@ -57,6 +57,8 @@ using EnableIfSame = typename std::enable_if, Ret>::type; const std::string SET_UICONTENT_TIMEOUT_LISTENER_TASK_NAME = "SetUIContentTimeoutListener"; constexpr int64_t SET_UICONTENT_TIMEOUT_TIME_MS = 4000; constexpr int64_t SET_UICONTENT_TIMEOUT_TIME_AFTER_FREEZE_MS = 5000; +static std::atomic animationSpeedMultiplier = 1.0f; +static std::atomic isEnableAnimationSpeedMultiplier = false; } struct WindowTitleVisibleFlags { @@ -221,6 +223,7 @@ public: const std::map& avoidAreas = {}) override; void UpdateDensity() override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; + void ApplyAnimationSpeedMultiplier(float multiplier) override; WSError UpdateOrientation() override; WSError UpdateDisplayId(uint64_t displayId) override; WSError UpdateFocus(bool focus) override; diff --git a/wm/src/window_adapter.cpp b/wm/src/window_adapter.cpp index 7af0715572..7e88040ff7 100644 --- a/wm/src/window_adapter.cpp +++ b/wm/src/window_adapter.cpp @@ -1284,6 +1284,14 @@ WMError WindowAdapter::MinimizeByWindowId(const std::vector& windowIds) return wmsProxy->MinimizeByWindowId(windowIds); } +WMError WindowAdapter::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) +{ + INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR); + auto wmsProxy = GetWindowManagerServiceProxy(); + CHECK_PROXY_RETURN_ERROR_IF_NULL(wmsProxy, WMError::WM_ERROR_SAMGR); + return wmsProxy->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); +} + WMError WindowAdapter::SetForegroundWindowNum(uint32_t windowNum) { INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR); diff --git a/wm/src/window_manager.cpp b/wm/src/window_manager.cpp index e37e59d04f..1f68e49c31 100644 --- a/wm/src/window_manager.cpp +++ b/wm/src/window_manager.cpp @@ -2206,6 +2206,15 @@ WMError WindowManager::MinimizeByWindowId(const std::vector& windowIds) return ret; } +WMError WindowManager::UpdateAnimationSpeedMultiplerForPid(pid_t pid, float multiplier) +{ + WMError ret = SingletonContainer::Get().UpdateAnimationSpeedMultiplerForPid(pid, multiplier); + if (ret != WMError::WM_OK) { + TLOGE(WmsLogTag::WMS_ANIMATION, "failed"); + } + return ret; +} + WMError WindowManager::SetForegroundWindowNum(uint32_t windowNum) { WMError ret = SingletonContainer::Get().SetForegroundWindowNum(windowNum); diff --git a/wm/src/window_scene_session_impl.cpp b/wm/src/window_scene_session_impl.cpp index ae00ed918b..bd57557490 100644 --- a/wm/src/window_scene_session_impl.cpp +++ b/wm/src/window_scene_session_impl.cpp @@ -662,6 +662,13 @@ WMError WindowSceneSessionImpl::Create(const std::shared_ptrGetImplicitAnimator() : nullptr; + if (implicitAnimator != nullptr) { + implicitAnimator->ApplyAnimationSpeedMultiplier(animationSpeedMultiplier.load()); + } + } TLOGD(WmsLogTag::WMS_LIFE, "Window Create success [name:%{public}s, id:%{public}d], state:%{public}u, " "mode:%{public}u, enableDefaultDensity:%{public}d, displayId:%{public}" PRIu64, property_->GetWindowName().c_str(), property_->GetPersistentId(), state_, GetWindowMode(), diff --git a/wm/src/window_session_impl.cpp b/wm/src/window_session_impl.cpp index be49ecbbda..2ca28e6d36 100644 --- a/wm/src/window_session_impl.cpp +++ b/wm/src/window_session_impl.cpp @@ -1483,6 +1483,33 @@ void WindowSessionImpl::SetUniqueVirtualPixelRatio(bool useUniqueDensity, float } } +void WindowSessionImpl::ApplyAnimationSpeedMultiplier(float multiplier) +{ + const char* const where = __func__; + auto task = [weakThis = wptr(this), multiplier, where, this] { + auto window = weakThis.promote(); + if (window == nullptr) { + TLOGW(WmsLogTag::WMS_ANIMATION, "%{public}s: window is nullptr", where); + return; + } + for (const auto& [_, pair] : windowSessionMap_) { + auto& WindowSession = pair.second; + if (WindowSession) { + auto rsUIContext = WindowSession->GetRSUIContext(); + auto implicitAnimator = rsUIContext ? rsUIContext->GetImplicitAnimator() : nullptr; + if (implicitAnimator == nullptr) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Failed to open implicit animtion"); + continue; + } + implicitAnimator->ApplyAnimationSpeedMultiplier(multiplier); + } + } + isEnableAnimationSpeedMultiplier.store(!FoldScreenStateInternel::FloatEqualAbs(multiplier, 1.0f)); + animationSpeedMultiplier.store(multiplier); + }; + handler_->PostTask(task, where, 0, AppExecFwk::EventQueue::Priority::HIGH); +} + void WindowSessionImpl::CopyUniqueDensityParameter(sptr parentWindow) { if (parentWindow) { diff --git a/wm/test/unittest/window_adapter_test.cpp b/wm/test/unittest/window_adapter_test.cpp index 9196a00c87..26a7e11edb 100644 --- a/wm/test/unittest/window_adapter_test.cpp +++ b/wm/test/unittest/window_adapter_test.cpp @@ -1104,6 +1104,18 @@ HWTEST_F(WindowAdapterTest, MinimizeByWindowId, TestSize.Level1) ASSERT_EQ(ret, true); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: WindowAdapter/UpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(WindowAdapterTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + WindowAdapter windowAdapter; + auto err = windowAdapter.UpdateAnimationSpeedMultiplierForPid(10000, 2.0f); + ASSERT_EQ(WMError::WM_OK, err); +} + /** * @tc.name: ListWindowInfo01 * @tc.desc: WindowAdapter/ListWindowInfo diff --git a/wm/test/unittest/window_manager_test.cpp b/wm/test/unittest/window_manager_test.cpp index 12e7f6e3d9..28a07edceb 100644 --- a/wm/test/unittest/window_manager_test.cpp +++ b/wm/test/unittest/window_manager_test.cpp @@ -1791,6 +1791,23 @@ HWTEST_F(WindowManagerTest, MinimizeByWindowId, TestSize.Level1) ASSERT_EQ(WMError::WM_OK, ret_2); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: Check UpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(WindowManagerTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + auto& windowManager = WindowManager::GetInstance(); + pid_t pid = 15234; + float multiplier = 2.0f; + WMError ret_1 = windowManager.UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + ASSERT_EQ(WMError::WM_OK, ret_1); + multiplier = 1.0f; + WMError ret_2 = windowManager.UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + ASSERT_EQ(WMError::WM_OK, ret_2); +} + /** * @tc.name: ProcessRegisterWindowInfoChangeCallback01 * @tc.desc: Check ProcessRegisterWindowInfoChangeCallback diff --git a/wm/test/unittest/window_session_impl_test.cpp b/wm/test/unittest/window_session_impl_test.cpp index 151e4d3b3d..435779aa9e 100644 --- a/wm/test/unittest/window_session_impl_test.cpp +++ b/wm/test/unittest/window_session_impl_test.cpp @@ -1958,6 +1958,22 @@ HWTEST_F(WindowSessionImplTest, SetUniqueVirtualPixelRatio, TestSize.Level1) window->SetUniqueVirtualPixelRatio(false, 3.25f); } +/** + * @tc.name: ApplyAnimationSpeedMultiplier + * @tc.desc: ApplyAnimationSpeedMultiplier + * @tc.type: FUNC + */ +HWTEST_F(WindowSessionImplTest, ApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + sptr option = new (std::nothrow) WindowOption(); + ASSERT_NE(option, nullptr); + option->SetWindowName("ApplyAnimationSpeedMultiplier"); + sptr window = new (std::nothrow) WindowSessionImpl(option); + ASSERT_NE(window, nullptr); + window->ApplyAnimationSpeedMultiplier(1.0f); + window->ApplyAnimationSpeedMultiplier(2.0f); +} + /** * @tc.name: EnableDrag * @tc.desc: EnableDrag Test diff --git a/wmserver/include/zidl/window_manager_interface.h b/wmserver/include/zidl/window_manager_interface.h index b3ae63912f..ac900dc362 100644 --- a/wmserver/include/zidl/window_manager_interface.h +++ b/wmserver/include/zidl/window_manager_interface.h @@ -311,6 +311,7 @@ public: virtual WMError HasFloatingWindowForeground(const sptr& abilityToken, bool& hasOrNot) { return WMError::WM_OK; } virtual WMError MinimizeByWindowId(const std::vector& windowIds) { return WMError::WM_OK; } + virtual WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) { return WMError::WM_OK; } virtual WMError SetForegroundWindowNum(uint32_t windowNum) { return WMError::WM_OK; } virtual WSError UseImplicitAnimation(int32_t hostWindowId, bool useImplicit) { return WSError::WS_OK; } virtual WMError AnimateTo(int32_t windowId, const WindowAnimationProperty& animationProperty, -- Gitee From 941ae56eeca7d8cea4bdcd3ae86564f128cdc597 Mon Sep 17 00:00:00 2001 From: fateddd Date: Wed, 10 Sep 2025 07:29:26 +0000 Subject: [PATCH 12/15] Revert "window animtionspeedmultiplier" This reverts commit f1a262671f819f5744d817a3457d3ebd47bdbc1c. --- interfaces/innerkits/wm/window_manager.h | 9 ---- .../include/zidl/session_stage_interface.h | 1 - .../zidl/session_stage_ipc_interface_code.h | 2 - .../include/zidl/session_stage_proxy.h | 1 - .../include/zidl/session_stage_stub.h | 1 - .../src/zidl/session_stage_proxy.cpp | 28 ---------- .../container/src/zidl/session_stage_stub.cpp | 14 ----- .../session/host/include/scene_session.h | 1 - .../session/host/src/scene_session.cpp | 15 ------ .../include/scene_session_manager.h | 1 - .../zidl/scene_session_manager_interface.h | 1 - .../zidl/scene_session_manager_proxy.h | 1 - .../include/zidl/scene_session_manager_stub.h | 1 - .../src/scene_session_manager.cpp | 16 ------ .../src/zidl/scene_session_manager_proxy.cpp | 35 ------------- .../src/zidl/scene_session_manager_stub.cpp | 22 -------- window_scene/test/mock/mock_session_stage.h | 1 - .../scene_session_manager_proxy_test.cpp | 16 ------ .../scene_session_manager_stub_test.cpp | 24 --------- .../unittest/scene_session_manager_test7.cpp | 51 ------------------- .../test/unittest/scene_session_test5.cpp | 25 --------- .../unittest/session_stage_proxy_test.cpp | 12 ----- .../test/unittest/session_stage_stub_test.cpp | 15 ------ wm/include/window_adapter.h | 1 - wm/include/window_session_impl.h | 3 -- wm/src/window_adapter.cpp | 8 --- wm/src/window_manager.cpp | 9 ---- wm/src/window_scene_session_impl.cpp | 7 --- wm/src/window_session_impl.cpp | 27 ---------- wm/test/unittest/window_adapter_test.cpp | 12 ----- wm/test/unittest/window_manager_test.cpp | 17 ------- wm/test/unittest/window_session_impl_test.cpp | 16 ------ .../include/zidl/window_manager_interface.h | 1 - 33 files changed, 394 deletions(-) diff --git a/interfaces/innerkits/wm/window_manager.h b/interfaces/innerkits/wm/window_manager.h index b29999c253..1db684ff1f 100644 --- a/interfaces/innerkits/wm/window_manager.h +++ b/interfaces/innerkits/wm/window_manager.h @@ -1254,15 +1254,6 @@ public: */ WMError MinimizeByWindowId(const std::vector& windowIds); - /** - * @brief Set the animation speed multiplier for a specific process. - * - * @param pid process id. - * @param multiplier The animation speed multiplier. - * @return WM_OK means set success, others means set failed. - */ - WMError UpdateAnimationSpeedMultiplerForPid(pid_t pid, float multiplier); - /** * @brief Set foreground window number. Only main window. Only support freeMultiWindow. * diff --git a/window_scene/session/container/include/zidl/session_stage_interface.h b/window_scene/session/container/include/zidl/session_stage_interface.h index 3f296bbaaa..c08cbf3016 100644 --- a/window_scene/session/container/include/zidl/session_stage_interface.h +++ b/window_scene/session/container/include/zidl/session_stage_interface.h @@ -206,7 +206,6 @@ public: return WSError::WS_OK; } virtual void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) = 0; - virtual void ApplyAnimationSpeedMultiplier(float multiplier) = 0; virtual void NotifySessionFullScreen(bool fullScreen) {} // **Non** IPC interface diff --git a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h index 5ef8495abb..99cacaf6c4 100644 --- a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h +++ b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h @@ -97,8 +97,6 @@ enum class SessionStageInterfaceCode { TRANS_ID_UPDATE_GLOBAL_DISPLAY_RECT, // Floating ball TRANS_ID_SEND_FB_ACTION_EVENT, - - TRANS_ID_APPLY_ANIMATION_MULTIPLIER, }; } // namespace Rosen } // namespace OHOS diff --git a/window_scene/session/container/include/zidl/session_stage_proxy.h b/window_scene/session/container/include/zidl/session_stage_proxy.h index 2ce7923c17..700cc196d9 100644 --- a/window_scene/session/container/include/zidl/session_stage_proxy.h +++ b/window_scene/session/container/include/zidl/session_stage_proxy.h @@ -80,7 +80,6 @@ public: WSError PcAppInPadNormalClose() override; WSError NotifyCompatibleModePropertyChange(const sptr property) override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; - void ApplyAnimationSpeedMultiplier(float multiplier) override; void NotifySessionFullScreen(bool fullScreen) override; WSError NotifyTargetRotationInfo(OrientationInfo& Info) override; RotationChangeResult NotifyRotationChange(const RotationChangeInfo& rotationChangeInfo) override; diff --git a/window_scene/session/container/include/zidl/session_stage_stub.h b/window_scene/session/container/include/zidl/session_stage_stub.h index e76c785b86..79e0024968 100644 --- a/window_scene/session/container/include/zidl/session_stage_stub.h +++ b/window_scene/session/container/include/zidl/session_stage_stub.h @@ -80,7 +80,6 @@ private: int HandlePcAppInPadNormalClose(MessageParcel& data, MessageParcel& reply); int HandleNotifyCompatibleModePropertyChange(MessageParcel& data, MessageParcel& reply); int HandleSetUniqueVirtualPixelRatio(MessageParcel& data, MessageParcel& reply); - int HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply); int HandleNotifySessionFullScreen(MessageParcel& data, MessageParcel& reply); int HandleNotifyDumpInfo(MessageParcel& data, MessageParcel& reply); int HandleExtensionHostData(MessageParcel& data, MessageParcel& reply, MessageOption& option); diff --git a/window_scene/session/container/src/zidl/session_stage_proxy.cpp b/window_scene/session/container/src/zidl/session_stage_proxy.cpp index 73ee13514f..05c8b318be 100644 --- a/window_scene/session/container/src/zidl/session_stage_proxy.cpp +++ b/window_scene/session/container/src/zidl/session_stage_proxy.cpp @@ -1590,34 +1590,6 @@ void SessionStageProxy::SetUniqueVirtualPixelRatio(bool useUniqueDensity, float } } -void SessionStageProxy::ApplyAnimationSpeedMultiplier(float multiplier) -{ - sptr remote = Remote(); - if (remote == nullptr) { - TLOGE(WmsLogTag::WMS_ANIMATION, "remote is nullptr"); - return; - } - - MessageParcel data; - MessageParcel reply; - MessageOption option(MessageOption::TF_ASYNC); - if (!data.WriteInterfaceToken(GetDescriptor())) { - TLOGE(WmsLogTag::WMS_ANIMATION, "WriteInterfaceToken failed"); - return; - } - - if (!data.WriteFloat(multiplier)) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Write multiplier failed"); - return; - } - - if (remote->SendRequest(static_cast(SessionStageInterfaceCode::TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER), - data, reply, option) != ERR_NONE) { - TLOGE(WmsLogTag::WMS_ANIMATION, "SendRequest failed"); - return; - } -} - WSError SessionStageProxy::NotifyDumpInfo(const std::vector& params, std::vector& info) { sptr remote = Remote(); diff --git a/window_scene/session/container/src/zidl/session_stage_stub.cpp b/window_scene/session/container/src/zidl/session_stage_stub.cpp index e9b5b02694..c52c1d0969 100644 --- a/window_scene/session/container/src/zidl/session_stage_stub.cpp +++ b/window_scene/session/container/src/zidl/session_stage_stub.cpp @@ -236,8 +236,6 @@ int SessionStageStub::OnRemoteRequest(uint32_t code, MessageParcel& data, Messag return HandleUpdateGlobalDisplayRectFromServer(data, reply); case static_cast(SessionStageInterfaceCode::TRANS_ID_SEND_FB_ACTION_EVENT): return HandleSendFbActionEvent(data, reply); - case static_cast(SessionStageInterfaceCode::TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER): - return HandleApplyAnimationSpeedMultiplier(data, reply); default: WLOGFE("Failed to find function handler!"); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -865,18 +863,6 @@ int SessionStageStub::HandleSetUniqueVirtualPixelRatio(MessageParcel& data, Mess return ERR_NONE; } -int SessionStageStub::HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply) -{ - TLOGD(WmsLogTag::WMS_ANIMATION, "HandleApplyAnimationSpeedMultiplier!"); - float multiplier; - if (!data.ReadFloat(multiplier)) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Read multiplier failed."); - return ERR_INVALID_DATA; - } - ApplyAnimationSpeedMultiplier(multiplier); - return ERR_NONE; -} - int SessionStageStub::HandleSetSplitButtonVisible(MessageParcel& data, MessageParcel& reply) { TLOGD(WmsLogTag::WMS_LAYOUT, "in"); diff --git a/window_scene/session/host/include/scene_session.h b/window_scene/session/host/include/scene_session.h index 9b9e0fb5d7..9d327a9443 100644 --- a/window_scene/session/host/include/scene_session.h +++ b/window_scene/session/host/include/scene_session.h @@ -489,7 +489,6 @@ public: virtual void SetSkipSelfWhenShowOnVirtualScreen(bool isSkip); virtual void SetSkipEventOnCastPlus(bool isSkip); WMError SetUniqueDensityDpi(bool useUnique, float dpi); - WMErroe ApplyAnimationSpeedMultiplier(float multiplier); bool IsAnco() const override; void SetBlank(bool isAddBlank) override; diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 2000cddaf6..932968ca90 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -7368,21 +7368,6 @@ WMError SceneSession::SetUniqueDensityDpi(bool useUnique, float dpi) return WMError::WM_OK; } -WMError SceneSession::ApplyAnimationSpeedMultiplier(float multiplier) -{ - if (!IsSessionValid()) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Session is invalid"); - return WMError::WM_ERROR_INVALID_SESSION; - } - - if (!sessionStage_) { - TLOGE(WmsLogTag::WMS_ANIMATION, "sessionStage_ is nullptr"); - return WMError::WM_ERROR_NULLPTR; - } - sessionStage_->ApplyAnimationSpeedMultiplier(multiplier); - return WMError::WM_OK; -} - WMError SceneSession::SetSystemWindowEnableDrag(bool enableDrag) { if (!WindowHelper::IsSubWindow(GetWindowType()) && !WindowHelper::IsSystemWindow(GetWindowType())) { diff --git a/window_scene/session_manager/include/scene_session_manager.h b/window_scene/session_manager/include/scene_session_manager.h index b062880184..e9ba28d36e 100644 --- a/window_scene/session_manager/include/scene_session_manager.h +++ b/window_scene/session_manager/include/scene_session_manager.h @@ -742,7 +742,6 @@ public: bool IsMainWindowByPersistentId(int32_t persistentId); WMError MinimizeByWindowId(const std::vector& windowIds) override; void RegisterMinimizeByWindowIdCallback(MinimizeByWindowIdFunc&& func); - WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) override; void RegisterSceneSessionDestructCallback(NotifySceneSessionDestructFunc&& func); void RegisterTransferSessionToTargetScreenCallback(NotifyTransferSessionToTargetScreenFunc&& func); WMError NotifyTransferSessionToTargetScreen(const TransferSessionInfo& info); diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_interface.h b/window_scene/session_manager/include/zidl/scene_session_manager_interface.h index c11fbbc95f..4b9ffc7271 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_interface.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_interface.h @@ -154,7 +154,6 @@ public: TRANS_ID_REMOVE_SESSION_BLACK_LIST, TRANS_ID_GET_PIP_SWITCH_STATUS, TRANS_ID_RECOVER_WINDOW_PROPERTY_CHANGE_FLAG, - TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID, }; virtual WSError SetSessionLabel(const sptr& token, const std::string& label) = 0; diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h b/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h index 6d60abd7c3..7e97bb0fd9 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h @@ -163,7 +163,6 @@ public: WMError SetStartWindowBackgroundColor( const std::string& moduleName, const std::string& abilityName, uint32_t color, int32_t uid) override; WMError MinimizeByWindowId(const std::vector& windowIds) override; - WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) override; WMError SetForegroundWindowNum(uint32_t windowNum) override; WSError UseImplicitAnimation(int32_t hostWindowId, bool useImplicit) override; WMError RegisterWindowPropertyChangeAgent(WindowInfoKey windowInfoKey, uint32_t interestInfo, diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_stub.h b/window_scene/session_manager/include/zidl/scene_session_manager_stub.h index dd49349eab..99c01df2d2 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_stub.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_stub.h @@ -142,7 +142,6 @@ private: int ProcessRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option); int HandleMinimizeByWindowId(MessageParcel& data, MessageParcel& reply); - int HandleUpdateAnimationSpeedMultiplierForPid(MessageParcel& data, MessageParcel& reply); int HandleSetForegroundWindowNum(MessageParcel& data, MessageParcel& reply); int HandleUseImplicitAnimation(MessageParcel& data, MessageParcel& reply); int HandleCreateUIEffectController(MessageParcel& data, MessageParcel& reply); diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 07377681fc..c48cdaca15 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -16698,22 +16698,6 @@ void SceneSessionManager::RegisterMinimizeByWindowIdCallback(MinimizeByWindowIdF minimizeByWindowIdFunc_ = std::move(func); } -WMError SceneSessionManager::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) -{ - if (!SessionPermission::IsSystemServiceCalling()) { - TLOGE(WmsLogTag::WMS_ANIMATION, "The caller is not system service."); - return WMError::WM_ERROR_INVALID_PERMISSION; - } - - for (const auto& [_, session] : sceneSessionMap_) { - if (session && session->GetCallingPid() == pid && session->IsVisible()) { - session->ApplyAnimationSpeedMultiplier(multiplier); - return WMError::WM_OK; - } - } - return WMError::WM_OK; -} - const std::vector> SceneSessionManager::GetActiveSceneSessionCopy() { std::map> sceneSessionMapCopy; diff --git a/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp b/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp index 3803bb5d7d..cae8eb38fa 100644 --- a/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp +++ b/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp @@ -3570,41 +3570,6 @@ WMError SceneSessionManagerProxy::MinimizeByWindowId(const std::vector& return static_cast(reply.ReadInt32()); } -WMError SceneSessionManagerProxy::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) -{ - MessageParcel data; - MessageParcel reply; - MessageOption option; - if (!data.WriteInterfaceToken(GetDescriptor())) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Write interfaceToken failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - if (!data.WriteInt32(pid)) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Write pid failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - if (!data.WriteFloat(multiplier)) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Write multiplier failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - sptr remote = Remote(); - if (remote == nullptr) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Remote is null"); - return WMError::WM_ERROR_IPC_FAILED; - } - if (remote->SendRequest(static_cast(SceneSessionManagerMessage::TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID), - data, reply, option) != ERR_NONE) { - TLOGE(WmsLogTag::WMS_ANIMATION, "SendRequest failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - int32_t ret = 0; - if (!reply.ReadInt32(ret)) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Read ret failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - return static_cast(ret); -} - WMError SceneSessionManagerProxy::SetForegroundWindowNum(uint32_t windowNum) { MessageParcel data; diff --git a/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp b/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp index d41b369350..aab739f17e 100644 --- a/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp +++ b/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp @@ -258,8 +258,6 @@ int SceneSessionManagerStub::ProcessRemoteRequest(uint32_t code, MessageParcel& return HandleGetPiPSettingSwitchStatus(data, reply); case static_cast(SceneSessionManagerMessage::TRANS_ID_RECOVER_WINDOW_PROPERTY_CHANGE_FLAG): return HandleRecoverWindowPropertyChangeFlag(data, reply); - case static_cast(SceneSessionManageerMessage::TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID): - return HandleUpdateAnimationSpeedMultiplierForPid(data, reply); default: WLOGFE("Failed to find function handler!"); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -2230,26 +2228,6 @@ int SceneSessionManagerStub::HandleMinimizeByWindowId(MessageParcel& data, Messa return ERR_NONE; } -int SceneSessionManagerStub::HandleUpdateAnimationSpeedMultiplierForPid(MessageParcel& data, MessageParcel& reply) -{ - int32_t pid = 0; - float multiplier = 1.0f; - if (!data.ReadInt32(pid)) { - TLOGE(WmsLogTag::WMS_ANIMATION, "read pid failed"); - return ERR_INVALID_DATA; - } - if (!data.ReadFloat(multiplier)) { - TLOGE(WmsLogTag::WMS_ANIMATION, "read multiplier failed"); - return ERR_INVALID_DATA; - } - WMError errCode = UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - if (!reply.WriteInt32(static_cast(errCode))) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Write errCode failed."); - return ERR_INVALID_DATA; - } - return ERR_NONE; -} - int SceneSessionManagerStub::HandleSetForegroundWindowNum(MessageParcel& data, MessageParcel& reply) { uint32_t windowNum = 0; diff --git a/window_scene/test/mock/mock_session_stage.h b/window_scene/test/mock/mock_session_stage.h index e39816c4fb..08d8e34420 100644 --- a/window_scene/test/mock/mock_session_stage.h +++ b/window_scene/test/mock/mock_session_stage.h @@ -68,7 +68,6 @@ public: MOCK_METHOD2(NotifyDisplayMove, void(DisplayId from, DisplayId to)); MOCK_METHOD1(SwitchFreeMultiWindow, WSError(bool enable)); MOCK_METHOD2(SetUniqueVirtualPixelRatio, void(bool useUniqueDensity, float virtualPixelRatio)); - MOCK_METHOD1(ApplyAnimationSpeedMultiplier, void(float multiplier)); MOCK_METHOD0(PcAppInPadNormalClose, WSError(void)); MOCK_METHOD1(NotifyCompatibleModePropertyChange, WSError(const sptr property)); MOCK_METHOD1(NotifySessionFullScreen, void(bool fullScreen)); diff --git a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp index 3eaadfde8d..8b314386af 100644 --- a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp @@ -621,22 +621,6 @@ HWTEST_F(sceneSessionManagerProxyTest, SetStartWindowBackgroundColor, TestSize.L sceneSessionManagerProxy->SetStartWindowBackgroundColor("moduleName", "abilityName", 0xffffffff, 100)); } -/** - * @tc.name: UpdateAnimationSpeedMultiplierForPid - * @tc.desc: normal function - * @tc.type: FUNC - */ -HWTEST_F(sceneSessionManagerProxyTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) -{ - sptr iRemoteObjectMocker = sptr::MakeSptr(); - ASSERT_NE(iRemoteObjectMocker, nullptr); - sptr sceneSessionManagerProxy = - sptr::MakeSptr(iRemoteObjectMocker); - ASSERT_NE(sceneSessionManagerProxy, nullptr); - - EXPECT_EQ(WMError::WM_OK, sceneSessionManagerProxy->UpdateAnimationSpeedMultiplierForPid(10000, 2.0f)); -} - /** * @tc.name: RemoveExtensionWindowStageFromSCB * @tc.desc: normal function diff --git a/window_scene/test/unittest/scene_session_manager_stub_test.cpp b/window_scene/test/unittest/scene_session_manager_stub_test.cpp index d491545b28..4f901b1675 100644 --- a/window_scene/test/unittest/scene_session_manager_stub_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_stub_test.cpp @@ -2039,30 +2039,6 @@ HWTEST_F(SceneSessionManagerStubTest, HandleSetStartWindowBackgroundColor, TestS EXPECT_EQ(res, ERR_NONE); } -/** - * @tc.name: HandleUpdateAnimationSpeedMultiplierForPid - * @tc.desc: test HandleUpdateAnimationSpeedMultiplierForPid - * @tc.type: FUNC - */ -HWTEST_F(SceneSessionManagerStubTest, HandleUpdateAnimationSpeedMultiplierForPid, TestSize.Level1) -{ - ASSERT_NE(stub_, nullptr); - MessageParcel data; - MessageParcel reply; - - int res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); - EXPECT_EQ(res, ERR_INVALID_DATA); - - data.WriteInt32(10000); - res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); - EXPECT_EQ(res, ERR_INVALID_DATA); - - data.WriteInt32(10000); - data.WriteFloat(2.0f); - res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); - EXPECT_EQ(res, ERR_NONE); -} - /** * @tc.name: HandleNotifyScreenshotEvent * @tc.desc: test HandleNotifyScreenshotEvent diff --git a/window_scene/test/unittest/scene_session_manager_test7.cpp b/window_scene/test/unittest/scene_session_manager_test7.cpp index 95e349db00..2a9360f66b 100644 --- a/window_scene/test/unittest/scene_session_manager_test7.cpp +++ b/window_scene/test/unittest/scene_session_manager_test7.cpp @@ -2123,57 +2123,6 @@ HWTEST_F(SceneSessionManagerTest7, MinimizeByWindowId, TestSize.Level1) EXPECT_EQ(WMError::WM_ERROR_INVALID_PARAM, res); } -/** - * @tc.name: UpdateAnimationSpeedMultiplierForPid - * @tc.desc: test function : UpdateAnimationSpeedMultiplierForPid - * @tc.type: FUNC - */ -HWTEST_F(SceneSessionManagerTest7, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) -{ - ASSERT_NE(nullptr, ssm_); - - MockAccesstokenKit::MockIsSACalling(false); - - float multiplier = 2.0f; - int32_t pid = 1; - - auto result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - EXPECT_EQ(result, WMError::WM_ERROR_INVALID_PERMISSION); - - MockAccesstokenKit::MockIsSACalling(true); - SessionInfo info; - info.bundleName_ = "SceneSessionManagerTest7"; - info.abilityName_ = "UpdateAnimationSpeedMultiplierForPid"; - sptr sceneSession01 = sptr::MakeSptr(info, nullptr); - sptr sceneSession02 = sptr::MakeSptr(info, nullptr); - sptr sceneSession03 = sptr::MakeSptr(info, nullptr); - sptr sceneSession04 = sptr::MakeSptr(info, nullptr); - ASSERT_NE(sceneSession01, nullptr); - ASSERT_NE(sceneSession02, nullptr); - ASSERT_NE(sceneSession03, nullptr); - ASSERT_NE(sceneSession04, nullptr); - sceneSession01->isVisible_ = false; - sceneSession01->SetCallingPid(2); - ssm_->sceneSessionMap_.insert(std::make_pair(1, sceneSession01)); - result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - EXPECT_EQ(result, WMError::WM_OK); - sceneSession02->isVisible_ = true; - sceneSession02->SetCallingPid(3); - ssm_->sceneSessionMap_.insert(std::make_pair(2, sceneSession02)); - result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - EXPECT_EQ(result, WMError::WM_OK); - sceneSession03->isVisible_ = false; - sceneSession03->SetCallingPid(pid); - ssm_->sceneSessionMap_.insert(std::make_pair(3, sceneSession03)); - result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - EXPECT_EQ(result, WMError::WM_OK); - sceneSession04->isVisible_ = true; - sceneSession04->SetCallingPid(pid); - ssm_->sceneSessionMap_.insert(std::make_pair(4, sceneSession04)); - result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - EXPECT_EQ(result, WMError::WM_OK); -} - /** * @tc.name: SetForegroundWindowNum * @tc.desc: test function : SetForegroundWindowNum diff --git a/window_scene/test/unittest/scene_session_test5.cpp b/window_scene/test/unittest/scene_session_test5.cpp index cb1de5b0ad..36b9cc8d43 100644 --- a/window_scene/test/unittest/scene_session_test5.cpp +++ b/window_scene/test/unittest/scene_session_test5.cpp @@ -1518,31 +1518,6 @@ HWTEST_F(SceneSessionTest5, SetUniqueDensityDpi, TestSize.Level1) EXPECT_NE(nullptr, session->sessionStage_); } -/** - * @tc.name: ApplyAnimationSpeedMultiplier - * @tc.desc: ApplyAnimationSpeedMultiplier function01 - * @tc.type: FUNC - */ -HWTEST_F(SceneSessionTest5, ApplyAnimationSpeedMultiplier, TestSize.Level1) -{ - SessionInfo info; - info.abilityName_ = "ApplyAnimationSpeedMultiplier"; - info.bundleName_ = "ApplyAnimationSpeedMultiplier"; - sptr session = sptr::MakeSptr(info, nullptr); - EXPECT_NE(session, nullptr); - session->sessionStage_ = nullptr; - EXPECT_EQ(WMError::WM_ERROR_INVALID_SESSION, session->ApplyAnimationSpeedMultiplier(2.0f)); - session->sessionInfo_.isSystem_ = false; - session->state_ = SessionState::STATE_DISCONNECT; - EXPECT_EQ(WMError::WM_ERROR_INVALID_SESSION, session->ApplyAnimationSpeedMultiplier(2.0f)); - session->state_ = SessionState::STATE_CONNECT; - EXPECT_EQ(WMError::WM_ERROR_NULLPTR, session->ApplyAnimationSpeedMultiplier(2.0f)); - - session->sessionStage_ = sptr::MakeSptr(); - EXPECT_NE(nullptr, session->sessionStage_); - EXPECT_EQ(WMError::WM_OK, session->ApplyAnimationSpeedMultiplier(2.0f)); -} - /** * @tc.name: HandleActionUpdateWindowModeSupportType * @tc.desc: HandleActionUpdateWindowModeSupportType function01 diff --git a/window_scene/test/unittest/session_stage_proxy_test.cpp b/window_scene/test/unittest/session_stage_proxy_test.cpp index 9996f53965..270ff05d8c 100755 --- a/window_scene/test/unittest/session_stage_proxy_test.cpp +++ b/window_scene/test/unittest/session_stage_proxy_test.cpp @@ -286,18 +286,6 @@ HWTEST_F(SessionStageProxyTest, NotifyOccupiedAreaChangeInfo, TestSize.Level1) sessionStage_->NotifyOccupiedAreaChangeInfo(info, nullptr, {}, {}); } -/** - * @tc.name: ApplyAnimationSpeedMultiplier - * @tc.desc: test function : ApplyAnimationSpeedMultiplier - * @tc.type: FUNC - */ -HWTEST_F(SessionStageProxyTest, ApplyAnimationSpeedMultiplier, TestSize.Level1) -{ - float multiplier = 2.0f; - ASSERT_TRUE((sessionStage_ != nullptr)); - sessionStage_->ApplyAnimationSpeedMultiplier(multiplier); -} - /** * @tc.name: NotifyKeyboardAnimationCompleted * @tc.desc: test function : NotifyKeyboardAnimationCompleted diff --git a/window_scene/test/unittest/session_stage_stub_test.cpp b/window_scene/test/unittest/session_stage_stub_test.cpp index c98fa38eb2..dd2777cac6 100644 --- a/window_scene/test/unittest/session_stage_stub_test.cpp +++ b/window_scene/test/unittest/session_stage_stub_test.cpp @@ -811,21 +811,6 @@ HWTEST_F(SessionStageStubTest, HandleSetUniqueVirtualPixelRatio, TestSize.Level1 ASSERT_EQ(0, sessionStageStub_->OnRemoteRequest(code, data, reply, option)); } -/** - * @tc.name: HandleApplyAnimationSpeedMultiplier - * @tc.desc: test function : HandleApplyAnimationSpeedMultiplier - * @tc.type: FUNC - */ -HWTEST_F(SessionStageStubTest, HandleApplyAnimationSpeedMultiplier, TestSize.Level1) -{ - MessageParcel data; - MessageParcel reply; - ASSERT_TRUE(sessionStageStub_ != nullptr); - ASSERT_EQ(ERR_INVALID_DATA, sessionStageStub_->HandleApplyAnimationSpeedMultiplier(data, reply)); - data.WriteFloat(2.0f); - ASSERT_EQ(0, sessionStageStub_->HandleApplyAnimationSpeedMultiplier(data, reply)); -} - /** * @tc.name: HandleNotifySessionFullScreen * @tc.desc: test function : HandleNotifySessionFullScreen diff --git a/wm/include/window_adapter.h b/wm/include/window_adapter.h index 7f71801231..4f511464dd 100644 --- a/wm/include/window_adapter.h +++ b/wm/include/window_adapter.h @@ -148,7 +148,6 @@ public: virtual WMError NotifyWatchGestureConsumeResult(int32_t keyCode, bool isConsumed); virtual WMError NotifyWatchFocusActiveChange(bool isActive); virtual WMError MinimizeByWindowId(const std::vector& windowIds); - virtual WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier); virtual WMError SetForegroundWindowNum(uint32_t windowNum); virtual WMError SetStartWindowBackgroundColor( const std::string& moduleName, const std::string& abilityName, uint32_t color, int32_t uid); diff --git a/wm/include/window_session_impl.h b/wm/include/window_session_impl.h index 570aa29364..47924c35df 100644 --- a/wm/include/window_session_impl.h +++ b/wm/include/window_session_impl.h @@ -57,8 +57,6 @@ using EnableIfSame = typename std::enable_if, Ret>::type; const std::string SET_UICONTENT_TIMEOUT_LISTENER_TASK_NAME = "SetUIContentTimeoutListener"; constexpr int64_t SET_UICONTENT_TIMEOUT_TIME_MS = 4000; constexpr int64_t SET_UICONTENT_TIMEOUT_TIME_AFTER_FREEZE_MS = 5000; -static std::atomic animationSpeedMultiplier = 1.0f; -static std::atomic isEnableAnimationSpeedMultiplier = false; } struct WindowTitleVisibleFlags { @@ -223,7 +221,6 @@ public: const std::map& avoidAreas = {}) override; void UpdateDensity() override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; - void ApplyAnimationSpeedMultiplier(float multiplier) override; WSError UpdateOrientation() override; WSError UpdateDisplayId(uint64_t displayId) override; WSError UpdateFocus(bool focus) override; diff --git a/wm/src/window_adapter.cpp b/wm/src/window_adapter.cpp index 7e88040ff7..7af0715572 100644 --- a/wm/src/window_adapter.cpp +++ b/wm/src/window_adapter.cpp @@ -1284,14 +1284,6 @@ WMError WindowAdapter::MinimizeByWindowId(const std::vector& windowIds) return wmsProxy->MinimizeByWindowId(windowIds); } -WMError WindowAdapter::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) -{ - INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR); - auto wmsProxy = GetWindowManagerServiceProxy(); - CHECK_PROXY_RETURN_ERROR_IF_NULL(wmsProxy, WMError::WM_ERROR_SAMGR); - return wmsProxy->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); -} - WMError WindowAdapter::SetForegroundWindowNum(uint32_t windowNum) { INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR); diff --git a/wm/src/window_manager.cpp b/wm/src/window_manager.cpp index 1f68e49c31..e37e59d04f 100644 --- a/wm/src/window_manager.cpp +++ b/wm/src/window_manager.cpp @@ -2206,15 +2206,6 @@ WMError WindowManager::MinimizeByWindowId(const std::vector& windowIds) return ret; } -WMError WindowManager::UpdateAnimationSpeedMultiplerForPid(pid_t pid, float multiplier) -{ - WMError ret = SingletonContainer::Get().UpdateAnimationSpeedMultiplerForPid(pid, multiplier); - if (ret != WMError::WM_OK) { - TLOGE(WmsLogTag::WMS_ANIMATION, "failed"); - } - return ret; -} - WMError WindowManager::SetForegroundWindowNum(uint32_t windowNum) { WMError ret = SingletonContainer::Get().SetForegroundWindowNum(windowNum); diff --git a/wm/src/window_scene_session_impl.cpp b/wm/src/window_scene_session_impl.cpp index bd57557490..ae00ed918b 100644 --- a/wm/src/window_scene_session_impl.cpp +++ b/wm/src/window_scene_session_impl.cpp @@ -662,13 +662,6 @@ WMError WindowSceneSessionImpl::Create(const std::shared_ptrGetImplicitAnimator() : nullptr; - if (implicitAnimator != nullptr) { - implicitAnimator->ApplyAnimationSpeedMultiplier(animationSpeedMultiplier.load()); - } - } TLOGD(WmsLogTag::WMS_LIFE, "Window Create success [name:%{public}s, id:%{public}d], state:%{public}u, " "mode:%{public}u, enableDefaultDensity:%{public}d, displayId:%{public}" PRIu64, property_->GetWindowName().c_str(), property_->GetPersistentId(), state_, GetWindowMode(), diff --git a/wm/src/window_session_impl.cpp b/wm/src/window_session_impl.cpp index 2ca28e6d36..be49ecbbda 100644 --- a/wm/src/window_session_impl.cpp +++ b/wm/src/window_session_impl.cpp @@ -1483,33 +1483,6 @@ void WindowSessionImpl::SetUniqueVirtualPixelRatio(bool useUniqueDensity, float } } -void WindowSessionImpl::ApplyAnimationSpeedMultiplier(float multiplier) -{ - const char* const where = __func__; - auto task = [weakThis = wptr(this), multiplier, where, this] { - auto window = weakThis.promote(); - if (window == nullptr) { - TLOGW(WmsLogTag::WMS_ANIMATION, "%{public}s: window is nullptr", where); - return; - } - for (const auto& [_, pair] : windowSessionMap_) { - auto& WindowSession = pair.second; - if (WindowSession) { - auto rsUIContext = WindowSession->GetRSUIContext(); - auto implicitAnimator = rsUIContext ? rsUIContext->GetImplicitAnimator() : nullptr; - if (implicitAnimator == nullptr) { - TLOGE(WmsLogTag::WMS_ANIMATION, "Failed to open implicit animtion"); - continue; - } - implicitAnimator->ApplyAnimationSpeedMultiplier(multiplier); - } - } - isEnableAnimationSpeedMultiplier.store(!FoldScreenStateInternel::FloatEqualAbs(multiplier, 1.0f)); - animationSpeedMultiplier.store(multiplier); - }; - handler_->PostTask(task, where, 0, AppExecFwk::EventQueue::Priority::HIGH); -} - void WindowSessionImpl::CopyUniqueDensityParameter(sptr parentWindow) { if (parentWindow) { diff --git a/wm/test/unittest/window_adapter_test.cpp b/wm/test/unittest/window_adapter_test.cpp index 26a7e11edb..9196a00c87 100644 --- a/wm/test/unittest/window_adapter_test.cpp +++ b/wm/test/unittest/window_adapter_test.cpp @@ -1104,18 +1104,6 @@ HWTEST_F(WindowAdapterTest, MinimizeByWindowId, TestSize.Level1) ASSERT_EQ(ret, true); } -/** - * @tc.name: UpdateAnimationSpeedMultiplierForPid - * @tc.desc: WindowAdapter/UpdateAnimationSpeedMultiplierForPid - * @tc.type: FUNC - */ -HWTEST_F(WindowAdapterTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) -{ - WindowAdapter windowAdapter; - auto err = windowAdapter.UpdateAnimationSpeedMultiplierForPid(10000, 2.0f); - ASSERT_EQ(WMError::WM_OK, err); -} - /** * @tc.name: ListWindowInfo01 * @tc.desc: WindowAdapter/ListWindowInfo diff --git a/wm/test/unittest/window_manager_test.cpp b/wm/test/unittest/window_manager_test.cpp index 28a07edceb..12e7f6e3d9 100644 --- a/wm/test/unittest/window_manager_test.cpp +++ b/wm/test/unittest/window_manager_test.cpp @@ -1791,23 +1791,6 @@ HWTEST_F(WindowManagerTest, MinimizeByWindowId, TestSize.Level1) ASSERT_EQ(WMError::WM_OK, ret_2); } -/** - * @tc.name: UpdateAnimationSpeedMultiplierForPid - * @tc.desc: Check UpdateAnimationSpeedMultiplierForPid - * @tc.type: FUNC - */ -HWTEST_F(WindowManagerTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) -{ - auto& windowManager = WindowManager::GetInstance(); - pid_t pid = 15234; - float multiplier = 2.0f; - WMError ret_1 = windowManager.UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - ASSERT_EQ(WMError::WM_OK, ret_1); - multiplier = 1.0f; - WMError ret_2 = windowManager.UpdateAnimationSpeedMultiplierForPid(pid, multiplier); - ASSERT_EQ(WMError::WM_OK, ret_2); -} - /** * @tc.name: ProcessRegisterWindowInfoChangeCallback01 * @tc.desc: Check ProcessRegisterWindowInfoChangeCallback diff --git a/wm/test/unittest/window_session_impl_test.cpp b/wm/test/unittest/window_session_impl_test.cpp index 435779aa9e..151e4d3b3d 100644 --- a/wm/test/unittest/window_session_impl_test.cpp +++ b/wm/test/unittest/window_session_impl_test.cpp @@ -1958,22 +1958,6 @@ HWTEST_F(WindowSessionImplTest, SetUniqueVirtualPixelRatio, TestSize.Level1) window->SetUniqueVirtualPixelRatio(false, 3.25f); } -/** - * @tc.name: ApplyAnimationSpeedMultiplier - * @tc.desc: ApplyAnimationSpeedMultiplier - * @tc.type: FUNC - */ -HWTEST_F(WindowSessionImplTest, ApplyAnimationSpeedMultiplier, TestSize.Level1) -{ - sptr option = new (std::nothrow) WindowOption(); - ASSERT_NE(option, nullptr); - option->SetWindowName("ApplyAnimationSpeedMultiplier"); - sptr window = new (std::nothrow) WindowSessionImpl(option); - ASSERT_NE(window, nullptr); - window->ApplyAnimationSpeedMultiplier(1.0f); - window->ApplyAnimationSpeedMultiplier(2.0f); -} - /** * @tc.name: EnableDrag * @tc.desc: EnableDrag Test diff --git a/wmserver/include/zidl/window_manager_interface.h b/wmserver/include/zidl/window_manager_interface.h index ac900dc362..b3ae63912f 100644 --- a/wmserver/include/zidl/window_manager_interface.h +++ b/wmserver/include/zidl/window_manager_interface.h @@ -311,7 +311,6 @@ public: virtual WMError HasFloatingWindowForeground(const sptr& abilityToken, bool& hasOrNot) { return WMError::WM_OK; } virtual WMError MinimizeByWindowId(const std::vector& windowIds) { return WMError::WM_OK; } - virtual WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) { return WMError::WM_OK; } virtual WMError SetForegroundWindowNum(uint32_t windowNum) { return WMError::WM_OK; } virtual WSError UseImplicitAnimation(int32_t hostWindowId, bool useImplicit) { return WSError::WS_OK; } virtual WMError AnimateTo(int32_t windowId, const WindowAnimationProperty& animationProperty, -- Gitee From 39e2312748a1a9d47fd22075401e9eca30906314 Mon Sep 17 00:00:00 2001 From: fateddd Date: Wed, 10 Sep 2025 15:53:44 +0800 Subject: [PATCH 13/15] revert Signed-off-by: fateddd --- window_scene/session/container/include/zidl/session_stage_stub.h | 1 - 1 file changed, 1 deletion(-) diff --git a/window_scene/session/container/include/zidl/session_stage_stub.h b/window_scene/session/container/include/zidl/session_stage_stub.h index e76c785b86..79e0024968 100644 --- a/window_scene/session/container/include/zidl/session_stage_stub.h +++ b/window_scene/session/container/include/zidl/session_stage_stub.h @@ -80,7 +80,6 @@ private: int HandlePcAppInPadNormalClose(MessageParcel& data, MessageParcel& reply); int HandleNotifyCompatibleModePropertyChange(MessageParcel& data, MessageParcel& reply); int HandleSetUniqueVirtualPixelRatio(MessageParcel& data, MessageParcel& reply); - int HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply); int HandleNotifySessionFullScreen(MessageParcel& data, MessageParcel& reply); int HandleNotifyDumpInfo(MessageParcel& data, MessageParcel& reply); int HandleExtensionHostData(MessageParcel& data, MessageParcel& reply, MessageOption& option); -- Gitee From e07aaa9e74d3466fa5d0d2e16337cac5508350a0 Mon Sep 17 00:00:00 2001 From: fateddd Date: Wed, 10 Sep 2025 15:54:31 +0800 Subject: [PATCH 14/15] animation amend Signed-off-by: fateddd --- interfaces/innerkits/wm/window_manager.h | 9 ++++ .../include/zidl/session_stage_interface.h | 1 + .../zidl/session_stage_ipc_interface_code.h | 2 + .../include/zidl/session_stage_proxy.h | 1 + .../include/zidl/session_stage_stub.h | 1 + .../src/zidl/session_stage_proxy.cpp | 28 ++++++++++ .../container/src/zidl/session_stage_stub.cpp | 14 +++++ .../session/host/include/scene_session.h | 1 + .../session/host/src/scene_session.cpp | 15 ++++++ .../include/scene_session_manager.h | 1 + .../zidl/scene_session_manager_interface.h | 1 + .../zidl/scene_session_manager_proxy.h | 1 + .../include/zidl/scene_session_manager_stub.h | 1 + .../src/scene_session_manager.cpp | 16 ++++++ .../src/zidl/scene_session_manager_proxy.cpp | 35 +++++++++++++ .../src/zidl/scene_session_manager_stub.cpp | 22 ++++++++ window_scene/test/mock/mock_session_stage.h | 1 + .../scene_session_manager_proxy_test.cpp | 16 ++++++ .../scene_session_manager_stub_test.cpp | 24 +++++++++ .../unittest/scene_session_manager_test7.cpp | 51 +++++++++++++++++++ .../test/unittest/scene_session_test5.cpp | 25 +++++++++ .../unittest/session_stage_proxy_test.cpp | 12 +++++ .../test/unittest/session_stage_stub_test.cpp | 15 ++++++ wm/include/window_adapter.h | 1 + wm/include/window_session_impl.h | 3 ++ wm/src/window_adapter.cpp | 8 +++ wm/src/window_manager.cpp | 9 ++++ wm/src/window_scene_session_impl.cpp | 7 +++ wm/src/window_session_impl.cpp | 27 ++++++++++ wm/test/unittest/window_adapter_test.cpp | 12 +++++ wm/test/unittest/window_manager_test.cpp | 17 +++++++ wm/test/unittest/window_session_impl_test.cpp | 16 ++++++ .../include/zidl/window_manager_interface.h | 1 + 33 files changed, 394 insertions(+) diff --git a/interfaces/innerkits/wm/window_manager.h b/interfaces/innerkits/wm/window_manager.h index 1db684ff1f..b29999c253 100644 --- a/interfaces/innerkits/wm/window_manager.h +++ b/interfaces/innerkits/wm/window_manager.h @@ -1254,6 +1254,15 @@ public: */ WMError MinimizeByWindowId(const std::vector& windowIds); + /** + * @brief Set the animation speed multiplier for a specific process. + * + * @param pid process id. + * @param multiplier The animation speed multiplier. + * @return WM_OK means set success, others means set failed. + */ + WMError UpdateAnimationSpeedMultiplerForPid(pid_t pid, float multiplier); + /** * @brief Set foreground window number. Only main window. Only support freeMultiWindow. * diff --git a/window_scene/session/container/include/zidl/session_stage_interface.h b/window_scene/session/container/include/zidl/session_stage_interface.h index c08cbf3016..3f296bbaaa 100644 --- a/window_scene/session/container/include/zidl/session_stage_interface.h +++ b/window_scene/session/container/include/zidl/session_stage_interface.h @@ -206,6 +206,7 @@ public: return WSError::WS_OK; } virtual void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) = 0; + virtual void ApplyAnimationSpeedMultiplier(float multiplier) = 0; virtual void NotifySessionFullScreen(bool fullScreen) {} // **Non** IPC interface diff --git a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h index 99cacaf6c4..4e906ec676 100644 --- a/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h +++ b/window_scene/session/container/include/zidl/session_stage_ipc_interface_code.h @@ -97,6 +97,8 @@ enum class SessionStageInterfaceCode { TRANS_ID_UPDATE_GLOBAL_DISPLAY_RECT, // Floating ball TRANS_ID_SEND_FB_ACTION_EVENT, + + TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER, }; } // namespace Rosen } // namespace OHOS diff --git a/window_scene/session/container/include/zidl/session_stage_proxy.h b/window_scene/session/container/include/zidl/session_stage_proxy.h index 700cc196d9..2ce7923c17 100644 --- a/window_scene/session/container/include/zidl/session_stage_proxy.h +++ b/window_scene/session/container/include/zidl/session_stage_proxy.h @@ -80,6 +80,7 @@ public: WSError PcAppInPadNormalClose() override; WSError NotifyCompatibleModePropertyChange(const sptr property) override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; + void ApplyAnimationSpeedMultiplier(float multiplier) override; void NotifySessionFullScreen(bool fullScreen) override; WSError NotifyTargetRotationInfo(OrientationInfo& Info) override; RotationChangeResult NotifyRotationChange(const RotationChangeInfo& rotationChangeInfo) override; diff --git a/window_scene/session/container/include/zidl/session_stage_stub.h b/window_scene/session/container/include/zidl/session_stage_stub.h index 79e0024968..e76c785b86 100644 --- a/window_scene/session/container/include/zidl/session_stage_stub.h +++ b/window_scene/session/container/include/zidl/session_stage_stub.h @@ -80,6 +80,7 @@ private: int HandlePcAppInPadNormalClose(MessageParcel& data, MessageParcel& reply); int HandleNotifyCompatibleModePropertyChange(MessageParcel& data, MessageParcel& reply); int HandleSetUniqueVirtualPixelRatio(MessageParcel& data, MessageParcel& reply); + int HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply); int HandleNotifySessionFullScreen(MessageParcel& data, MessageParcel& reply); int HandleNotifyDumpInfo(MessageParcel& data, MessageParcel& reply); int HandleExtensionHostData(MessageParcel& data, MessageParcel& reply, MessageOption& option); diff --git a/window_scene/session/container/src/zidl/session_stage_proxy.cpp b/window_scene/session/container/src/zidl/session_stage_proxy.cpp index 05c8b318be..73ee13514f 100644 --- a/window_scene/session/container/src/zidl/session_stage_proxy.cpp +++ b/window_scene/session/container/src/zidl/session_stage_proxy.cpp @@ -1590,6 +1590,34 @@ void SessionStageProxy::SetUniqueVirtualPixelRatio(bool useUniqueDensity, float } } +void SessionStageProxy::ApplyAnimationSpeedMultiplier(float multiplier) +{ + sptr remote = Remote(); + if (remote == nullptr) { + TLOGE(WmsLogTag::WMS_ANIMATION, "remote is nullptr"); + return; + } + + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_ASYNC); + if (!data.WriteInterfaceToken(GetDescriptor())) { + TLOGE(WmsLogTag::WMS_ANIMATION, "WriteInterfaceToken failed"); + return; + } + + if (!data.WriteFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write multiplier failed"); + return; + } + + if (remote->SendRequest(static_cast(SessionStageInterfaceCode::TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER), + data, reply, option) != ERR_NONE) { + TLOGE(WmsLogTag::WMS_ANIMATION, "SendRequest failed"); + return; + } +} + WSError SessionStageProxy::NotifyDumpInfo(const std::vector& params, std::vector& info) { sptr remote = Remote(); diff --git a/window_scene/session/container/src/zidl/session_stage_stub.cpp b/window_scene/session/container/src/zidl/session_stage_stub.cpp index c52c1d0969..e9b5b02694 100644 --- a/window_scene/session/container/src/zidl/session_stage_stub.cpp +++ b/window_scene/session/container/src/zidl/session_stage_stub.cpp @@ -236,6 +236,8 @@ int SessionStageStub::OnRemoteRequest(uint32_t code, MessageParcel& data, Messag return HandleUpdateGlobalDisplayRectFromServer(data, reply); case static_cast(SessionStageInterfaceCode::TRANS_ID_SEND_FB_ACTION_EVENT): return HandleSendFbActionEvent(data, reply); + case static_cast(SessionStageInterfaceCode::TRANS_ID_APPLY_ANIMATION_SPEED_MULTIPLIER): + return HandleApplyAnimationSpeedMultiplier(data, reply); default: WLOGFE("Failed to find function handler!"); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -863,6 +865,18 @@ int SessionStageStub::HandleSetUniqueVirtualPixelRatio(MessageParcel& data, Mess return ERR_NONE; } +int SessionStageStub::HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply) +{ + TLOGD(WmsLogTag::WMS_ANIMATION, "HandleApplyAnimationSpeedMultiplier!"); + float multiplier; + if (!data.ReadFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Read multiplier failed."); + return ERR_INVALID_DATA; + } + ApplyAnimationSpeedMultiplier(multiplier); + return ERR_NONE; +} + int SessionStageStub::HandleSetSplitButtonVisible(MessageParcel& data, MessageParcel& reply) { TLOGD(WmsLogTag::WMS_LAYOUT, "in"); diff --git a/window_scene/session/host/include/scene_session.h b/window_scene/session/host/include/scene_session.h index 9d327a9443..9b9e0fb5d7 100644 --- a/window_scene/session/host/include/scene_session.h +++ b/window_scene/session/host/include/scene_session.h @@ -489,6 +489,7 @@ public: virtual void SetSkipSelfWhenShowOnVirtualScreen(bool isSkip); virtual void SetSkipEventOnCastPlus(bool isSkip); WMError SetUniqueDensityDpi(bool useUnique, float dpi); + WMErroe ApplyAnimationSpeedMultiplier(float multiplier); bool IsAnco() const override; void SetBlank(bool isAddBlank) override; diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 932968ca90..2000cddaf6 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -7368,6 +7368,21 @@ WMError SceneSession::SetUniqueDensityDpi(bool useUnique, float dpi) return WMError::WM_OK; } +WMError SceneSession::ApplyAnimationSpeedMultiplier(float multiplier) +{ + if (!IsSessionValid()) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Session is invalid"); + return WMError::WM_ERROR_INVALID_SESSION; + } + + if (!sessionStage_) { + TLOGE(WmsLogTag::WMS_ANIMATION, "sessionStage_ is nullptr"); + return WMError::WM_ERROR_NULLPTR; + } + sessionStage_->ApplyAnimationSpeedMultiplier(multiplier); + return WMError::WM_OK; +} + WMError SceneSession::SetSystemWindowEnableDrag(bool enableDrag) { if (!WindowHelper::IsSubWindow(GetWindowType()) && !WindowHelper::IsSystemWindow(GetWindowType())) { diff --git a/window_scene/session_manager/include/scene_session_manager.h b/window_scene/session_manager/include/scene_session_manager.h index e9ba28d36e..b062880184 100644 --- a/window_scene/session_manager/include/scene_session_manager.h +++ b/window_scene/session_manager/include/scene_session_manager.h @@ -742,6 +742,7 @@ public: bool IsMainWindowByPersistentId(int32_t persistentId); WMError MinimizeByWindowId(const std::vector& windowIds) override; void RegisterMinimizeByWindowIdCallback(MinimizeByWindowIdFunc&& func); + WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) override; void RegisterSceneSessionDestructCallback(NotifySceneSessionDestructFunc&& func); void RegisterTransferSessionToTargetScreenCallback(NotifyTransferSessionToTargetScreenFunc&& func); WMError NotifyTransferSessionToTargetScreen(const TransferSessionInfo& info); diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_interface.h b/window_scene/session_manager/include/zidl/scene_session_manager_interface.h index 4b9ffc7271..c11fbbc95f 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_interface.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_interface.h @@ -154,6 +154,7 @@ public: TRANS_ID_REMOVE_SESSION_BLACK_LIST, TRANS_ID_GET_PIP_SWITCH_STATUS, TRANS_ID_RECOVER_WINDOW_PROPERTY_CHANGE_FLAG, + TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID, }; virtual WSError SetSessionLabel(const sptr& token, const std::string& label) = 0; diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h b/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h index 7e97bb0fd9..6d60abd7c3 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_proxy.h @@ -163,6 +163,7 @@ public: WMError SetStartWindowBackgroundColor( const std::string& moduleName, const std::string& abilityName, uint32_t color, int32_t uid) override; WMError MinimizeByWindowId(const std::vector& windowIds) override; + WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) override; WMError SetForegroundWindowNum(uint32_t windowNum) override; WSError UseImplicitAnimation(int32_t hostWindowId, bool useImplicit) override; WMError RegisterWindowPropertyChangeAgent(WindowInfoKey windowInfoKey, uint32_t interestInfo, diff --git a/window_scene/session_manager/include/zidl/scene_session_manager_stub.h b/window_scene/session_manager/include/zidl/scene_session_manager_stub.h index 99c01df2d2..dd49349eab 100644 --- a/window_scene/session_manager/include/zidl/scene_session_manager_stub.h +++ b/window_scene/session_manager/include/zidl/scene_session_manager_stub.h @@ -142,6 +142,7 @@ private: int ProcessRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option); int HandleMinimizeByWindowId(MessageParcel& data, MessageParcel& reply); + int HandleUpdateAnimationSpeedMultiplierForPid(MessageParcel& data, MessageParcel& reply); int HandleSetForegroundWindowNum(MessageParcel& data, MessageParcel& reply); int HandleUseImplicitAnimation(MessageParcel& data, MessageParcel& reply); int HandleCreateUIEffectController(MessageParcel& data, MessageParcel& reply); diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index c48cdaca15..07377681fc 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -16698,6 +16698,22 @@ void SceneSessionManager::RegisterMinimizeByWindowIdCallback(MinimizeByWindowIdF minimizeByWindowIdFunc_ = std::move(func); } +WMError SceneSessionManager::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) +{ + if (!SessionPermission::IsSystemServiceCalling()) { + TLOGE(WmsLogTag::WMS_ANIMATION, "The caller is not system service."); + return WMError::WM_ERROR_INVALID_PERMISSION; + } + + for (const auto& [_, session] : sceneSessionMap_) { + if (session && session->GetCallingPid() == pid && session->IsVisible()) { + session->ApplyAnimationSpeedMultiplier(multiplier); + return WMError::WM_OK; + } + } + return WMError::WM_OK; +} + const std::vector> SceneSessionManager::GetActiveSceneSessionCopy() { std::map> sceneSessionMapCopy; diff --git a/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp b/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp index cae8eb38fa..3803bb5d7d 100644 --- a/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp +++ b/window_scene/session_manager/src/zidl/scene_session_manager_proxy.cpp @@ -3570,6 +3570,41 @@ WMError SceneSessionManagerProxy::MinimizeByWindowId(const std::vector& return static_cast(reply.ReadInt32()); } +WMError SceneSessionManagerProxy::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option; + if (!data.WriteInterfaceToken(GetDescriptor())) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write interfaceToken failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + if (!data.WriteInt32(pid)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write pid failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + if (!data.WriteFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write multiplier failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + sptr remote = Remote(); + if (remote == nullptr) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Remote is null"); + return WMError::WM_ERROR_IPC_FAILED; + } + if (remote->SendRequest(static_cast(SceneSessionManagerMessage::TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID), + data, reply, option) != ERR_NONE) { + TLOGE(WmsLogTag::WMS_ANIMATION, "SendRequest failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + int32_t ret = 0; + if (!reply.ReadInt32(ret)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Read ret failed"); + return WMError::WM_ERROR_IPC_FAILED; + } + return static_cast(ret); +} + WMError SceneSessionManagerProxy::SetForegroundWindowNum(uint32_t windowNum) { MessageParcel data; diff --git a/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp b/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp index aab739f17e..d41b369350 100644 --- a/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp +++ b/window_scene/session_manager/src/zidl/scene_session_manager_stub.cpp @@ -258,6 +258,8 @@ int SceneSessionManagerStub::ProcessRemoteRequest(uint32_t code, MessageParcel& return HandleGetPiPSettingSwitchStatus(data, reply); case static_cast(SceneSessionManagerMessage::TRANS_ID_RECOVER_WINDOW_PROPERTY_CHANGE_FLAG): return HandleRecoverWindowPropertyChangeFlag(data, reply); + case static_cast(SceneSessionManageerMessage::TRANS_ID_UPDATE_ANIMATION_SPEED_MULTIPLIER_FOR_PID): + return HandleUpdateAnimationSpeedMultiplierForPid(data, reply); default: WLOGFE("Failed to find function handler!"); return IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -2228,6 +2230,26 @@ int SceneSessionManagerStub::HandleMinimizeByWindowId(MessageParcel& data, Messa return ERR_NONE; } +int SceneSessionManagerStub::HandleUpdateAnimationSpeedMultiplierForPid(MessageParcel& data, MessageParcel& reply) +{ + int32_t pid = 0; + float multiplier = 1.0f; + if (!data.ReadInt32(pid)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "read pid failed"); + return ERR_INVALID_DATA; + } + if (!data.ReadFloat(multiplier)) { + TLOGE(WmsLogTag::WMS_ANIMATION, "read multiplier failed"); + return ERR_INVALID_DATA; + } + WMError errCode = UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + if (!reply.WriteInt32(static_cast(errCode))) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Write errCode failed."); + return ERR_INVALID_DATA; + } + return ERR_NONE; +} + int SceneSessionManagerStub::HandleSetForegroundWindowNum(MessageParcel& data, MessageParcel& reply) { uint32_t windowNum = 0; diff --git a/window_scene/test/mock/mock_session_stage.h b/window_scene/test/mock/mock_session_stage.h index 08d8e34420..e39816c4fb 100644 --- a/window_scene/test/mock/mock_session_stage.h +++ b/window_scene/test/mock/mock_session_stage.h @@ -68,6 +68,7 @@ public: MOCK_METHOD2(NotifyDisplayMove, void(DisplayId from, DisplayId to)); MOCK_METHOD1(SwitchFreeMultiWindow, WSError(bool enable)); MOCK_METHOD2(SetUniqueVirtualPixelRatio, void(bool useUniqueDensity, float virtualPixelRatio)); + MOCK_METHOD1(ApplyAnimationSpeedMultiplier, void(float multiplier)); MOCK_METHOD0(PcAppInPadNormalClose, WSError(void)); MOCK_METHOD1(NotifyCompatibleModePropertyChange, WSError(const sptr property)); MOCK_METHOD1(NotifySessionFullScreen, void(bool fullScreen)); diff --git a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp index 8b314386af..3eaadfde8d 100644 --- a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp @@ -621,6 +621,22 @@ HWTEST_F(sceneSessionManagerProxyTest, SetStartWindowBackgroundColor, TestSize.L sceneSessionManagerProxy->SetStartWindowBackgroundColor("moduleName", "abilityName", 0xffffffff, 100)); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: normal function + * @tc.type: FUNC + */ +HWTEST_F(sceneSessionManagerProxyTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + sptr iRemoteObjectMocker = sptr::MakeSptr(); + ASSERT_NE(iRemoteObjectMocker, nullptr); + sptr sceneSessionManagerProxy = + sptr::MakeSptr(iRemoteObjectMocker); + ASSERT_NE(sceneSessionManagerProxy, nullptr); + + EXPECT_EQ(WMError::WM_OK, sceneSessionManagerProxy->UpdateAnimationSpeedMultiplierForPid(10000, 2.0f)); +} + /** * @tc.name: RemoveExtensionWindowStageFromSCB * @tc.desc: normal function diff --git a/window_scene/test/unittest/scene_session_manager_stub_test.cpp b/window_scene/test/unittest/scene_session_manager_stub_test.cpp index 4f901b1675..d491545b28 100644 --- a/window_scene/test/unittest/scene_session_manager_stub_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_stub_test.cpp @@ -2039,6 +2039,30 @@ HWTEST_F(SceneSessionManagerStubTest, HandleSetStartWindowBackgroundColor, TestS EXPECT_EQ(res, ERR_NONE); } +/** + * @tc.name: HandleUpdateAnimationSpeedMultiplierForPid + * @tc.desc: test HandleUpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionManagerStubTest, HandleUpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + ASSERT_NE(stub_, nullptr); + MessageParcel data; + MessageParcel reply; + + int res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); + EXPECT_EQ(res, ERR_INVALID_DATA); + + data.WriteInt32(10000); + res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); + EXPECT_EQ(res, ERR_INVALID_DATA); + + data.WriteInt32(10000); + data.WriteFloat(2.0f); + res = stub_->HandleUpdateAnimationSpeedMultiplierForPid(data, reply); + EXPECT_EQ(res, ERR_NONE); +} + /** * @tc.name: HandleNotifyScreenshotEvent * @tc.desc: test HandleNotifyScreenshotEvent diff --git a/window_scene/test/unittest/scene_session_manager_test7.cpp b/window_scene/test/unittest/scene_session_manager_test7.cpp index 2a9360f66b..95e349db00 100644 --- a/window_scene/test/unittest/scene_session_manager_test7.cpp +++ b/window_scene/test/unittest/scene_session_manager_test7.cpp @@ -2123,6 +2123,57 @@ HWTEST_F(SceneSessionManagerTest7, MinimizeByWindowId, TestSize.Level1) EXPECT_EQ(WMError::WM_ERROR_INVALID_PARAM, res); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: test function : UpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionManagerTest7, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + ASSERT_NE(nullptr, ssm_); + + MockAccesstokenKit::MockIsSACalling(false); + + float multiplier = 2.0f; + int32_t pid = 1; + + auto result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_ERROR_INVALID_PERMISSION); + + MockAccesstokenKit::MockIsSACalling(true); + SessionInfo info; + info.bundleName_ = "SceneSessionManagerTest7"; + info.abilityName_ = "UpdateAnimationSpeedMultiplierForPid"; + sptr sceneSession01 = sptr::MakeSptr(info, nullptr); + sptr sceneSession02 = sptr::MakeSptr(info, nullptr); + sptr sceneSession03 = sptr::MakeSptr(info, nullptr); + sptr sceneSession04 = sptr::MakeSptr(info, nullptr); + ASSERT_NE(sceneSession01, nullptr); + ASSERT_NE(sceneSession02, nullptr); + ASSERT_NE(sceneSession03, nullptr); + ASSERT_NE(sceneSession04, nullptr); + sceneSession01->isVisible_ = false; + sceneSession01->SetCallingPid(2); + ssm_->sceneSessionMap_.insert(std::make_pair(1, sceneSession01)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); + sceneSession02->isVisible_ = true; + sceneSession02->SetCallingPid(3); + ssm_->sceneSessionMap_.insert(std::make_pair(2, sceneSession02)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); + sceneSession03->isVisible_ = false; + sceneSession03->SetCallingPid(pid); + ssm_->sceneSessionMap_.insert(std::make_pair(3, sceneSession03)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); + sceneSession04->isVisible_ = true; + sceneSession04->SetCallingPid(pid); + ssm_->sceneSessionMap_.insert(std::make_pair(4, sceneSession04)); + result = ssm_->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + EXPECT_EQ(result, WMError::WM_OK); +} + /** * @tc.name: SetForegroundWindowNum * @tc.desc: test function : SetForegroundWindowNum diff --git a/window_scene/test/unittest/scene_session_test5.cpp b/window_scene/test/unittest/scene_session_test5.cpp index 36b9cc8d43..cb1de5b0ad 100644 --- a/window_scene/test/unittest/scene_session_test5.cpp +++ b/window_scene/test/unittest/scene_session_test5.cpp @@ -1518,6 +1518,31 @@ HWTEST_F(SceneSessionTest5, SetUniqueDensityDpi, TestSize.Level1) EXPECT_NE(nullptr, session->sessionStage_); } +/** + * @tc.name: ApplyAnimationSpeedMultiplier + * @tc.desc: ApplyAnimationSpeedMultiplier function01 + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionTest5, ApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + SessionInfo info; + info.abilityName_ = "ApplyAnimationSpeedMultiplier"; + info.bundleName_ = "ApplyAnimationSpeedMultiplier"; + sptr session = sptr::MakeSptr(info, nullptr); + EXPECT_NE(session, nullptr); + session->sessionStage_ = nullptr; + EXPECT_EQ(WMError::WM_ERROR_INVALID_SESSION, session->ApplyAnimationSpeedMultiplier(2.0f)); + session->sessionInfo_.isSystem_ = false; + session->state_ = SessionState::STATE_DISCONNECT; + EXPECT_EQ(WMError::WM_ERROR_INVALID_SESSION, session->ApplyAnimationSpeedMultiplier(2.0f)); + session->state_ = SessionState::STATE_CONNECT; + EXPECT_EQ(WMError::WM_ERROR_NULLPTR, session->ApplyAnimationSpeedMultiplier(2.0f)); + + session->sessionStage_ = sptr::MakeSptr(); + EXPECT_NE(nullptr, session->sessionStage_); + EXPECT_EQ(WMError::WM_OK, session->ApplyAnimationSpeedMultiplier(2.0f)); +} + /** * @tc.name: HandleActionUpdateWindowModeSupportType * @tc.desc: HandleActionUpdateWindowModeSupportType function01 diff --git a/window_scene/test/unittest/session_stage_proxy_test.cpp b/window_scene/test/unittest/session_stage_proxy_test.cpp index 270ff05d8c..9996f53965 100755 --- a/window_scene/test/unittest/session_stage_proxy_test.cpp +++ b/window_scene/test/unittest/session_stage_proxy_test.cpp @@ -286,6 +286,18 @@ HWTEST_F(SessionStageProxyTest, NotifyOccupiedAreaChangeInfo, TestSize.Level1) sessionStage_->NotifyOccupiedAreaChangeInfo(info, nullptr, {}, {}); } +/** + * @tc.name: ApplyAnimationSpeedMultiplier + * @tc.desc: test function : ApplyAnimationSpeedMultiplier + * @tc.type: FUNC + */ +HWTEST_F(SessionStageProxyTest, ApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + float multiplier = 2.0f; + ASSERT_TRUE((sessionStage_ != nullptr)); + sessionStage_->ApplyAnimationSpeedMultiplier(multiplier); +} + /** * @tc.name: NotifyKeyboardAnimationCompleted * @tc.desc: test function : NotifyKeyboardAnimationCompleted diff --git a/window_scene/test/unittest/session_stage_stub_test.cpp b/window_scene/test/unittest/session_stage_stub_test.cpp index dd2777cac6..c98fa38eb2 100644 --- a/window_scene/test/unittest/session_stage_stub_test.cpp +++ b/window_scene/test/unittest/session_stage_stub_test.cpp @@ -811,6 +811,21 @@ HWTEST_F(SessionStageStubTest, HandleSetUniqueVirtualPixelRatio, TestSize.Level1 ASSERT_EQ(0, sessionStageStub_->OnRemoteRequest(code, data, reply, option)); } +/** + * @tc.name: HandleApplyAnimationSpeedMultiplier + * @tc.desc: test function : HandleApplyAnimationSpeedMultiplier + * @tc.type: FUNC + */ +HWTEST_F(SessionStageStubTest, HandleApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + ASSERT_TRUE(sessionStageStub_ != nullptr); + ASSERT_EQ(ERR_INVALID_DATA, sessionStageStub_->HandleApplyAnimationSpeedMultiplier(data, reply)); + data.WriteFloat(2.0f); + ASSERT_EQ(0, sessionStageStub_->HandleApplyAnimationSpeedMultiplier(data, reply)); +} + /** * @tc.name: HandleNotifySessionFullScreen * @tc.desc: test function : HandleNotifySessionFullScreen diff --git a/wm/include/window_adapter.h b/wm/include/window_adapter.h index 4f511464dd..7f71801231 100644 --- a/wm/include/window_adapter.h +++ b/wm/include/window_adapter.h @@ -148,6 +148,7 @@ public: virtual WMError NotifyWatchGestureConsumeResult(int32_t keyCode, bool isConsumed); virtual WMError NotifyWatchFocusActiveChange(bool isActive); virtual WMError MinimizeByWindowId(const std::vector& windowIds); + virtual WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier); virtual WMError SetForegroundWindowNum(uint32_t windowNum); virtual WMError SetStartWindowBackgroundColor( const std::string& moduleName, const std::string& abilityName, uint32_t color, int32_t uid); diff --git a/wm/include/window_session_impl.h b/wm/include/window_session_impl.h index 47924c35df..570aa29364 100644 --- a/wm/include/window_session_impl.h +++ b/wm/include/window_session_impl.h @@ -57,6 +57,8 @@ using EnableIfSame = typename std::enable_if, Ret>::type; const std::string SET_UICONTENT_TIMEOUT_LISTENER_TASK_NAME = "SetUIContentTimeoutListener"; constexpr int64_t SET_UICONTENT_TIMEOUT_TIME_MS = 4000; constexpr int64_t SET_UICONTENT_TIMEOUT_TIME_AFTER_FREEZE_MS = 5000; +static std::atomic animationSpeedMultiplier = 1.0f; +static std::atomic isEnableAnimationSpeedMultiplier = false; } struct WindowTitleVisibleFlags { @@ -221,6 +223,7 @@ public: const std::map& avoidAreas = {}) override; void UpdateDensity() override; void SetUniqueVirtualPixelRatio(bool useUniqueDensity, float virtualPixelRatio) override; + void ApplyAnimationSpeedMultiplier(float multiplier) override; WSError UpdateOrientation() override; WSError UpdateDisplayId(uint64_t displayId) override; WSError UpdateFocus(bool focus) override; diff --git a/wm/src/window_adapter.cpp b/wm/src/window_adapter.cpp index 7af0715572..7e88040ff7 100644 --- a/wm/src/window_adapter.cpp +++ b/wm/src/window_adapter.cpp @@ -1284,6 +1284,14 @@ WMError WindowAdapter::MinimizeByWindowId(const std::vector& windowIds) return wmsProxy->MinimizeByWindowId(windowIds); } +WMError WindowAdapter::UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) +{ + INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR); + auto wmsProxy = GetWindowManagerServiceProxy(); + CHECK_PROXY_RETURN_ERROR_IF_NULL(wmsProxy, WMError::WM_ERROR_SAMGR); + return wmsProxy->UpdateAnimationSpeedMultiplierForPid(pid, multiplier); +} + WMError WindowAdapter::SetForegroundWindowNum(uint32_t windowNum) { INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR); diff --git a/wm/src/window_manager.cpp b/wm/src/window_manager.cpp index e37e59d04f..1f68e49c31 100644 --- a/wm/src/window_manager.cpp +++ b/wm/src/window_manager.cpp @@ -2206,6 +2206,15 @@ WMError WindowManager::MinimizeByWindowId(const std::vector& windowIds) return ret; } +WMError WindowManager::UpdateAnimationSpeedMultiplerForPid(pid_t pid, float multiplier) +{ + WMError ret = SingletonContainer::Get().UpdateAnimationSpeedMultiplerForPid(pid, multiplier); + if (ret != WMError::WM_OK) { + TLOGE(WmsLogTag::WMS_ANIMATION, "failed"); + } + return ret; +} + WMError WindowManager::SetForegroundWindowNum(uint32_t windowNum) { WMError ret = SingletonContainer::Get().SetForegroundWindowNum(windowNum); diff --git a/wm/src/window_scene_session_impl.cpp b/wm/src/window_scene_session_impl.cpp index ae00ed918b..bd57557490 100644 --- a/wm/src/window_scene_session_impl.cpp +++ b/wm/src/window_scene_session_impl.cpp @@ -662,6 +662,13 @@ WMError WindowSceneSessionImpl::Create(const std::shared_ptrGetImplicitAnimator() : nullptr; + if (implicitAnimator != nullptr) { + implicitAnimator->ApplyAnimationSpeedMultiplier(animationSpeedMultiplier.load()); + } + } TLOGD(WmsLogTag::WMS_LIFE, "Window Create success [name:%{public}s, id:%{public}d], state:%{public}u, " "mode:%{public}u, enableDefaultDensity:%{public}d, displayId:%{public}" PRIu64, property_->GetWindowName().c_str(), property_->GetPersistentId(), state_, GetWindowMode(), diff --git a/wm/src/window_session_impl.cpp b/wm/src/window_session_impl.cpp index be49ecbbda..2ca28e6d36 100644 --- a/wm/src/window_session_impl.cpp +++ b/wm/src/window_session_impl.cpp @@ -1483,6 +1483,33 @@ void WindowSessionImpl::SetUniqueVirtualPixelRatio(bool useUniqueDensity, float } } +void WindowSessionImpl::ApplyAnimationSpeedMultiplier(float multiplier) +{ + const char* const where = __func__; + auto task = [weakThis = wptr(this), multiplier, where, this] { + auto window = weakThis.promote(); + if (window == nullptr) { + TLOGW(WmsLogTag::WMS_ANIMATION, "%{public}s: window is nullptr", where); + return; + } + for (const auto& [_, pair] : windowSessionMap_) { + auto& WindowSession = pair.second; + if (WindowSession) { + auto rsUIContext = WindowSession->GetRSUIContext(); + auto implicitAnimator = rsUIContext ? rsUIContext->GetImplicitAnimator() : nullptr; + if (implicitAnimator == nullptr) { + TLOGE(WmsLogTag::WMS_ANIMATION, "Failed to open implicit animtion"); + continue; + } + implicitAnimator->ApplyAnimationSpeedMultiplier(multiplier); + } + } + isEnableAnimationSpeedMultiplier.store(!FoldScreenStateInternel::FloatEqualAbs(multiplier, 1.0f)); + animationSpeedMultiplier.store(multiplier); + }; + handler_->PostTask(task, where, 0, AppExecFwk::EventQueue::Priority::HIGH); +} + void WindowSessionImpl::CopyUniqueDensityParameter(sptr parentWindow) { if (parentWindow) { diff --git a/wm/test/unittest/window_adapter_test.cpp b/wm/test/unittest/window_adapter_test.cpp index 9196a00c87..26a7e11edb 100644 --- a/wm/test/unittest/window_adapter_test.cpp +++ b/wm/test/unittest/window_adapter_test.cpp @@ -1104,6 +1104,18 @@ HWTEST_F(WindowAdapterTest, MinimizeByWindowId, TestSize.Level1) ASSERT_EQ(ret, true); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: WindowAdapter/UpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(WindowAdapterTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + WindowAdapter windowAdapter; + auto err = windowAdapter.UpdateAnimationSpeedMultiplierForPid(10000, 2.0f); + ASSERT_EQ(WMError::WM_OK, err); +} + /** * @tc.name: ListWindowInfo01 * @tc.desc: WindowAdapter/ListWindowInfo diff --git a/wm/test/unittest/window_manager_test.cpp b/wm/test/unittest/window_manager_test.cpp index 12e7f6e3d9..28a07edceb 100644 --- a/wm/test/unittest/window_manager_test.cpp +++ b/wm/test/unittest/window_manager_test.cpp @@ -1791,6 +1791,23 @@ HWTEST_F(WindowManagerTest, MinimizeByWindowId, TestSize.Level1) ASSERT_EQ(WMError::WM_OK, ret_2); } +/** + * @tc.name: UpdateAnimationSpeedMultiplierForPid + * @tc.desc: Check UpdateAnimationSpeedMultiplierForPid + * @tc.type: FUNC + */ +HWTEST_F(WindowManagerTest, UpdateAnimationSpeedMultiplierForPid, TestSize.Level1) +{ + auto& windowManager = WindowManager::GetInstance(); + pid_t pid = 15234; + float multiplier = 2.0f; + WMError ret_1 = windowManager.UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + ASSERT_EQ(WMError::WM_OK, ret_1); + multiplier = 1.0f; + WMError ret_2 = windowManager.UpdateAnimationSpeedMultiplierForPid(pid, multiplier); + ASSERT_EQ(WMError::WM_OK, ret_2); +} + /** * @tc.name: ProcessRegisterWindowInfoChangeCallback01 * @tc.desc: Check ProcessRegisterWindowInfoChangeCallback diff --git a/wm/test/unittest/window_session_impl_test.cpp b/wm/test/unittest/window_session_impl_test.cpp index 151e4d3b3d..435779aa9e 100644 --- a/wm/test/unittest/window_session_impl_test.cpp +++ b/wm/test/unittest/window_session_impl_test.cpp @@ -1958,6 +1958,22 @@ HWTEST_F(WindowSessionImplTest, SetUniqueVirtualPixelRatio, TestSize.Level1) window->SetUniqueVirtualPixelRatio(false, 3.25f); } +/** + * @tc.name: ApplyAnimationSpeedMultiplier + * @tc.desc: ApplyAnimationSpeedMultiplier + * @tc.type: FUNC + */ +HWTEST_F(WindowSessionImplTest, ApplyAnimationSpeedMultiplier, TestSize.Level1) +{ + sptr option = new (std::nothrow) WindowOption(); + ASSERT_NE(option, nullptr); + option->SetWindowName("ApplyAnimationSpeedMultiplier"); + sptr window = new (std::nothrow) WindowSessionImpl(option); + ASSERT_NE(window, nullptr); + window->ApplyAnimationSpeedMultiplier(1.0f); + window->ApplyAnimationSpeedMultiplier(2.0f); +} + /** * @tc.name: EnableDrag * @tc.desc: EnableDrag Test diff --git a/wmserver/include/zidl/window_manager_interface.h b/wmserver/include/zidl/window_manager_interface.h index b3ae63912f..ac900dc362 100644 --- a/wmserver/include/zidl/window_manager_interface.h +++ b/wmserver/include/zidl/window_manager_interface.h @@ -311,6 +311,7 @@ public: virtual WMError HasFloatingWindowForeground(const sptr& abilityToken, bool& hasOrNot) { return WMError::WM_OK; } virtual WMError MinimizeByWindowId(const std::vector& windowIds) { return WMError::WM_OK; } + virtual WMError UpdateAnimationSpeedMultiplierForPid(pid_t pid, float multiplier) { return WMError::WM_OK; } virtual WMError SetForegroundWindowNum(uint32_t windowNum) { return WMError::WM_OK; } virtual WSError UseImplicitAnimation(int32_t hostWindowId, bool useImplicit) { return WSError::WS_OK; } virtual WMError AnimateTo(int32_t windowId, const WindowAnimationProperty& animationProperty, -- Gitee From 5c80ac260b1cdf1b28eff2258cfbba67b253b4b8 Mon Sep 17 00:00:00 2001 From: fateddd Date: Wed, 10 Sep 2025 15:58:26 +0800 Subject: [PATCH 15/15] animation amend stub Signed-off-by: fateddd --- window_scene/session/container/include/zidl/session_stage_stub.h | 1 + 1 file changed, 1 insertion(+) diff --git a/window_scene/session/container/include/zidl/session_stage_stub.h b/window_scene/session/container/include/zidl/session_stage_stub.h index 79e0024968..e76c785b86 100644 --- a/window_scene/session/container/include/zidl/session_stage_stub.h +++ b/window_scene/session/container/include/zidl/session_stage_stub.h @@ -80,6 +80,7 @@ private: int HandlePcAppInPadNormalClose(MessageParcel& data, MessageParcel& reply); int HandleNotifyCompatibleModePropertyChange(MessageParcel& data, MessageParcel& reply); int HandleSetUniqueVirtualPixelRatio(MessageParcel& data, MessageParcel& reply); + int HandleApplyAnimationSpeedMultiplier(MessageParcel& data, MessageParcel& reply); int HandleNotifySessionFullScreen(MessageParcel& data, MessageParcel& reply); int HandleNotifyDumpInfo(MessageParcel& data, MessageParcel& reply); int HandleExtensionHostData(MessageParcel& data, MessageParcel& reply, MessageOption& option); -- Gitee