From 6993053ac37317d6be3100b2e7ef561021ffdcca Mon Sep 17 00:00:00 2001 From: chaos Date: Thu, 28 Aug 2025 19:59:13 +0800 Subject: [PATCH 1/4] tdd fix Signed-off-by: chaos --- .../test/dms_unittest/screen_session_manager_test2.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp index 1db6b56df1..e22cca1fc6 100644 --- a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp +++ b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp @@ -1026,7 +1026,6 @@ HWTEST_F(ScreenSessionManagerTest, SetLandscapeLockStatus01, TestSize.Level1) EXPECT_TRUE(g_errLog.find("permission denied!") != std::string::npos); } -chaos /** * @tc.name: NotifyDisplayChangedByUid * @tc.desc: NotifyDisplayChangedByUid test @@ -1060,7 +1059,7 @@ HWTEST_F(ScreenSessionManagerTest, NotifyDisplayChangedByUidInner, TestSize.Leve ScreenId screenId = 1050; sptr screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0); ASSERT_NE(screenSession, nullptr); - ssm_->NotifyDisplayChangedByUid((screenSession->ConvertToDisplayInfo(), + ssm_->NotifyDisplayChangedByUid(screenSession->ConvertToDisplayInfo(), DisplayChangeEvent::DISPLAY_SIZE_CHANGED, 2002); EXPECT_TRUE(g_errLog.find("uid") != std::string::npos); } -- Gitee From 8bdb57a55eb10eda0463af9b8721f8d96018c829 Mon Sep 17 00:00:00 2001 From: chaos Date: Thu, 28 Aug 2025 22:47:29 +0800 Subject: [PATCH 2/4] fix1 Signed-off-by: chaos --- dm/src/display_manager.cpp | 4 +- dm/src/oh_display_manager.cpp | 3 +- interfaces/innerkits/dm/display_manager.h | 2 +- .../include/display_ani_listener.h | 2 +- .../display_ani/src/display_ani_listener.cpp | 2 +- .../display_runtime/cj_display_listener.cpp | 2 +- .../cj/display_runtime/cj_display_listener.h | 2 +- .../display_runtime/js_display_listener.cpp | 6 +- .../display_runtime/js_display_listener.h | 2 +- .../screen_session_manager_test2.cpp | 56 +++++++++++++++++++ 10 files changed, 68 insertions(+), 13 deletions(-) diff --git a/dm/src/display_manager.cpp b/dm/src/display_manager.cpp index 3dba182573..7893ddceb9 100644 --- a/dm/src/display_manager.cpp +++ b/dm/src/display_manager.cpp @@ -1825,7 +1825,7 @@ void DisplayManager::Impl::NotifyAvailableAreaChanged(DMRect rect, DisplayId dis availableAreaListeners = availableAreaListeners_; } for (auto& listener : availableAreaListeners) { - listener->OnAvailableAreaChanged(rect); + listener->OnAvailableAreaChanged(rect, displayId); } std::map>> availableAreaListenersMap; { @@ -1834,7 +1834,7 @@ void DisplayManager::Impl::NotifyAvailableAreaChanged(DMRect rect, DisplayId dis } if (availableAreaListenersMap.find(displayId) != availableAreaListenersMap.end()) { for (auto& listener : availableAreaListenersMap[displayId]) { - listener->OnAvailableAreaChanged(rect); + listener->OnAvailableAreaChanged(rect, displayId); } } } diff --git a/dm/src/oh_display_manager.cpp b/dm/src/oh_display_manager.cpp index 4f3816a70b..c648255da2 100644 --- a/dm/src/oh_display_manager.cpp +++ b/dm/src/oh_display_manager.cpp @@ -38,13 +38,12 @@ public: innerAvailableAreaChangeFunc_ = availableAreaChangeFunc; } - void OnAvailableAreaChanged(DMRect area) + void OnAvailableAreaChanged(DMRect area, DisplayId displayId) { if (innerAvailableAreaChangeFunc_ == nullptr) { TLOGE(WmsLogTag::DMS, "[DMNDK] callback is nullptr"); return; } - DisplayId displayId = DisplayManager::GetInstance().GetDefaultDisplayId(); innerAvailableAreaChangeFunc_(displayId); } diff --git a/interfaces/innerkits/dm/display_manager.h b/interfaces/innerkits/dm/display_manager.h index 02cfb6fca1..e9c83eed1f 100644 --- a/interfaces/innerkits/dm/display_manager.h +++ b/interfaces/innerkits/dm/display_manager.h @@ -172,7 +172,7 @@ public: * * @param DMRect area. */ - virtual void OnAvailableAreaChanged(DMRect area) {} + virtual void OnAvailableAreaChanged(DMRect area, DisplayId displayId) {} }; /** diff --git a/interfaces/kits/ani/display_runtime/display_ani/include/display_ani_listener.h b/interfaces/kits/ani/display_runtime/display_ani/include/display_ani_listener.h index c79db46195..757fd88795 100644 --- a/interfaces/kits/ani/display_runtime/display_ani/include/display_ani_listener.h +++ b/interfaces/kits/ani/display_runtime/display_ani/include/display_ani_listener.h @@ -48,7 +48,7 @@ public: void OnFoldAngleChanged(std::vector foldAngles) override; void OnCaptureStatusChanged(bool isCapture) override; void OnDisplayModeChanged(FoldDisplayMode displayMode) override; - void OnAvailableAreaChanged(DMRect area) override; + void OnAvailableAreaChanged(DMRect area, DisplayId displayId) override; ani_status CallAniMethodVoid(ani_object object, const char* cls, const char* method, const char* signature, ...); bool IsAniCallBackExist(ani_env* env, const std::string& type, ani_ref callback); diff --git a/interfaces/kits/ani/display_runtime/display_ani/src/display_ani_listener.cpp b/interfaces/kits/ani/display_runtime/display_ani/src/display_ani_listener.cpp index b412419331..fd6a329872 100644 --- a/interfaces/kits/ani/display_runtime/display_ani/src/display_ani_listener.cpp +++ b/interfaces/kits/ani/display_runtime/display_ani/src/display_ani_listener.cpp @@ -275,7 +275,7 @@ void DisplayAniListener::OnDisplayModeChanged(FoldDisplayMode foldDisplayMode) TLOGE(WmsLogTag::DMS, "[ANI] OnDisplayModeChanged: env is nullptr"); } } -void DisplayAniListener::OnAvailableAreaChanged(DMRect area) +void DisplayAniListener::OnAvailableAreaChanged(DMRect area, DisplayId displayId) { } diff --git a/interfaces/kits/cj/display_runtime/cj_display_listener.cpp b/interfaces/kits/cj/display_runtime/cj_display_listener.cpp index 2dd44678cc..e514bc70c2 100644 --- a/interfaces/kits/cj/display_runtime/cj_display_listener.cpp +++ b/interfaces/kits/cj/display_runtime/cj_display_listener.cpp @@ -168,7 +168,7 @@ void CJDisplayListener::OnDisplayModeChanged(FoldDisplayMode displayMode) CallCJMethod(EVENT_DISPLAY_MODE_CHANGED, &displayMode); } -void CJDisplayListener::OnAvailableAreaChanged(DMRect area) {} +void CJDisplayListener::OnAvailableAreaChanged(DMRect area, DisplayId displayId) {} void CJDisplayListener::CallCJMethod(const std::string& methodName, void* argv) { diff --git a/interfaces/kits/cj/display_runtime/cj_display_listener.h b/interfaces/kits/cj/display_runtime/cj_display_listener.h index adf663a1fb..ae76e7da6e 100644 --- a/interfaces/kits/cj/display_runtime/cj_display_listener.h +++ b/interfaces/kits/cj/display_runtime/cj_display_listener.h @@ -54,7 +54,7 @@ public: void OnFoldAngleChanged(std::vector foldAngles) override; void OnCaptureStatusChanged(bool isCapture) override; void OnDisplayModeChanged(FoldDisplayMode displayMode) override; - void OnAvailableAreaChanged(DMRect area) override; + void OnAvailableAreaChanged(DMRect area, DisplayId displayId) override; private: void CallCJMethod(const std::string& methodName, void* argv); diff --git a/interfaces/kits/napi/display_runtime/js_display_listener.cpp b/interfaces/kits/napi/display_runtime/js_display_listener.cpp index e95160870f..fbf3279385 100644 --- a/interfaces/kits/napi/display_runtime/js_display_listener.cpp +++ b/interfaces/kits/napi/display_runtime/js_display_listener.cpp @@ -378,7 +378,7 @@ void JsDisplayListener::OnDisplayModeChanged(FoldDisplayMode displayMode) } } -void JsDisplayListener::OnAvailableAreaChanged(DMRect area) +void JsDisplayListener::OnAvailableAreaChanged(DMRect area, DisplayId displayId) { std::lock_guard lock(mtx_); TLOGI(WmsLogTag::DMS, "called"); @@ -390,14 +390,14 @@ void JsDisplayListener::OnAvailableAreaChanged(DMRect area) TLOGE(WmsLogTag::DMS, "not this event, return"); return; } - auto napiTask = [self = weakRef_, area, env = env_]() { + auto napiTask = [self = weakRef_, area, displayId, env = env_]() { HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "JsDisplayListener::OnAvailableAreaChanged"); auto thisListener = self.promote(); if (thisListener == nullptr || env == nullptr) { TLOGNE(WmsLogTag::DMS, "[NAPI]this listener or env is nullptr"); return; } - napi_value argv[] = {CreateJsRectObject(env, area)}; + napi_value argv[] = {CreateJsRectObject(env, area), CreateJsValue(env, static_cast(displayId))}; thisListener->CallJsMethod(EVENT_AVAILABLE_AREA_CHANGED, argv, ArraySize(argv)); }; diff --git a/interfaces/kits/napi/display_runtime/js_display_listener.h b/interfaces/kits/napi/display_runtime/js_display_listener.h index 5efb949e4e..427a1bec8f 100644 --- a/interfaces/kits/napi/display_runtime/js_display_listener.h +++ b/interfaces/kits/napi/display_runtime/js_display_listener.h @@ -46,7 +46,7 @@ public: void OnFoldAngleChanged(std::vector foldAngles) override; void OnCaptureStatusChanged(bool isCapture) override; void OnDisplayModeChanged(FoldDisplayMode displayMode) override; - void OnAvailableAreaChanged(DMRect area) override; + void OnAvailableAreaChanged(DMRect area, DisplayId displayId) override; private: void CallJsMethod(const std::string& methodName, napi_value const * argv = nullptr, size_t argc = 0); diff --git a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp index e22cca1fc6..77961a19cb 100644 --- a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp +++ b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp @@ -35,6 +35,8 @@ constexpr uint32_t M_STATUS_WIDTH = 1008; constexpr uint32_t F_STATUS_WIDTH = 2048; constexpr uint32_t G_STATUS_WIDTH = 3184; const ScreenId SCREENID = 1000; +constexpr ScreenId SCREEN_ID_FULL = 0; +constexpr ScreenId SCREEN_ID_MAIN = 5; } namespace { std::string g_errLog; @@ -76,6 +78,60 @@ void ScreenSessionManagerTest::TearDown() } namespace { + +/** + * @tc.name: SetScreenPowerForFold01 + * @tc.desc: SetScreenPowerForFold01 test + * @tc.type: FUNC + */ +HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForFold01, TestSize.Level1) +{ + if (!FoldScreenStateInternel::IsFoldScreenDevice()){ + GTEST_SKIP(); + } + g_errLog.clear(); + LOG_SetCallback(MyLogCallback); + sptr ssm = sptr::MakeSptr(); + ssm->SetScreenPowerForFold(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_ON_ADVANCED); + ssm->lastPowerForAllStatus_.store(ScreenPowerStatus::POWER_STATUS_ON_ADVANCED); + ssm->lastScreenId_.store(SCREEN_ID_FULL); + ssm->SetScreenPowerForFold(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_OFF); + if (FoldScreenStateInternel::IsSingleDisplayFoldDevice()) { + EXPECT_TRUE(g_errLog.find("permission denied!") != std::string::npos); + } + , ScreenPowerStatus::POWER_STATUS_OFF + +} + +/** + * @tc.name: SetScreenPowerForFold02 + * @tc.desc: SetScreenPowerForFold02 test + * @tc.type: FUNC + */ +HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForFold02, TestSize.Level1) +{ + if (!FoldScreenStateInternel::IsFoldScreenDevice()){ + GTEST_SKIP(); + } + g_errLog.clear(); + LOG_SetCallback(MyLogCallback); +} + +/** + * @tc.name: SetScreenPowerForFold03 + * @tc.desc: SetScreenPowerForFold03 test + * @tc.type: FUNC + */ +HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForFold03, TestSize.Level1) +{ + if (!FoldScreenStateInternel::IsFoldScreenDevice()){ + GTEST_SKIP(); + } + g_errLog.clear(); + LOG_SetCallback(MyLogCallback); +} + + /** * @tc.name: SwitchScrollParam01 * @tc.desc: SwitchScrollParam test -- Gitee From 16d2e42510812d701f3335f0f415d6c0029629a4 Mon Sep 17 00:00:00 2001 From: chaos Date: Thu, 28 Aug 2025 22:56:19 +0800 Subject: [PATCH 3/4] fix2 Signed-off-by: chaos --- .../src/screen_session_manager.cpp | 1 + .../screen_session_manager_test2.cpp | 41 ++++--------------- 2 files changed, 8 insertions(+), 34 deletions(-) diff --git a/window_scene/screen_session_manager/src/screen_session_manager.cpp b/window_scene/screen_session_manager/src/screen_session_manager.cpp index b03ebd0806..9756f4b578 100644 --- a/window_scene/screen_session_manager/src/screen_session_manager.cpp +++ b/window_scene/screen_session_manager/src/screen_session_manager.cpp @@ -2207,6 +2207,7 @@ void ScreenSessionManager::NotifyDisplayChangedByUidInner(sptr disp } }; taskScheduler_->PostAsyncTask(task, "NotifyDisplayChanged"); + TLOGI(WmsLogTag::DMS, "notify end"); } void ScreenSessionManager::GetDisplayHookInfo(int32_t uid, DMHookInfo& hookInfo) diff --git a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp index 77961a19cb..9daa9e93da 100644 --- a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp +++ b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp @@ -103,35 +103,6 @@ HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForFold01, TestSize.Level1) } -/** - * @tc.name: SetScreenPowerForFold02 - * @tc.desc: SetScreenPowerForFold02 test - * @tc.type: FUNC - */ -HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForFold02, TestSize.Level1) -{ - if (!FoldScreenStateInternel::IsFoldScreenDevice()){ - GTEST_SKIP(); - } - g_errLog.clear(); - LOG_SetCallback(MyLogCallback); -} - -/** - * @tc.name: SetScreenPowerForFold03 - * @tc.desc: SetScreenPowerForFold03 test - * @tc.type: FUNC - */ -HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForFold03, TestSize.Level1) -{ - if (!FoldScreenStateInternel::IsFoldScreenDevice()){ - GTEST_SKIP(); - } - g_errLog.clear(); - LOG_SetCallback(MyLogCallback); -} - - /** * @tc.name: SwitchScrollParam01 * @tc.desc: SwitchScrollParam test @@ -1090,7 +1061,7 @@ HWTEST_F(ScreenSessionManagerTest, SetLandscapeLockStatus01, TestSize.Level1) HWTEST_F(ScreenSessionManagerTest, NotifyDisplayChangedByUid, TestSize.Level1) { g_errLog.clear(); - ASSERT_NE(ssm, nullptr); + ASSERT_NE(ssm_, nullptr); ssm_->screenSessionMap_.clear(); ScreenId screenId = 1050; sptr screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0); @@ -1098,8 +1069,10 @@ HWTEST_F(ScreenSessionManagerTest, NotifyDisplayChangedByUid, TestSize.Level1) ssm_->screenSessionMap_[screenId] = screenSession; std::map> screenSessionMapCopy = ssm_->screenSessionMap_; ssm_->NotifyDisplayChangedByUid(screenSessionMapCopy, DisplayChangeEvent::DISPLAY_SIZE_CHANGED, 2002); + ssm_->screenSessionMap_.clear(); ssm_->screenSessionMap_[1051] = nullptr; - ssm_->NotifyDisplayChangedByUid(screenSessionMapCopy, DisplayChangeEvent::DISPLAY_SIZE_CHANGED, 2002); + std::map> screenSessionMapCopy1 = ssm_->screenSessionMap_; + ssm_->NotifyDisplayChangedByUid(screenSessionMapCopy1, DisplayChangeEvent::DISPLAY_SIZE_CHANGED, 2002); EXPECT_TRUE(g_errLog.find("screenSession is nullptr") != std::string::npos); } @@ -1111,13 +1084,13 @@ HWTEST_F(ScreenSessionManagerTest, NotifyDisplayChangedByUid, TestSize.Level1) HWTEST_F(ScreenSessionManagerTest, NotifyDisplayChangedByUidInner, TestSize.Level1) { g_errLog.clear(); - ASSERT_NE(ssm, nullptr); + ASSERT_NE(ssm_, nullptr); ScreenId screenId = 1050; sptr screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0); ASSERT_NE(screenSession, nullptr); - ssm_->NotifyDisplayChangedByUid(screenSession->ConvertToDisplayInfo(), + ssm_->NotifyDisplayChangedByUidInner(screenSession->ConvertToDisplayInfo(), DisplayChangeEvent::DISPLAY_SIZE_CHANGED, 2002); - EXPECT_TRUE(g_errLog.find("uid") != std::string::npos); + EXPECT_TRUE(g_errLog.find("notify end") != std::string::npos); } /** -- Gitee From 92c9f9561de8b0d873090daefefb7299b269d068 Mon Sep 17 00:00:00 2001 From: chaos Date: Thu, 28 Aug 2025 23:03:20 +0800 Subject: [PATCH 4/4] fix4 Signed-off-by: chaos --- .../screen_session_manager_test2.cpp | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp index 9daa9e93da..deebdebcc5 100644 --- a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp +++ b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp @@ -35,8 +35,6 @@ constexpr uint32_t M_STATUS_WIDTH = 1008; constexpr uint32_t F_STATUS_WIDTH = 2048; constexpr uint32_t G_STATUS_WIDTH = 3184; const ScreenId SCREENID = 1000; -constexpr ScreenId SCREEN_ID_FULL = 0; -constexpr ScreenId SCREEN_ID_MAIN = 5; } namespace { std::string g_errLog; @@ -79,30 +77,6 @@ void ScreenSessionManagerTest::TearDown() namespace { -/** - * @tc.name: SetScreenPowerForFold01 - * @tc.desc: SetScreenPowerForFold01 test - * @tc.type: FUNC - */ -HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForFold01, TestSize.Level1) -{ - if (!FoldScreenStateInternel::IsFoldScreenDevice()){ - GTEST_SKIP(); - } - g_errLog.clear(); - LOG_SetCallback(MyLogCallback); - sptr ssm = sptr::MakeSptr(); - ssm->SetScreenPowerForFold(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_ON_ADVANCED); - ssm->lastPowerForAllStatus_.store(ScreenPowerStatus::POWER_STATUS_ON_ADVANCED); - ssm->lastScreenId_.store(SCREEN_ID_FULL); - ssm->SetScreenPowerForFold(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_OFF); - if (FoldScreenStateInternel::IsSingleDisplayFoldDevice()) { - EXPECT_TRUE(g_errLog.find("permission denied!") != std::string::npos); - } - , ScreenPowerStatus::POWER_STATUS_OFF - -} - /** * @tc.name: SwitchScrollParam01 * @tc.desc: SwitchScrollParam test -- Gitee