diff --git a/wmserver/include/mock_session_manager_service.h b/wmserver/include/mock_session_manager_service.h index 2095af0ee20057fafaa26d3e69534321a1c93a4b..8609e230a9982cac4743aaee55d26330a68ace54 100644 --- a/wmserver/include/mock_session_manager_service.h +++ b/wmserver/include/mock_session_manager_service.h @@ -99,7 +99,7 @@ private: sptr GetSessionManagerServiceByUserId(int32_t userId); void RemoveSessionManagerServiceByUserId(int32_t userId); bool RegisterMockSessionManagerService(); - ErrCode ValidateParameters(int32_t clientUserId, int32_t userId) const; + ErrCode ValidateParameters(int32_t clientUserId) const; ErrCode GetForegroundOsAccountDisplayId(int32_t userId, DisplayId& displayId) const; ErrCode NotifyWMSConnectionStatus(int32_t userId, const sptr& smsListener); virtual int32_t GetUserIdByCallingUid(); @@ -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 fdb55616eb47d1ce3d9a9efc0155951659ed2731..ea0213edaeb16cbb07b29cd40659db54f60ba70a 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;