From 902a60687042f2923abb2455aa7ea69530e4d654 Mon Sep 17 00:00:00 2001 From: WenJunYuan <1903700887@qq.com> Date: Wed, 3 Sep 2025 15:46:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8D=95=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充单测 补充单测 Signed-off-by: WenJunYuan <1903700887@qq.com> --- .../mock_session_manager_service_test.cpp | 144 +++++++++++++++++- .../include/mock_session_manager_service.h | 1 + wmserver/src/mock_session_manager_service.cpp | 47 +++--- 3 files changed, 173 insertions(+), 19 deletions(-) diff --git a/window_scene/test/unittest/mock_session_manager_service_test.cpp b/window_scene/test/unittest/mock_session_manager_service_test.cpp index 87d5b75d9b..4217899118 100644 --- a/window_scene/test/unittest/mock_session_manager_service_test.cpp +++ b/window_scene/test/unittest/mock_session_manager_service_test.cpp @@ -13,7 +13,12 @@ * limitations under the License. */ + +#define private public +#define protected public #include "mock_session_manager_service.h" +#undef private +#undef protected #include #include @@ -22,7 +27,7 @@ #include "scene_session_manager.h" #include "session_manager_service_proxy.h" -#include "../mock/mock_accesstoken_kit.h" +#include "mock_accesstoken_kit.h" #include "wm_common.h" using namespace testing; @@ -268,6 +273,15 @@ HWTEST(MockSessionManagerServiceTest, UnregisterSMSRecoverListener, TestSize.Lev ErrCode resultCode = mockMockSms.UnregisterSMSRecoverListener(userId); EXPECT_EQ(resultCode, ERR_OK); + EXPECT_CALL(mockMockSms, GetUserIdByCallingUid()) + .Times(1) + .WillOnce(Return(0)); + std::map> systemAppSmsRecoverListenerMap; + systemAppSmsRecoverListenerMap[999090] = nullptr; + mockMockSms.systemAppSmsRecoverListenerMap_[0] = systemAppSmsRecoverListenerMap; + resultCode = mockMockSms.UnregisterSMSRecoverListener(userId); + EXPECT_EQ(resultCode, ERR_OK); + // 2.Mock GetUserIdByCallingUid() 返回系统用户id 0 EXPECT_CALL(mockMockSms, GetUserIdByCallingUid()) .Times(1) @@ -343,6 +357,15 @@ HWTEST(MockSessionManagerServiceTest, UnregisterSMSLiteRecoverListener, TestSize ErrCode resultCode = mockMockSms.UnregisterSMSLiteRecoverListener(userId); EXPECT_EQ(resultCode, ERR_OK); + std::map> systemAppSmsLiteRecoverListenerMap; + systemAppSmsLiteRecoverListenerMap[999090] = nullptr; + mockMockSms.systemAppSmsLiteRecoverListenerMap_[0] = systemAppSmsLiteRecoverListenerMap; + EXPECT_CALL(mockMockSms, GetUserIdByCallingUid()) + .Times(1) + .WillOnce(Return(0)); + resultCode = mockMockSms.UnregisterSMSLiteRecoverListener(userId); + EXPECT_EQ(resultCode, ERR_OK); + // 2.Mock GetUserIdByCallingUid() 返回系统用户id 0 EXPECT_CALL(mockMockSms, GetUserIdByCallingUid()) .Times(1) @@ -405,6 +428,18 @@ HWTEST(MockSessionManagerServiceTest, NotifySceneBoardAvailableToSystemAppClient int32_t userId = 100; MockMockSessionManagerService mockMockSms; mockMockSms.NotifySceneBoardAvailableToSystemAppClient(userId); + + mockMockSms.userId2ScreenIdMap_[100] = 0; + std::map> systemAppSmsRecoverListenerMap; + systemAppSmsRecoverListenerMap[999090] = nullptr; + mockMockSms.systemAppSmsRecoverListenerMap_[0] = systemAppSmsRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToSystemAppClient(userId); + + mockMockSms.sessionManagerServiceMap_[100] = sptr::MakeSptr(); + sptr mockRemoteObject = sptr::MakeSptr(); + systemAppSmsRecoverListenerMap[999090] = iface_cast(mockRemoteObject); + mockMockSms.systemAppSmsRecoverListenerMap_[0] = systemAppSmsRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToSystemAppClient(userId); } /** @@ -417,6 +452,17 @@ HWTEST(MockSessionManagerServiceTest, NotifySceneBoardAvailableToClient, TestSiz int32_t userId = 100; MockMockSessionManagerService mockMockSms; mockMockSms.NotifySceneBoardAvailableToClient(userId); + + std::map> smsRecoverListenerMap; + smsRecoverListenerMap[999090] = nullptr; + mockMockSms.smsRecoverListenerMap_[userId] = smsRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToClient(userId); + + mockMockSms.sessionManagerServiceMap_[100] = sptr::MakeSptr(); + sptr mockRemoteObject = sptr::MakeSptr(); + smsRecoverListenerMap[999090] = iface_cast(mockRemoteObject); + mockMockSms.smsRecoverListenerMap_[userId] = smsRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToClient(userId); } /** @@ -429,6 +475,18 @@ HWTEST(MockSessionManagerServiceTest, NotifySceneBoardAvailableToSystemAppLiteCl int32_t userId = 100; MockMockSessionManagerService mockMockSms; mockMockSms.NotifySceneBoardAvailableToSystemAppLiteClient(userId); + + mockMockSms.userId2ScreenIdMap_[100] = 0; + std::map> systemAppSmsLiteRecoverListenerMap; + systemAppSmsLiteRecoverListenerMap[999090] = nullptr; + mockMockSms.systemAppSmsLiteRecoverListenerMap_[0] = systemAppSmsLiteRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToSystemAppLiteClient(userId); + + mockMockSms.sessionManagerServiceMap_[100] = sptr::MakeSptr(); + sptr mockRemoteObject = sptr::MakeSptr(); + systemAppSmsLiteRecoverListenerMap[999090] = iface_cast(mockRemoteObject); + mockMockSms.systemAppSmsLiteRecoverListenerMap_[0] = systemAppSmsLiteRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToSystemAppLiteClient(userId); } /** @@ -441,6 +499,17 @@ HWTEST(MockSessionManagerServiceTest, NotifySceneBoardAvailableToLiteClient, Tes int32_t userId = 100; MockMockSessionManagerService mockMockSms; mockMockSms.NotifySceneBoardAvailableToLiteClient(userId); + + std::map> smsLiteRecoverListenerMap; + smsLiteRecoverListenerMap[999090] = nullptr; + mockMockSms.smsLiteRecoverListenerMap_[userId] = smsLiteRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToLiteClient(userId); + + mockMockSms.sessionManagerServiceMap_[100] = sptr::MakeSptr(); + sptr mockRemoteObject = sptr::MakeSptr(); + smsLiteRecoverListenerMap[999090] = iface_cast(mockRemoteObject); + mockMockSms.smsLiteRecoverListenerMap_[userId] = smsLiteRecoverListenerMap; + mockMockSms.NotifySceneBoardAvailableToLiteClient(userId); } /** @@ -469,6 +538,18 @@ HWTEST(MockSessionManagerServiceTest, NotifyWMSConnectionChangedToClient, TestSi bool isConnnected = true; MockMockSessionManagerService mockMockSms; mockMockSms.NotifyWMSConnectionChangedToClient(wmsUserId, screenId, isConnnected); + + mockMockSms.userId2ScreenIdMap_[100] = 0; + std::map> systemAppSmsRecoverListenerMap; + systemAppSmsRecoverListenerMap[999090] = nullptr; + mockMockSms.systemAppSmsRecoverListenerMap_[0] = systemAppSmsRecoverListenerMap; + mockMockSms.NotifyWMSConnectionChangedToClient(wmsUserId, screenId, isConnnected); + + mockMockSms.sessionManagerServiceMap_[100] = sptr::MakeSptr(); + sptr mockRemoteObject = sptr::MakeSptr(); + systemAppSmsRecoverListenerMap[999090] = iface_cast(mockRemoteObject); + mockMockSms.systemAppSmsRecoverListenerMap_[0] = systemAppSmsRecoverListenerMap; + mockMockSms.NotifyWMSConnectionChangedToClient(wmsUserId, screenId, isConnnected); } /** @@ -483,6 +564,18 @@ HWTEST(MockSessionManagerServiceTest, NotifyWMSConnectionChangedToLiteClient, Te bool isConnnected = true; MockMockSessionManagerService mockMockSms; mockMockSms.NotifyWMSConnectionChangedToLiteClient(wmsUserId, screenId, isConnnected); + + mockMockSms.userId2ScreenIdMap_[100] = 0; + std::map> systemAppSmsLiteRecoverListenerMap; + systemAppSmsLiteRecoverListenerMap[999090] = nullptr; + mockMockSms.systemAppSmsLiteRecoverListenerMap_[0] = systemAppSmsLiteRecoverListenerMap; + mockMockSms.NotifyWMSConnectionChangedToLiteClient(wmsUserId, screenId, isConnnected); + + mockMockSms.sessionManagerServiceMap_[100] = sptr::MakeSptr(); + sptr mockRemoteObject = sptr::MakeSptr(); + systemAppSmsLiteRecoverListenerMap[999090] = iface_cast(mockRemoteObject); + mockMockSms.systemAppSmsLiteRecoverListenerMap_[0] = systemAppSmsLiteRecoverListenerMap; + mockMockSms.NotifyWMSConnectionChangedToLiteClient(wmsUserId, screenId, isConnnected); } /** @@ -517,6 +610,55 @@ HWTEST(MockSessionManagerServiceTest, GetSceneSessionManagerCommon, TestSize.Lev resultCode = mockMockSms.GetSceneSessionManagerCommon(99999, result, isLite); EXPECT_EQ(resultCode, ERR_INVALID_VALUE); } + +/** + * @tc.name: DefaultSceneSessionManager + * @tc.desc: test the function of DefaultSceneSessionManager + * @tc.type: FUNC + */ +HWTEST(MockSessionManagerServiceTest, DefaultSceneSessionManager, TestSize.Level1) +{ + MockMockSessionManagerService mockMockSms; + mockMockSms.defaultWMSUserId_ = 100; + mockMockSms.sessionManagerServiceMap_[100] = sptr::MakeSptr(); + mockMockSms.defaultSceneSessionManager_ = sptr::MakeSptr(); + + std::vector args = {"arg1"}; + std::string info = "info"; + std::string& dumpInfo = info; + mockMockSms.DumpSessionInfo(args, dumpInfo); + std::vector windowIdList = {111, 222}; + std::vector surfaceNodeIds = {111, 222}; + std::vector persistentIds = {111, 222}; + std::vector privacyWindowTags = {"tag1", "tag2"}; + mockMockSms.GetProcessSurfaceNodeIdByPersistentId(123, windowIdList, surfaceNodeIds); + mockMockSms.AddSkipSelfWhenShowOnVirtualScreenList(persistentIds); + mockMockSms.RemoveSkipSelfWhenShowOnVirtualScreenList(persistentIds); + mockMockSms.SetScreenPrivacyWindowTagSwitch(0, privacyWindowTags, false); +} + +/** + * @tc.name: NotifyWMSConnectionStatus + * @tc.desc: test the function of NotifyWMSConnectionStatus + * @tc.type: FUNC + */ +HWTEST(MockSessionManagerServiceTest, NotifyWMSConnectionStatus, TestSize.Level1) +{ + MockMockSessionManagerService mockMockSms; + int32_t userId = 100; + mockMockSms.wmsConnectionStatusMap_[userId] = true; + + sptr mockRemoteObject = sptr::MakeSptr(); + sptr smsListener = + iface_cast(mockRemoteObject); + ErrCode errCode = mockMockSms.NotifyWMSConnectionStatus(userId, smsListener); + EXPECT_EQ(errCode, ERR_DEAD_OBJECT); + + mockMockSms.sessionManagerServiceMap_[userId] = sptr::MakeSptr(); + mockMockSms.userId2ScreenIdMap_[userId] = 0; + errCode = mockMockSms.NotifyWMSConnectionStatus(userId, smsListener); + EXPECT_EQ(errCode, ERR_OK); +} } // namespace } // namespace Rosen } // namespace OHOS \ No newline at end of file diff --git a/wmserver/include/mock_session_manager_service.h b/wmserver/include/mock_session_manager_service.h index 2095af0ee2..fdfb2189e1 100644 --- a/wmserver/include/mock_session_manager_service.h +++ b/wmserver/include/mock_session_manager_service.h @@ -144,6 +144,7 @@ private: */ int32_t defaultWMSUserId_; int32_t defaultScreenId_; + std::mutex defaultWMSUserIdMutex_; std::mutex userId2ScreenIdMapMutex_; std::map userId2ScreenIdMap_; std::shared_mutex smsDeathRecipientMapLock_; diff --git a/wmserver/src/mock_session_manager_service.cpp b/wmserver/src/mock_session_manager_service.cpp index fdb55616eb..ea0213edae 100644 --- a/wmserver/src/mock_session_manager_service.cpp +++ b/wmserver/src/mock_session_manager_service.cpp @@ -72,7 +72,7 @@ public: void OnRemoteDied(const wptr& wptrDeath) override { - TLOGI(WmsLogTag::WMS_RECOVER, "Client died, pid = %{public}d, isLite = %{public}d", pid_, isLite_); + TLOGD(WmsLogTag::WMS_RECOVER, "Client died, pid = %{public}d, isLite = %{public}d", pid_, isLite_); if (isLite_) { MockSessionManagerService::GetInstance().UnregisterSMSLiteRecoverListener(userId_, displayId_, pid_); } else { @@ -94,7 +94,7 @@ MockSessionManagerService::SMSDeathRecipient::SMSDeathRecipient(int32_t userId) void MockSessionManagerService::SMSDeathRecipient::OnRemoteDied(const wptr& object) { - TLOGI(WmsLogTag::WMS_MULTI_USER, "Scb died with userId_=%{public}d, screenId_=%{public}d", userId_, screenId_); + TLOGW(WmsLogTag::WMS_MULTI_USER, "Scb died with userId_=%{public}d, screenId_=%{public}d", userId_, screenId_); MockSessionManagerService::GetInstance().NotifyWMSConnectionChanged(userId_, screenId_, false); MockSessionManagerService::GetInstance().RemoveSMSDeathRecipientByUserId(userId_); MockSessionManagerService::GetInstance().RemoveSessionManagerServiceByUserId(userId_); @@ -207,6 +207,14 @@ bool MockSessionManagerService::SetSessionManagerService(const sptr lock(defaultWMSUserIdMutex_); + if (defaultWMSUserId_ == INVALID_USER_ID) { + defaultWMSUserId_ = clientUserId; + TLOGI(WmsLogTag::WMS_MULTI_USER, "set defaultWMSUserId_ = %{public}d", clientUserId); + } + } if (clientUserId <= INVALID_USER_ID) { TLOGE(WmsLogTag::WMS_MULTI_USER, "userId is illegal: %{public}d", clientUserId); return false; @@ -335,12 +343,12 @@ ErrCode MockSessionManagerService::RegisterSMSRecoverListener(const sptr lock(defaultWMSUserIdMutex_); + if (screenId == defaultScreenId_) { + defaultWMSUserId_ = userId; + TLOGI(WmsLogTag::WMS_MULTI_USER, "set defaultWMSUserId_ = %{public}d", defaultWMSUserId_); + } } { std::lock_guard lock(userId2ScreenIdMapMutex_); @@ -773,7 +784,7 @@ void MockSessionManagerService::NotifyWMSConnectionChangedToClient( wmsUserId, isConnected, systemAppSmsRecoverListenerMap->size()); auto sessionManagerService = GetSessionManagerServiceByUserId(wmsUserId); if (sessionManagerService == nullptr) { - TLOGE(WmsLogTag::WMS_RECOVER, "SessionManagerService is null"); + TLOGE(WmsLogTag::WMS_MULTI_USER, "SessionManagerService is null"); return; } for (auto& iter : *systemAppSmsRecoverListenerMap) { @@ -799,7 +810,7 @@ void MockSessionManagerService::NotifyWMSConnectionChangedToLiteClient( wmsUserId, isConnected, systemAppSmsLiteRecoverListenerMap->size()); auto sessionManagerService = GetSessionManagerServiceByUserId(wmsUserId); if (sessionManagerService == nullptr) { - TLOGE(WmsLogTag::WMS_RECOVER, "SessionManagerService is null"); + TLOGE(WmsLogTag::WMS_MULTI_USER, "SessionManagerService is null"); return; } for (auto& iter : *systemAppSmsLiteRecoverListenerMap) { @@ -1223,7 +1234,7 @@ ErrCode MockSessionManagerService::SetSnapshotSkipByIdNamesMapInner( return ERR_OK; } -ErrCode MockSessionManagerService::ValidateParameters(int32_t clientUserId, int32_t userId) const +ErrCode MockSessionManagerService::ValidateParameters(int32_t clientUserId) const { if (clientUserId <= INVALID_USER_ID) { TLOGE(WmsLogTag::WMS_RECOVER, "clientUserId is illegal: %{public}d", clientUserId); @@ -1257,7 +1268,7 @@ ErrCode MockSessionManagerService::NotifyWMSConnectionStatus(int32_t userId, if (smsListener && isWMSConnected) { auto sessionManagerService = GetSessionManagerServiceByUserId(userId); if (sessionManagerService == nullptr) { - TLOGE(WmsLogTag::WMS_RECOVER, "SessionManagerService is null"); + TLOGE(WmsLogTag::WMS_MULTI_USER, "SessionManagerService is null"); return ERR_DEAD_OBJECT; } TLOGI(WmsLogTag::WMS_MULTI_USER, "wms is already connected, notify client"); @@ -1274,7 +1285,7 @@ ErrCode MockSessionManagerService::NotifyWMSConnectionStatus(int32_t userId, int32_t MockSessionManagerService::GetUserIdByCallingUid() { int32_t uid = IPCSkeleton::GetCallingUid(); - TLOGI(WmsLogTag::WMS_MULTI_USER, "get calling uid(%{public}d)", uid); + TLOGD(WmsLogTag::WMS_MULTI_USER, "get calling uid(%{public}d)", uid); if (uid <= INVALID_UID) { TLOGE(WmsLogTag::WMS_MULTI_USER, "uid is illegal: %{public}d", uid); return INVALID_USER_ID; -- Gitee