From b1ce40033969e06e2238b87c7f627616f9baf01e Mon Sep 17 00:00:00 2001 From: wangchuan Date: Thu, 11 Sep 2025 10:14:43 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=20=E4=BF=AE=E6=94=B9mocker=E5=88=A4=E7=A9=BA?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangchuan --- wm/test/unittest/window_manager_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wm/test/unittest/window_manager_test.cpp b/wm/test/unittest/window_manager_test.cpp index da455f68ca..984a3f203b 100644 --- a/wm/test/unittest/window_manager_test.cpp +++ b/wm/test/unittest/window_manager_test.cpp @@ -299,6 +299,7 @@ HWTEST_F(WindowManagerTest, GetAccessibilityWindowInfo01, TestSize.Level1) HWTEST_F(WindowManagerTest, IsChangedPosition, TestSize.Level1) { std::unique_ptr mocker = std::make_unique(); + ASSERT_NE(mocker, nullptr); Rect rect; Rect newRect; DisplayId newDisplayId = 0; @@ -316,7 +317,6 @@ HWTEST_F(WindowManagerTest, IsChangedPosition, TestSize.Level1) HWTEST_F(WindowManagerTest, GetUnreliableWindowInfo, TestSize.Level1) { std::unique_ptr mocker = std::make_unique(); - ASSERT_NE(mocker, nullptr); int32_t windowId = 0; std::vector> infos; EXPECT_CALL(mocker->Mock(), GetUnreliableWindowInfo(_, _)).Times(1).WillOnce(Return(WMError::WM_OK)); -- Gitee From 1aeff73af3b9ebdf2a28ac339f599b53cbf67df2 Mon Sep 17 00:00:00 2001 From: wangchuan Date: Thu, 11 Sep 2025 10:25:40 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9tdd=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangchuan --- .../src/zidl/scene_session_manager_stub.cpp | 4 ++-- .../unittest/layout/scene_session_manager_layout_test.cpp | 8 ++------ 2 files changed, 4 insertions(+), 8 deletions(-) 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 13ff17cd6e..9b2ad64076 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 @@ -916,8 +916,8 @@ int SceneSessionManagerStub::HandleSetGestureNavigationEnabled(MessageParcel& da int SceneSessionManagerStub::HandleIsChangedPosition(MessageParcel& data, MessageParcel& reply) { - int32_t posX_ = INVALID_WINDOW_ID; - int32_t posY_ = INVALID_WINDOW_ID; + int32_t posX_ = 0; + int32_t posY_ = 0; uint32_t width_ = 0; uint32_t height_ = 0; if (!data.ReadInt32(posX_) || !data.ReadInt32(posY_) || !data.WriteUint32(width_) || !data.WriteUint32(height_)) { diff --git a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp index 1ec568f2cc..67306c78a4 100644 --- a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp +++ b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp @@ -239,20 +239,16 @@ HWTEST_F(SceneSessionManagerLayoutTest, IsChangedPosition_TestMode, TestSize.Lev DisplayId newDisplayId; rect = { 100, 2000, 400, 600 }; newRect = { 0, 100, 200, 300 }; - singleHandScreenInfo.mode = SingleHandMode::LEFT; ssm_->IsChangedPosition(rect, newRect, newDisplayId); usleep(WAIT_SYNC_IN_NS); - EXPECT_EQ(310, newRect.poxY_); + EXPECT_EQ(310, newRect.posY_); EXPECT_EQ(999, newDisplayId); - ssm_->singleHandTransform_ = singleHandTransform; - singleHandScreenInfo.mode = SingleHandMode::RIGHT; rect = { 100, 200, 400, 600 }; ssm_->IsChangedPosition(rect, newRect, newDisplayId); usleep(WAIT_SYNC_IN_NS); - EXPECT_EQ(200, ssm_->singleHandTransform_.posY_); + EXPECT_EQ(200, newRect.posY_); EXPECT_EQ(0, newDisplayId); - ssm_->singleHandTransform_ = singleHandTransform; } /** -- Gitee From 9ca0a5602c34e13d093f289cde601317df68b3c7 Mon Sep 17 00:00:00 2001 From: wangchuan Date: Thu, 11 Sep 2025 11:31:47 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=90=8D=E4=BB=A5=E5=8F=8A=E4=BF=AE=E6=94=B9=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangchuan --- interfaces/innerkits/wm/window_manager.h | 8 +++---- .../include/scene_session_manager.h | 2 +- .../zidl/scene_session_manager_interface.h | 2 +- .../zidl/scene_session_manager_proxy.h | 2 +- .../include/zidl/scene_session_manager_stub.h | 2 +- .../src/scene_session_manager.cpp | 2 +- .../src/zidl/scene_session_manager_proxy.cpp | 2 +- .../src/zidl/scene_session_manager_stub.cpp | 6 ++--- .../scene_session_manager_layout_test.cpp | 10 ++++---- .../scene_session_manager_proxy_test.cpp | 24 +++++++++---------- .../scene_session_manager_stub_test.cpp | 8 +++---- wm/include/window_adapter.h | 2 +- wm/src/window_adapter.cpp | 4 ++-- wm/src/window_manager.cpp | 4 ++-- wm/test/unittest/window_adapter_test.cpp | 8 +++---- wm/test/unittest/window_manager_test.cpp | 10 ++++---- .../include/zidl/window_manager_interface.h | 2 +- 17 files changed, 49 insertions(+), 49 deletions(-) diff --git a/interfaces/innerkits/wm/window_manager.h b/interfaces/innerkits/wm/window_manager.h index bd32227cea..05adbe9f7c 100644 --- a/interfaces/innerkits/wm/window_manager.h +++ b/interfaces/innerkits/wm/window_manager.h @@ -910,14 +910,14 @@ public: WMError SetWindowLayoutMode(WindowLayoutMode mode); /** - * @brief global coordinates converted to relative coordinates. + * @brief Global coordinate to relative coordinate conversion in foldedPC * * @param rect global coordinates. - * @param newRect relative coordinates. - * @param newDisplayId newDisplayId. + * @param newRect Converted relative coordinates + * @param newDisplayId Current window ID * @return WM_OK means converted, others means not converted. */ - WMError IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId); + WMError ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId); /** * @brief Get accessibility window info. diff --git a/window_scene/session_manager/include/scene_session_manager.h b/window_scene/session_manager/include/scene_session_manager.h index 46fdef5939..a949b7701e 100644 --- a/window_scene/session_manager/include/scene_session_manager.h +++ b/window_scene/session_manager/include/scene_session_manager.h @@ -409,7 +409,7 @@ public: void NotifySessionTouchOutside(int32_t persistentId, DisplayId displayId); WMError GetAccessibilityWindowInfo(std::vector>& infos) override; - WMError IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override; + WMError ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override; WMError GetUnreliableWindowInfo(int32_t windowId, std::vector>& infos) override; WSError SetWindowFlags(const sptr& sceneSession, const sptr& property); 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 096c396cba..f056984aa2 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 @@ -288,7 +288,7 @@ public: { return WMError::WM_OK; } - virtual WMError IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override + virtual WMError ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override { return WMError::WM_OK; } 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 e0be331004..70e48004ba 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 @@ -63,7 +63,7 @@ public: WSError SetSessionIcon(const sptr& token, const std::shared_ptr& icon) override; WSError IsValidSessionIds(const std::vector& sessionIds, std::vector& results) override; WMError GetAccessibilityWindowInfo(std::vector>& infos) override; - WMError IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override; + WMError ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override; WMError GetUnreliableWindowInfo(int32_t windowId, std::vector>& infos) override; WSError PendingSessionToForeground(const sptr& token, int32_t windowMode = DEFAULT_INVALID_WINDOW_MODE) override; 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 ecf40572a0..85d6415151 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 @@ -33,7 +33,7 @@ public: private: int HandleGetAccessibilityWindowInfo(MessageParcel& data, MessageParcel& reply); - int HandleIsChangedPosition(MessageParcel& data, MessageParcel& reply); + int HandleConvertToRelativeCoordinateForFoldPC(MessageParcel& data, MessageParcel& reply); int HandleGetUnreliableWindowInfo(MessageParcel& data, MessageParcel& reply); int HandleRequestFocusStatus(MessageParcel& data, MessageParcel& reply); int HandleRequestFocusStatusBySA(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 130930f111..ecbea349ba 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -10863,7 +10863,7 @@ WMError SceneSessionManager::GetAccessibilityWindowInfo(std::vectorPostSyncTask(task, "GetAccessibilityWindowInfo"); } -WMError SceneSessionManager::IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) +WMError SceneSessionManager::ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) { newRect.posX_ = rect.posX_; newRect.width_ = rect.width_; 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 51f4d613bc..2578ff640a 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 @@ -2698,7 +2698,7 @@ WSError SceneSessionManagerProxy::GetHostGlobalScaledRect(int32_t hostWindowId, return static_cast(reply.ReadInt32()); } -WMError SceneSessionManagerProxy::IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) +WMError SceneSessionManagerProxy::ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) { TLOGD(WmsLogTag::WMS_LAYOUT, "in"); 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 9b2ad64076..9fc0bdac6d 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 @@ -88,7 +88,7 @@ int SceneSessionManagerStub::ProcessRemoteRequest(uint32_t code, MessageParcel& case static_cast(SceneSessionManagerMessage::TRANS_ID_GET_WINDOW_INFO): return HandleGetAccessibilityWindowInfo(data, reply); case static_cast(SceneSessionManagerMessage::TRANS_ID_GLOBAL_COORDINATE_TO_RELATIVE_COORDINATE): - return HandleIsChangedPosition(data, reply); + return HandleConvertToRelativeCoordinateForFoldPC(data, reply); case static_cast(SceneSessionManagerMessage::TRANS_ID_GET_UNRELIABLE_WINDOW_INFO): return HandleGetUnreliableWindowInfo(data, reply); case static_cast(SceneSessionManagerMessage::TRANS_ID_REGISTER_SESSION_LISTENER): @@ -914,7 +914,7 @@ int SceneSessionManagerStub::HandleSetGestureNavigationEnabled(MessageParcel& da return ERR_NONE; } -int SceneSessionManagerStub::HandleIsChangedPosition(MessageParcel& data, MessageParcel& reply) +int SceneSessionManagerStub::HandleConvertToRelativeCoordinateForFoldPC(MessageParcel& data, MessageParcel& reply) { int32_t posX_ = 0; int32_t posY_ = 0; @@ -927,7 +927,7 @@ int SceneSessionManagerStub::HandleIsChangedPosition(MessageParcel& data, Messag Rect rect = { posX_, posY_, width_, height_ }; Rect newRect; DisplayId newDisplayId; - WMError errCode = IsChangedPosition(rect, newRect, newDisplayId); + WMError errCode = ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); reply.WriteInt32(static_cast(newRect.posX_)); reply.WriteInt32(static_cast(newRect.posY_)); reply.WriteUint32(static_cast(newRect.width_)); diff --git a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp index 67306c78a4..aa9f3e9b22 100644 --- a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp +++ b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp @@ -228,24 +228,24 @@ HWTEST_F(SceneSessionManagerLayoutTest, NotifySingleHandInfoChange_TestMode, Tes } /** - * @tc.name: IsChangedPosition_TestMode - * @tc.desc: test function : IsChangedPosition + * @tc.name: ConvertToRelativeCoordinateForFoldPC_TestMode + * @tc.desc: test function : ConvertToRelativeCoordinateForFoldPC * @tc.type: FUNC */ -HWTEST_F(SceneSessionManagerLayoutTest, IsChangedPosition_TestMode, TestSize.Level1) +HWTEST_F(SceneSessionManagerLayoutTest, ConvertToRelativeCoordinateForFoldPC_TestMode, TestSize.Level1) { Rect rect; Rect newRect; DisplayId newDisplayId; rect = { 100, 2000, 400, 600 }; newRect = { 0, 100, 200, 300 }; - ssm_->IsChangedPosition(rect, newRect, newDisplayId); + ssm_->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); usleep(WAIT_SYNC_IN_NS); EXPECT_EQ(310, newRect.posY_); EXPECT_EQ(999, newDisplayId); rect = { 100, 200, 400, 600 }; - ssm_->IsChangedPosition(rect, newRect, newDisplayId); + ssm_->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); usleep(WAIT_SYNC_IN_NS); EXPECT_EQ(200, newRect.posY_); EXPECT_EQ(0, newDisplayId); 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 b057ae9bf2..7c58cf09f1 100644 --- a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp @@ -2024,11 +2024,11 @@ HWTEST_F(sceneSessionManagerProxyTest, RemoveSessionBlackList02, TestSize.Level1 } /** - * @tc.name: IsChangedPosition01 - * @tc.desc: IsChangedPosition + * @tc.name: ConvertToRelativeCoordinateForFoldPC01 + * @tc.desc: ConvertToRelativeCoordinateForFoldPC * @tc.type: FUNC */ -HWTEST_F(sceneSessionManagerProxyTest, IsChangedPosition01, TestSize.Level1) +HWTEST_F(sceneSessionManagerProxyTest, ConvertToRelativeCoordinateForFoldPC01, TestSize.Level1) { auto tempProxy = sptr::MakeSptr(nullptr); Rect rect; @@ -2038,7 +2038,7 @@ HWTEST_F(sceneSessionManagerProxyTest, IsChangedPosition01, TestSize.Level1) newRect = { 0, 100, 200, 300 }; // remote == nullptr - auto ret = tempProxy->IsChangedPosition(rect, newRect, newDisplayId); + auto ret = tempProxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(ret, WMError::WS_ERROR_NULLPTR); // WriteInterfaceToken failed @@ -2047,24 +2047,24 @@ HWTEST_F(sceneSessionManagerProxyTest, IsChangedPosition01, TestSize.Level1) MockMessageParcel::ClearAllErrorFlag(); MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true); ASSERT_NE(proxy, nullptr); - ret = proxy->IsChangedPosition(rect, newRect, newDisplayId); + ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(WMError::WM_ERROR_IPC_FAILED, ret); MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false); // SendRequest failed ASSERT_NE(proxy, nullptr); remoteMocker->SetRequestResult(ERR_INVALID_DATA); - ret = proxy->IsChangedPosition(rect, newRect, newDisplayId); + ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(ret, WMError::WM_ERROR_IPC_FAILED); remoteMocker->SetRequestResult(ERR_NONE); } /** - * @tc.name: IsChangedPosition02 - * @tc.desc: IsChangedPosition + * @tc.name: ConvertToRelativeCoordinateForFoldPC02 + * @tc.desc: ConvertToRelativeCoordinateForFoldPC * @tc.type: FUNC */ -HWTEST_F(sceneSessionManagerProxyTest, IsChangedPosition02, TestSize.Level1) +HWTEST_F(sceneSessionManagerProxyTest, ConvertToRelativeCoordinateForFoldPC02, TestSize.Level1) { auto tempProxy = sptr::MakeSptr(nullptr); Rect rect; @@ -2074,7 +2074,7 @@ HWTEST_F(sceneSessionManagerProxyTest, IsChangedPosition02, TestSize.Level1) newRect = { 0, 100, 200, 300 }; // remote == nullptr - auto ret = tempProxy->IsChangedPosition(rect, newRect, newDisplayId); + auto ret = tempProxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(ret, WMError::WS_ERROR_NULLPTR); // WriteInterfaceToken failed @@ -2083,14 +2083,14 @@ HWTEST_F(sceneSessionManagerProxyTest, IsChangedPosition02, TestSize.Level1) MockMessageParcel::ClearAllErrorFlag(); MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true); ASSERT_NE(proxy, nullptr); - ret = proxy->IsChangedPosition(rect, newRect, newDisplayId); + ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(WMError::WM_ERROR_IPC_FAILED, ret); MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false); // SendRequest failed ASSERT_NE(proxy, nullptr); remoteMocker->SetRequestResult(ERR_INVALID_DATA); - ret = proxy->IsChangedPosition(rect, newRect, newDisplayId); + ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(ret, WMError::WM_ERROR_IPC_FAILED); remoteMocker->SetRequestResult(WMError::WM_OK); } 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 21904b0a85..a327252280 100644 --- a/window_scene/test/unittest/scene_session_manager_stub_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_stub_test.cpp @@ -1673,18 +1673,18 @@ HWTEST_F(SceneSessionManagerStubTest, HandleSetGestureNavigationEnabled, TestSiz } /** - * @tc.name: HandleIsChangedPosition - * @tc.desc: test HandleIsChangedPosition + * @tc.name: HandleConvertToRelativeCoordinateForFoldPC + * @tc.desc: test HandleConvertToRelativeCoordinateForFoldPC * @tc.type: FUNC */ -HWTEST_F(SceneSessionManagerStubTest, HandleIsChangedPosition, TestSize.Level1) +HWTEST_F(SceneSessionManagerStubTest, HandleConvertToRelativeCoordinateForFoldPC, TestSize.Level1) { MessageParcel data; MessageParcel reply; data.WriteBool(false); - int res = stub_->HandleIsChangedPosition(data, reply); + int res = stub_->HandleConvertToRelativeCoordinateForFoldPC(data, reply); EXPECT_EQ(res, ERR_NONE); } diff --git a/wm/include/window_adapter.h b/wm/include/window_adapter.h index 1e25e5b6a7..86fa9296d4 100644 --- a/wm/include/window_adapter.h +++ b/wm/include/window_adapter.h @@ -84,7 +84,7 @@ public: virtual void ClearWindowAdapter(); virtual WMError GetAccessibilityWindowInfo(std::vector>& infos); - virtual WMError IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId); + virtual WMError ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId); virtual WMError GetUnreliableWindowInfo(int32_t windowId, std::vector>& infos); virtual WMError ListWindowInfo(const WindowInfoOption& windowInfoOption, std::vector>& infos); virtual WMError GetAllWindowLayoutInfo(DisplayId displayId, std::vector>& infos); diff --git a/wm/src/window_adapter.cpp b/wm/src/window_adapter.cpp index 3ed438cd25..db1a041582 100644 --- a/wm/src/window_adapter.cpp +++ b/wm/src/window_adapter.cpp @@ -292,13 +292,13 @@ WMError WindowAdapter::GetAccessibilityWindowInfo(std::vectorGetAccessibilityWindowInfo(infos); } -WMError WindowAdapter::IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) +WMError WindowAdapter::ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) { INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR); auto wmsProxy = GetWindowManagerServiceProxy(); CHECK_PROXY_RETURN_ERROR_IF_NULL(wmsProxy, WMError::WM_DO_NOTHING); - return wmsProxy->IsChangedPosition(rect, newRect, newDisplayId); + return wmsProxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); } WMError WindowAdapter::GetUnreliableWindowInfo(int32_t windowId, diff --git a/wm/src/window_manager.cpp b/wm/src/window_manager.cpp index 353d438d53..3a2b1f8c95 100644 --- a/wm/src/window_manager.cpp +++ b/wm/src/window_manager.cpp @@ -1691,9 +1691,9 @@ WMError WindowManager::GetAccessibilityWindowInfo(std::vector().IsChangedPosition(rect, newRect, newDisplayId); + WMError ret = SingletonContainer::Get().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); if (ret != WMError::WM_OK) { TLOGE(WmsLogTag::WMS_LAYOUT, "change failed."); } diff --git a/wm/test/unittest/window_adapter_test.cpp b/wm/test/unittest/window_adapter_test.cpp index 03771aed3b..7f8d0742c8 100644 --- a/wm/test/unittest/window_adapter_test.cpp +++ b/wm/test/unittest/window_adapter_test.cpp @@ -158,11 +158,11 @@ HWTEST_F(WindowAdapterTest, GetAccessibilityWindowInfo, TestSize.Level1) } /** - * @tc.name: IsChangedPosition - * @tc.desc: WindowAdapter/IsChangedPosition + * @tc.name: ConvertToRelativeCoordinateForFoldPC + * @tc.desc: WindowAdapter/ConvertToRelativeCoordinateForFoldPC * @tc.type: FUNC */ -HWTEST_F(WindowAdapterTest, IsChangedPosition, TestSize.Level1) +HWTEST_F(WindowAdapterTest, ConvertToRelativeCoordinateForFoldPC, TestSize.Level1) { WindowAdapter windowAdapter; Rect rect; @@ -170,7 +170,7 @@ HWTEST_F(WindowAdapterTest, IsChangedPosition, TestSize.Level1) DisplayId newDisplayId = 0; rect = { 100, 2000, 400, 600 }; newRect = { 0, 100, 200, 300 }; - EXPECT_EQ(WMError::WM_OK, windowAdapter.IsChangedPosition(rect, newRect, newDisplayId)); + EXPECT_EQ(WMError::WM_OK, windowAdapter.ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId)); } /** diff --git a/wm/test/unittest/window_manager_test.cpp b/wm/test/unittest/window_manager_test.cpp index 984a3f203b..9420e95e9c 100644 --- a/wm/test/unittest/window_manager_test.cpp +++ b/wm/test/unittest/window_manager_test.cpp @@ -292,11 +292,11 @@ HWTEST_F(WindowManagerTest, GetAccessibilityWindowInfo01, TestSize.Level1) } /** - * @tc.name: IsChangedPosition - * @tc.desc: IsChangedPosition ok + * @tc.name: ConvertToRelativeCoordinateForFoldPC + * @tc.desc: ConvertToRelativeCoordinateForFoldPC ok * @tc.type: FUNC */ -HWTEST_F(WindowManagerTest, IsChangedPosition, TestSize.Level1) +HWTEST_F(WindowManagerTest, ConvertToRelativeCoordinateForFoldPC, TestSize.Level1) { std::unique_ptr mocker = std::make_unique(); ASSERT_NE(mocker, nullptr); @@ -305,8 +305,8 @@ HWTEST_F(WindowManagerTest, IsChangedPosition, TestSize.Level1) DisplayId newDisplayId = 0; rect = { 100, 2000, 400, 600 }; newRect = { 0, 100, 200, 300 }; - EXPECT_CALL(mocker->Mock(), IsChangedPosition(_, _)).Times(1).WillOnce(Return(WMError::WM_OK)); - EXPECT_EQ(WMError::WM_OK, WindowManager::GetInstance().IsChangedPosition(rect, newRect, newDisplayId)); + EXPECT_CALL(mocker->Mock(), ConvertToRelativeCoordinateForFoldPC(_, _)).Times(1).WillOnce(Return(WMError::WM_OK)); + EXPECT_EQ(WMError::WM_OK, WindowManager::GetInstance().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId)); } /** diff --git a/wmserver/include/zidl/window_manager_interface.h b/wmserver/include/zidl/window_manager_interface.h index 0c87832b9e..51ffe542f6 100644 --- a/wmserver/include/zidl/window_manager_interface.h +++ b/wmserver/include/zidl/window_manager_interface.h @@ -257,7 +257,7 @@ public: { return WSError::WS_OK; } - virtual WMError IsChangedPosition(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) + virtual WMError ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) { return WMError::WM_OK; } -- Gitee From 2d7ba9a0d9cdfa912ed04f99a2e3547ddbbae06a Mon Sep 17 00:00:00 2001 From: wangchuan Date: Thu, 11 Sep 2025 11:44:51 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E9=95=BF=E5=BA=A6=E8=BF=87=E9=95=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangchuan --- .../include/zidl/scene_session_manager_interface.h | 3 ++- .../session_manager/src/zidl/scene_session_manager_proxy.cpp | 3 ++- wm/src/window_manager.cpp | 3 ++- wm/test/unittest/window_manager_test.cpp | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) 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 f056984aa2..a155f49a35 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 @@ -288,7 +288,8 @@ public: { return WMError::WM_OK; } - virtual WMError ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override + virtual WMError ConvertToRelativeCoordinateForFoldPC( + const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override { return WMError::WM_OK; } 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 2578ff640a..73c8aaec07 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 @@ -2698,7 +2698,8 @@ WSError SceneSessionManagerProxy::GetHostGlobalScaledRect(int32_t hostWindowId, return static_cast(reply.ReadInt32()); } -WMError SceneSessionManagerProxy::ConvertToRelativeCoordinateForFoldPC(const Rect& rect, Rect& newRect, DisplayId& newDisplayId) +WMError SceneSessionManagerProxy::ConvertToRelativeCoordinateForFoldPC( + const Rect& rect, Rect& newRect, DisplayId& newDisplayId) { TLOGD(WmsLogTag::WMS_LAYOUT, "in"); MessageParcel data; diff --git a/wm/src/window_manager.cpp b/wm/src/window_manager.cpp index 3a2b1f8c95..598529abd1 100644 --- a/wm/src/window_manager.cpp +++ b/wm/src/window_manager.cpp @@ -1693,7 +1693,8 @@ WMError WindowManager::GetAccessibilityWindowInfo(std::vector().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); + WMError ret = + SingletonContainer::Get().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); if (ret != WMError::WM_OK) { TLOGE(WmsLogTag::WMS_LAYOUT, "change failed."); } diff --git a/wm/test/unittest/window_manager_test.cpp b/wm/test/unittest/window_manager_test.cpp index 9420e95e9c..99733c787e 100644 --- a/wm/test/unittest/window_manager_test.cpp +++ b/wm/test/unittest/window_manager_test.cpp @@ -306,7 +306,8 @@ HWTEST_F(WindowManagerTest, ConvertToRelativeCoordinateForFoldPC, TestSize.Level rect = { 100, 2000, 400, 600 }; newRect = { 0, 100, 200, 300 }; EXPECT_CALL(mocker->Mock(), ConvertToRelativeCoordinateForFoldPC(_, _)).Times(1).WillOnce(Return(WMError::WM_OK)); - EXPECT_EQ(WMError::WM_OK, WindowManager::GetInstance().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId)); + EXPECT_EQ(WMError::WM_OK, + WindowManager::GetInstance().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId)); } /** -- Gitee From c7676372ff76fa2a9002c53911a556b5d2e0eda2 Mon Sep 17 00:00:00 2001 From: wangchuan Date: Thu, 11 Sep 2025 16:57:47 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E6=84=8F=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangchuan --- .../zidl/scene_session_manager_interface.h | 12 ++--- .../src/scene_session_manager.cpp | 17 +++--- .../src/zidl/scene_session_manager_proxy.cpp | 22 +++----- .../src/zidl/scene_session_manager_stub.cpp | 53 ++++++++++--------- .../scene_session_manager_layout_test.cpp | 2 - wm/src/window_manager.cpp | 2 +- 6 files changed, 47 insertions(+), 61 deletions(-) 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 a155f49a35..f6b9707823 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 @@ -149,7 +149,6 @@ public: TRANS_ID_SET_IMAGE_FOR_RECENT, TRANS_ID_REGISTER_WINDOW_PROPERTY_CHANGE_AGENT, TRANS_ID_UNREGISTER_WINDOW_PROPERTY_CHANGE_AGENT, - TRANS_ID_GLOBAL_COORDINATE_TO_RELATIVE_COORDINATE, TRANS_ID_GET_HOST_GLOBAL_SCALE_RECT, TRANS_ID_ANIMATE_TO_WINDOW, TRANS_ID_CREATE_UI_EFFECT_CONTROLLER, @@ -157,6 +156,7 @@ public: TRANS_ID_REMOVE_SESSION_BLACK_LIST, TRANS_ID_GET_PIP_SWITCH_STATUS, TRANS_ID_RECOVER_WINDOW_PROPERTY_CHANGE_FLAG, + TRANS_ID_GLOBAL_COORDINATE_TO_RELATIVE_COORDINATE, }; virtual WSError SetSessionLabel(const sptr& token, const std::string& label) = 0; @@ -288,11 +288,6 @@ public: { return WMError::WM_OK; } - virtual WMError ConvertToRelativeCoordinateForFoldPC( - const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override - { - return WMError::WM_OK; - } WMError GetUnreliableWindowInfo(int32_t windowId, std::vector>& infos) override { return WMError::WM_OK; @@ -451,6 +446,11 @@ public: WMError RemoveSessionBlackList(const std::unordered_set& bundleNames, const std::unordered_set& privacyWindowTags) override { return WMError::WM_OK; } WMError GetPiPSettingSwitchStatus(bool& switchStatus) override { return WMError::WM_OK; } + WMError ConvertToRelativeCoordinateForFoldPC( + const Rect& rect, Rect& newRect, DisplayId& newDisplayId) override + { + return WMError::WM_OK; + } }; } // namespace OHOS::Rosen #endif // OHOS_ROSEN_WINDOW_SCENE_SESSION_MANAGER_INTERFACE_H diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index ecbea349ba..cada270855 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -10865,20 +10865,17 @@ WMError SceneSessionManager::GetAccessibilityWindowInfo(std::vectorfoldStatus); const auto& [defaultDisplayRect, virtualDisplayRect, foldCreaseRect] = PcFoldScreenManager::GetInstance().GetDisplayRects(); - if (foldStatus == SuperFoldStatus::HALF_FOLDED && - rect.posY_ > (defaultDisplayRect.height_ + foldCreaseRect.height_)) { - newRect.posY_ = rect.posY_ - defaultDisplayRect.height_ - foldCreaseRect.height_; - newDisplayId = VIRTUAL_DISPLAY_ID; - return WMError::WM_OK; + bool flag = rect.posY_ > (defaultDisplayRect.height_ + foldCreaseRect.height_); + if (foldStatus == SuperFoldStatus::HALF_FOLDED && flag) { + newRect.posY_ = rect.posY_ - defaultDisplayRect.height_ - foldCreaseRect.height_; + newDisplayId = VIRTUAL_DISPLAY_ID; + return WMError::WM_OK; } else { - newRect.posY_ = rect.posY_; return WMError::WM_DO_NOTHING; } } 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 73c8aaec07..bf69fc2ae4 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 @@ -2709,20 +2709,9 @@ WMError SceneSessionManagerProxy::ConvertToRelativeCoordinateForFoldPC( TLOGE(WmsLogTag::WMS_LAYOUT, "Write interface token failed."); return WMError::WM_ERROR_IPC_FAILED; } - if (!data.WriteInt32(rect.posX_)) { - TLOGE(WmsLogTag::WMS_LAYOUT, "Write posX_ failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - if (!data.WriteInt32(rect.posY_)) { - TLOGE(WmsLogTag::WMS_LAYOUT, "Write posY_ failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - if (!data.WriteUint32(rect.width_)) { - TLOGE(WmsLogTag::WMS_LAYOUT, "Write width_ failed"); - return WMError::WM_ERROR_IPC_FAILED; - } - if (!data.WriteUint32(rect.height_)) { - TLOGE(WmsLogTag::WMS_LAYOUT, "Write height_ failed"); + if (!data.WriteInt32(rect.posX_) || !data.WriteInt32(rect.posY_) || + !data.WriteUint32(rect.width_) || !data.WriteUint32(rect.height_)) { + TLOGE(WmsLogTag::WMS_LAYOUT, "Failed to write rect"); return WMError::WM_ERROR_IPC_FAILED; } sptr remote = Remote(); @@ -2730,9 +2719,10 @@ WMError SceneSessionManagerProxy::ConvertToRelativeCoordinateForFoldPC( TLOGE(WmsLogTag::WMS_MULTI_WINDOW, "remote is nullptr"); return WMError::WM_ERROR_NULLPTR; } - if (remote->SendRequest( + auto sendRet = remote->SendRequest( static_cast(SceneSessionManagerMessage::TRANS_ID_GLOBAL_COORDINATE_TO_RELATIVE_COORDINATE), - data, reply, option) != ERR_NONE) { + data, reply, option); + if (sendRet != ERR_NONE) { TLOGE(WmsLogTag::WMS_MULTI_WINDOW, "SendRequest GetFreeMultiWindowEnableState failed"); return WMError::WM_ERROR_IPC_FAILED; } 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 9fc0bdac6d..7fa75dba0e 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 @@ -1014,32 +1014,6 @@ int SceneSessionManagerStub::HandleUpdateSessionAvoidAreaListener(MessageParcel& return ERR_NONE; } -int SceneSessionManagerStub::HandleGetSessionSnapshot(MessageParcel& data, MessageParcel& reply) -{ - TLOGD(WmsLogTag::WMS_SYSTEM, "Handled!"); - std::u16string deviceIdData; - if (!data.ReadString16(deviceIdData)) { - TLOGE(WmsLogTag::WMS_SYSTEM, "read deviceId fail"); - return ERR_INVALID_DATA; - } - std::string deviceId = Str16ToStr8(deviceIdData); - int32_t persistentId = 0; - if (!data.ReadInt32(persistentId)) { - TLOGE(WmsLogTag::WMS_SYSTEM, "read persistentId fail"); - return ERR_INVALID_DATA; - } - bool isLowResolution = false; - if (!data.ReadBool(isLowResolution)) { - TLOGE(WmsLogTag::WMS_SYSTEM, "read isLowResolution fail"); - return ERR_INVALID_DATA; - } - std::shared_ptr snapshot = std::make_shared(); - WSError ret = GetSessionSnapshot(deviceId, persistentId, *snapshot, isLowResolution); - reply.WriteParcelable(snapshot.get()); - reply.WriteUint32(static_cast(ret)); - return ERR_NONE; -} - int SceneSessionManagerStub::HandleGetSessionSnapshotById(MessageParcel& data, MessageParcel& reply) { TLOGD(WmsLogTag::WMS_SYSTEM, "Handled!"); @@ -2508,4 +2482,31 @@ int SceneSessionManagerStub::HandleGetPiPSettingSwitchStatus(MessageParcel& data } return ERR_NONE; } + + +int SceneSessionManagerStub::HandleGetSessionSnapshot(MessageParcel& data, MessageParcel& reply) +{ + TLOGD(WmsLogTag::WMS_SYSTEM, "Handled!"); + std::u16string deviceIdData; + if (!data.ReadString16(deviceIdData)) { + TLOGE(WmsLogTag::WMS_SYSTEM, "read deviceId fail"); + return ERR_INVALID_DATA; + } + std::string deviceId = Str16ToStr8(deviceIdData); + int32_t persistentId = 0; + if (!data.ReadInt32(persistentId)) { + TLOGE(WmsLogTag::WMS_SYSTEM, "read persistentId fail"); + return ERR_INVALID_DATA; + } + bool isLowResolution = false; + if (!data.ReadBool(isLowResolution)) { + TLOGE(WmsLogTag::WMS_SYSTEM, "read isLowResolution fail"); + return ERR_INVALID_DATA; + } + std::shared_ptr snapshot = std::make_shared(); + WSError ret = GetSessionSnapshot(deviceId, persistentId, *snapshot, isLowResolution); + reply.WriteParcelable(snapshot.get()); + reply.WriteUint32(static_cast(ret)); + return ERR_NONE; +} } // namespace OHOS::Rosen \ No newline at end of file diff --git a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp index aa9f3e9b22..db705d22b5 100644 --- a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp +++ b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp @@ -240,13 +240,11 @@ HWTEST_F(SceneSessionManagerLayoutTest, ConvertToRelativeCoordinateForFoldPC_Tes rect = { 100, 2000, 400, 600 }; newRect = { 0, 100, 200, 300 }; ssm_->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); - usleep(WAIT_SYNC_IN_NS); EXPECT_EQ(310, newRect.posY_); EXPECT_EQ(999, newDisplayId); rect = { 100, 200, 400, 600 }; ssm_->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); - usleep(WAIT_SYNC_IN_NS); EXPECT_EQ(200, newRect.posY_); EXPECT_EQ(0, newDisplayId); } diff --git a/wm/src/window_manager.cpp b/wm/src/window_manager.cpp index 598529abd1..e29aa423dc 100644 --- a/wm/src/window_manager.cpp +++ b/wm/src/window_manager.cpp @@ -1694,7 +1694,7 @@ WMError WindowManager::GetAccessibilityWindowInfo(std::vector().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); + SingletonContainer::Get().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); if (ret != WMError::WM_OK) { TLOGE(WmsLogTag::WMS_LAYOUT, "change failed."); } -- Gitee From 6c76a25742238b2808e3a4731f05cc1dc7e9277e Mon Sep 17 00:00:00 2001 From: wangchuan Date: Fri, 12 Sep 2025 09:57:27 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=82=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangchuan --- window_scene/session_manager/src/scene_session_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index cada270855..1867bcf300 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -10867,7 +10867,7 @@ WMError SceneSessionManager::ConvertToRelativeCoordinateForFoldPC(const Rect& re { newRect = rect; SuperFoldStatus foldStatus = PcFoldScreenManager::GetInstance().GetScreenFoldStatus(); - TLOGD(WmsLogTag::WMS_LAYOUT, "foldStatus=%{public}d", static_castfoldStatus); + TLOGD(WmsLogTag::WMS_LAYOUT, "foldStatus=%{public}d", static_cast(foldStatus)); const auto& [defaultDisplayRect, virtualDisplayRect, foldCreaseRect] = PcFoldScreenManager::GetInstance().GetDisplayRects(); bool flag = rect.posY_ > (defaultDisplayRect.height_ + foldCreaseRect.height_); -- Gitee From cf38e6073de10e4bece6317d416b2ee89aea4d07 Mon Sep 17 00:00:00 2001 From: wangchuan Date: Fri, 12 Sep 2025 16:57:22 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangchuan --- test/common/mock/mock_window_adapter.h | 2 + .../src/scene_session_manager.cpp | 5 +- .../src/zidl/scene_session_manager_proxy.cpp | 29 ++++++++--- .../src/zidl/scene_session_manager_stub.cpp | 24 ++++++--- .../scene_session_manager_layout_test.cpp | 11 ++-- .../scene_session_manager_proxy_test.cpp | 52 +++++-------------- .../scene_session_manager_stub_test.cpp | 38 +++++++++++--- wm/test/unittest/window_adapter_test.cpp | 11 ++-- wm/test/unittest/window_manager_test.cpp | 8 +-- 9 files changed, 104 insertions(+), 76 deletions(-) diff --git a/test/common/mock/mock_window_adapter.h b/test/common/mock/mock_window_adapter.h index b5cd83e112..a29a7559b8 100644 --- a/test/common/mock/mock_window_adapter.h +++ b/test/common/mock/mock_window_adapter.h @@ -50,6 +50,8 @@ public: const sptr& windowManagerAgent)); MOCK_METHOD1(GetVisibilityWindowInfo, WMError(std::vector>& infos)); MOCK_METHOD1(GetAccessibilityWindowInfo, WMError(std::vector>& infos)); + MOCK_METHOD3(ConvertToRelativeCoordinateForFoldPC, WMError(const Rect& rect, + Rect& newRect, DisplayId& newDisplayId)); MOCK_METHOD2(GetUnreliableWindowInfo, WMError(int32_t windowId, std::vector>& infos)); MOCK_METHOD1(RaiseToAppTop, WMError(uint32_t windowId)); MOCK_METHOD1(GetSystemConfig, WMError(SystemConfig& systemConfig)); diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 1867bcf300..dd794b7c94 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -10866,10 +10866,11 @@ WMError SceneSessionManager::GetAccessibilityWindowInfo(std::vector(foldStatus)); const auto& [defaultDisplayRect, virtualDisplayRect, foldCreaseRect] = - PcFoldScreenManager::GetInstance().GetDisplayRects(); + PcFoldScreenManagerInstance.GetDisplayRects(); bool flag = rect.posY_ > (defaultDisplayRect.height_ + foldCreaseRect.height_); if (foldStatus == SuperFoldStatus::HALF_FOLDED && flag) { newRect.posY_ = rect.posY_ - defaultDisplayRect.height_ - foldCreaseRect.height_; 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 bf69fc2ae4..56daaffade 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 @@ -2723,16 +2723,31 @@ WMError SceneSessionManagerProxy::ConvertToRelativeCoordinateForFoldPC( static_cast(SceneSessionManagerMessage::TRANS_ID_GLOBAL_COORDINATE_TO_RELATIVE_COORDINATE), data, reply, option); if (sendRet != ERR_NONE) { - TLOGE(WmsLogTag::WMS_MULTI_WINDOW, "SendRequest GetFreeMultiWindowEnableState failed"); + TLOGE(WmsLogTag::WMS_MULTI_WINDOW, "SendRequest ConvertToRelativeCoordinateForFoldPC failed"); return WMError::WM_ERROR_IPC_FAILED; } - auto posX = reply.ReadInt32(); - auto posY = reply.ReadInt32(); - auto width = reply.ReadUint32(); - auto height = reply.ReadUint32(); + int32_t posX = 0; + int32_t posY = 0; + uint32_t width = 0; + uint32_t height = 0; + if (!reply.ReadInt32(posX) || !reply.ReadInt32(posY) || + !reply.ReadInt32(width) || !reply.ReadInt32(height)) { + TLOGE(WmsLogTag::WMS_MULTI_WINDOW, "Failed to read rect"); + return WMError::WM_ERROR_IPC_FAILED; + } newRect = {posX, posY, width, height}; - newDisplayId = reply.ReadUint64(); - return static_cast(reply.ReadInt32()); + uint64_t displayId = 0; + if (!reply.ReadUint64(dispalyId)) { + TLOGE(WmsLogTag::WMS_MULTI_WINDOW, "Failed to read displayId"); + return WMError::WM_ERROR_IPC_FAILED; + } + newDisplayId = displayId; + int32_t result = 0; + if (!reply.ReadInt(result)) { + TLOGE(WmsLogTag::WMS_MULTI_WINDOW, "Failed to read result"); + return WMError::WM_ERROR_IPC_FAILED; + } + return static_cast(result); } WSError SceneSessionManagerProxy::GetFreeMultiWindowEnableState(bool& enable) 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 7fa75dba0e..94dd18682b 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 @@ -920,7 +920,7 @@ int SceneSessionManagerStub::HandleConvertToRelativeCoordinateForFoldPC(MessageP int32_t posY_ = 0; uint32_t width_ = 0; uint32_t height_ = 0; - if (!data.ReadInt32(posX_) || !data.ReadInt32(posY_) || !data.WriteUint32(width_) || !data.WriteUint32(height_)) { + if (!data.ReadInt32(posX_) || !data.ReadInt32(posY_) || !data.ReadUint32(width_) || !data.ReadUint32(height_)) { TLOGE(WmsLogTag::WMS_LAYOUT, "Read window infos failed."); return ERR_TRANSACTION_FAILED; } @@ -928,12 +928,22 @@ int SceneSessionManagerStub::HandleConvertToRelativeCoordinateForFoldPC(MessageP Rect newRect; DisplayId newDisplayId; WMError errCode = ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); - reply.WriteInt32(static_cast(newRect.posX_)); - reply.WriteInt32(static_cast(newRect.posY_)); - reply.WriteUint32(static_cast(newRect.width_)); - reply.WriteUint32(static_cast(newRect.height_)); - reply.WriteUint64(static_cast(newDisplayId)); - reply.WriteInt32(static_cast(errCode)); + if (!reply.WriteInt32(static_cast(newRect.posX_)) || + !reply.WriteInt32(static_cast(newRect.posY_)) || + !reply.WriteUint32(static_cast(newRect.width_)) || + !reply.WriteUint32(static_cast(newRect.height_)) + ) { + TLOGE(WmsLogTag::WMS_LAYOUT, "Write rect failed."); + return ERR_TRANSACTION_FAILED; + } + if (!reply.WriteUint64(static_cast(newDisplayId))) { + TLOGE(WmsLogTag::WMS_LAYOUT, "Write newDisplayId failed."); + return ERR_TRANSACTION_FAILED; + } + if (!reply.WriteInt32(static_cast(errCode))) { + TLOGE(WmsLogTag::WMS_LAYOUT, "Write errCode failed."); + return ERR_TRANSACTION_FAILED; + } return ERR_NONE; } diff --git a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp index db705d22b5..408c05390f 100644 --- a/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp +++ b/window_scene/test/unittest/layout/scene_session_manager_layout_test.cpp @@ -234,15 +234,18 @@ HWTEST_F(SceneSessionManagerLayoutTest, NotifySingleHandInfoChange_TestMode, Tes */ HWTEST_F(SceneSessionManagerLayoutTest, ConvertToRelativeCoordinateForFoldPC_TestMode, TestSize.Level1) { - Rect rect; + Rect rect = { 100, 3500, 400, 600}; Rect newRect; DisplayId newDisplayId; - rect = { 100, 2000, 400, 600 }; - newRect = { 0, 100, 200, 300 }; + // Convert success + PcFoldScreenManager::GetInstance().UpdateFoldScreenStatus(0, SuperFoldStatus::HALF_FOLDED, + { 0, 0, 2472, 1648}, {0, 1648, 2472, 1648}, {0, 1642, 2472, 1648}); ssm_->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); - EXPECT_EQ(310, newRect.posY_); + EXPECT_EQ(204, newRect.posY_); EXPECT_EQ(999, newDisplayId); + // Convert Failed + newDisplayId = 0; rect = { 100, 200, 400, 600 }; ssm_->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(200, newRect.posY_); 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 7c58cf09f1..261805a901 100644 --- a/window_scene/test/unittest/scene_session_manager_proxy_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_proxy_test.cpp @@ -2030,69 +2030,41 @@ HWTEST_F(sceneSessionManagerProxyTest, RemoveSessionBlackList02, TestSize.Level1 */ HWTEST_F(sceneSessionManagerProxyTest, ConvertToRelativeCoordinateForFoldPC01, TestSize.Level1) { - auto tempProxy = sptr::MakeSptr(nullptr); Rect rect; Rect newRect; DisplayId newDisplayId = 0; rect = { 100, 2000, 400, 600 }; newRect = { 0, 100, 200, 300 }; - // remote == nullptr - auto ret = tempProxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); + sptr remoteMocker = nullptr; + auto proxy = sptr::MakeSptr(remoteMocker); + auto ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(ret, WMError::WS_ERROR_NULLPTR); + ASSERT_NE(proxy, nullptr); // WriteInterfaceToken failed - sptr remoteMocker = sptr::MakeSptr(); - auto proxy = sptr::MakeSptr(remoteMocker); MockMessageParcel::ClearAllErrorFlag(); MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true); - ASSERT_NE(proxy, nullptr); ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); - EXPECT_EQ(WMError::WM_ERROR_IPC_FAILED, ret); + EXPECT_EQ(WMError::WS_ERROR_NULLPTR, ret); MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false); - - // SendRequest failed - ASSERT_NE(proxy, nullptr); - remoteMocker->SetRequestResult(ERR_INVALID_DATA); + + MockMessageParcel::SetWriteInt32ErrorFlag(true); ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); - EXPECT_EQ(ret, WMError::WM_ERROR_IPC_FAILED); - remoteMocker->SetRequestResult(ERR_NONE); -} - -/** - * @tc.name: ConvertToRelativeCoordinateForFoldPC02 - * @tc.desc: ConvertToRelativeCoordinateForFoldPC - * @tc.type: FUNC - */ -HWTEST_F(sceneSessionManagerProxyTest, ConvertToRelativeCoordinateForFoldPC02, TestSize.Level1) -{ - auto tempProxy = sptr::MakeSptr(nullptr); - Rect rect; - Rect newRect; - DisplayId newDisplayId = 0; - rect = { 100, 2000, 400, 600 }; - newRect = { 0, 100, 200, 300 }; - - // remote == nullptr - auto ret = tempProxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); - EXPECT_EQ(ret, WMError::WS_ERROR_NULLPTR); + EXPECT_EQ(WMError::WM_ERROR_IPC_FAILED, ret); + MockMessageParcel::SetWriteInt32ErrorFlag(false); - // WriteInterfaceToken failed - sptr remoteMocker = sptr::MakeSptr(); - auto proxy = sptr::MakeSptr(remoteMocker); - MockMessageParcel::ClearAllErrorFlag(); - MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true); - ASSERT_NE(proxy, nullptr); + MockMessageParcel::SetWriteUint32ErrorFlag(true); ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(WMError::WM_ERROR_IPC_FAILED, ret); - MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false); + MockMessageParcel::SetWriteUint32ErrorFlag(false); // SendRequest failed ASSERT_NE(proxy, nullptr); remoteMocker->SetRequestResult(ERR_INVALID_DATA); ret = proxy->ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); EXPECT_EQ(ret, WMError::WM_ERROR_IPC_FAILED); - remoteMocker->SetRequestResult(WMError::WM_OK); + remoteMocker->SetRequestResult(ERR_NONE); } /** 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 a327252280..26477522bf 100644 --- a/window_scene/test/unittest/scene_session_manager_stub_test.cpp +++ b/window_scene/test/unittest/scene_session_manager_stub_test.cpp @@ -1679,13 +1679,37 @@ HWTEST_F(SceneSessionManagerStubTest, HandleSetGestureNavigationEnabled, TestSiz */ HWTEST_F(SceneSessionManagerStubTest, HandleConvertToRelativeCoordinateForFoldPC, TestSize.Level1) { - MessageParcel data; - MessageParcel reply; - - data.WriteBool(false); - - int res = stub_->HandleConvertToRelativeCoordinateForFoldPC(data, reply); - EXPECT_EQ(res, ERR_NONE); + MessageParcel data1; + MessageParcel reply; + + data1.WriteInt32(rect_.posX_); + data1.WriteInt32(rect_.posY_); + data1.WriteInt32(rect_.width_); + data1.WriteInt32(rect_.height_); + int res1 = stub_->HandleConvertToRelativeCoordinateForFoldPC(data1, reply); + EXPECT_EQ(res1, ERR_NONE); + + MessageParcel data2; + data2.WriteInt32(rect_.posX_); + data2.WriteInt32(rect_.posY_); + data2.WriteInt32(rect_.width_); + int res2 = stub_->HandleConvertToRelativeCoordinateForFoldPC(data2, reply); + EXPECT_EQ(res2, ERR_TRANSACTION_FAILED); + + MessageParcel data3; + data3.WriteInt32(rect_.posX_); + data3.WriteInt32(rect_.posY_); + int res3 = stub_->HandleConvertToRelativeCoordinateForFoldPC(data3, reply); + EXPECT_EQ(res3, ERR_TRANSACTION_FAILED); + + MessageParcel data4; + data4.WriteInt32(rect_.posX_); + int res4 = stub_->HandleConvertToRelativeCoordinateForFoldPC(data4, reply); + EXPECT_EQ(res4, ERR_TRANSACTION_FAILED); + + MessageParcel data5; + int res5 = stub_->HandleConvertToRelativeCoordinateForFoldPC(data5, reply); + EXPECT_EQ(res5, ERR_TRANSACTION_FAILED); } /** diff --git a/wm/test/unittest/window_adapter_test.cpp b/wm/test/unittest/window_adapter_test.cpp index 7f8d0742c8..41bbd3be80 100644 --- a/wm/test/unittest/window_adapter_test.cpp +++ b/wm/test/unittest/window_adapter_test.cpp @@ -168,9 +168,14 @@ HWTEST_F(WindowAdapterTest, ConvertToRelativeCoordinateForFoldPC, TestSize.Level Rect rect; Rect newRect; DisplayId newDisplayId = 0; - rect = { 100, 2000, 400, 600 }; - newRect = { 0, 100, 200, 300 }; - EXPECT_EQ(WMError::WM_OK, windowAdapter.ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId)); + rect = { 100, 3000, 400, 600 }; + auto ret = windowAdapter.ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); + EXPECT_EQ(WMError::WM_DO_NOTHING, ret); + EXPECT_EQ(newRect.posX_, 100); + EXPECT_EQ(newRect.posY_, 3000); + EXPECT_EQ(newRect.width_, 400); + EXPECT_EQ(newRect.height_, 600); + EXPECT_EQ(newRect.newDisplayId, 0); } /** diff --git a/wm/test/unittest/window_manager_test.cpp b/wm/test/unittest/window_manager_test.cpp index 99733c787e..4f36f3c9af 100644 --- a/wm/test/unittest/window_manager_test.cpp +++ b/wm/test/unittest/window_manager_test.cpp @@ -298,16 +298,12 @@ HWTEST_F(WindowManagerTest, GetAccessibilityWindowInfo01, TestSize.Level1) */ HWTEST_F(WindowManagerTest, ConvertToRelativeCoordinateForFoldPC, TestSize.Level1) { - std::unique_ptr mocker = std::make_unique(); - ASSERT_NE(mocker, nullptr); Rect rect; Rect newRect; DisplayId newDisplayId = 0; rect = { 100, 2000, 400, 600 }; - newRect = { 0, 100, 200, 300 }; - EXPECT_CALL(mocker->Mock(), ConvertToRelativeCoordinateForFoldPC(_, _)).Times(1).WillOnce(Return(WMError::WM_OK)); - EXPECT_EQ(WMError::WM_OK, - WindowManager::GetInstance().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId)); + auto ret = WindowManager::GetInstance().ConvertToRelativeCoordinateForFoldPC(rect, newRect, newDisplayId); + EXPECT_EQ(WMError::WM_OK, ret); } /** -- Gitee