diff --git a/dm/src/display_manager.cpp b/dm/src/display_manager.cpp index 3dba1825739ea67c0f4f2a3f83ff4f49b158eed4..7893ddceb9f8e2d4b6c08a051a0d7786ab7cc49b 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 4f3816a70b6a8517f4bbb1f5b6c29390eca998cf..c648255da26f95b80e5676487bfba17244eea402 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 02cfb6fca1b394d6b7f974e406f07d8c6a6c876c..e9c83eed1f8ecb722ca311904680523d06c9e818 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 c79db46195abb69f5fd467e3d8303d4134d0f91c..757fd8879575444d633f35f5763b7cd60cb8ebc9 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 b4124193318a72787c97f234a299eb3550cff6d6..fd6a329872389e16b9b074273aca146341ef2424 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 2dd44678cc17dd290ee57a0116861ab353539d04..e514bc70c2e5af808e7aee8943207e94892a7a7b 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 adf663a1fb6bbcb76bd346703b9f8b459c518c9a..ae76e7da6e4bf811547f21f013938ce9ee1dd71d 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 e95160870f47c873a421bb45c2cca9cb8a03c687..fbf3279385a42d9aad102d49d334f070a7dad0f0 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 5efb949e4e8dadba7cdc6a1c811dd1e96e13105e..427a1bec8f43988ba2c37077d2d45097adb63918 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/screen_session_manager/src/screen_session_manager.cpp b/window_scene/screen_session_manager/src/screen_session_manager.cpp index b03ebd080616cda515ad36eeec031c28b5aa744b..9756f4b5789541dceeb0265c4b809cdd0de49e6d 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 1db6b56df1d29385c7295250ab2feac4d5d50b86..deebdebcc501da45659ee9179a2a67628f31abe1 100644 --- a/window_scene/test/dms_unittest/screen_session_manager_test2.cpp +++ b/window_scene/test/dms_unittest/screen_session_manager_test2.cpp @@ -76,6 +76,7 @@ void ScreenSessionManagerTest::TearDown() } namespace { + /** * @tc.name: SwitchScrollParam01 * @tc.desc: SwitchScrollParam test @@ -1026,7 +1027,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 @@ -1035,7 +1035,7 @@ chaos 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); @@ -1043,8 +1043,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); } @@ -1056,13 +1058,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); } /**