diff --git a/services/implementation/include/device_manager_service_impl.h b/services/implementation/include/device_manager_service_impl.h index 4164ad304f71b49208167be35449d9f83746736b..20d8741a9010a7979f007c53784f2a7d1228317e 100644 --- a/services/implementation/include/device_manager_service_impl.h +++ b/services/implementation/include/device_manager_service_impl.h @@ -178,7 +178,7 @@ public: void DeleteAlwaysAllowTimeOut(); void CheckDeleteCredential(const std::string &remoteUdid, int32_t remoteUserId); void HandleCredentialDeleted(const char *credId, const char *credInfo, const std::string &localUdid, - std::string &remoteUdid); + std::string &remoteUdid, bool &isSendBroadCast); void HandleShareUnbindBroadCast(const std::string &credId, const int32_t &userId, const std::string &localUdid); int32_t CheckDeviceInfoPermission(const std::string &localUdid, const std::string &peerDeviceId); int32_t DeleteAcl(const std::string &sessionName, const std::string &localUdid, const std::string &remoteUdid, diff --git a/services/implementation/include/device_manager_service_impl_lite.h b/services/implementation/include/device_manager_service_impl_lite.h index 54ccc4b6bde2c88f4d9cfe75c02da5ddea80a348..8ec4d49a25f0968d43a1658e3728e7f48ea24dbe 100644 --- a/services/implementation/include/device_manager_service_impl_lite.h +++ b/services/implementation/include/device_manager_service_impl_lite.h @@ -164,7 +164,7 @@ public: void DeleteAlwaysAllowTimeOut(); void CheckDeleteCredential(const std::string &remoteUdid, int32_t remoteUserId); void HandleCredentialDeleted(const char *credId, const char *credInfo, const std::string &localUdid, - std::string &remoteUdid); + std::string &remoteUdid, bool &isSendBroadCast); void HandleShareUnbindBroadCast(const std::string &credId, const int32_t &userId, const std::string &localUdid); int32_t CheckDeviceInfoPermission(const std::string &localUdid, const std::string &peerDeviceId); void HandleServiceUnBindEvent(int32_t userId, const std::string &remoteUdid, diff --git a/services/implementation/src/device_manager_service_impl.cpp b/services/implementation/src/device_manager_service_impl.cpp index 36dccf96aa6b107eb30ad7218818dec8efd90ffd..614ef0ae61e8961508a18b3e4e79b649037b87e4 100644 --- a/services/implementation/src/device_manager_service_impl.cpp +++ b/services/implementation/src/device_manager_service_impl.cpp @@ -2654,7 +2654,7 @@ void DeviceManagerServiceImpl::CheckDeleteCredential(const std::string &remoteUd } void DeviceManagerServiceImpl::HandleCredentialDeleted(const char *credId, const char *credInfo, - const std::string &localUdid, std::string &remoteUdid) + const std::string &localUdid, std::string &remoteUdid, bool &isSendBroadCast) { std::vector profiles = DeviceProfileConnector::GetInstance().GetAccessControlProfile(); @@ -2689,6 +2689,7 @@ void DeviceManagerServiceImpl::HandleCredentialDeleted(const char *credId, const item.GetAccessee().GetAccesseeUserId() == localUserId && item.GetAccesser().GetAccesserUserId() == userId && item.GetAccesser().GetAccesserDeviceId() == remoteUdid)) { + isSendBroadCast = true; DeviceProfileConnector::GetInstance().DeleteAccessControlById(item.GetAccessControlId()); } } diff --git a/services/implementation/src/device_manager_service_impl_lite.cpp b/services/implementation/src/device_manager_service_impl_lite.cpp index 83aa48f44a37f2ed7664bc69a8c6867b1b1517da..445f2b0705a6c32ed583a1a5d39ffb8a6074e6c2 100644 --- a/services/implementation/src/device_manager_service_impl_lite.cpp +++ b/services/implementation/src/device_manager_service_impl_lite.cpp @@ -331,12 +331,13 @@ int32_t DeviceManagerServiceImpl::ImportAuthCode(const std::string &pkgName, con } void DeviceManagerServiceImpl::HandleCredentialDeleted(const char *credId, const char *credInfo, - const std::string &localUdid, std::string &remoteUdid) + const std::string &localUdid, std::string &remoteUdid, bool &isSendBroadCast) { (void)credId; (void)credInfo; (void)localUdid; (void)remoteUdid; + (void)isSendBroadCast; return; } diff --git a/services/service/include/idevice_manager_service_impl.h b/services/service/include/idevice_manager_service_impl.h index 48a3acbbacbf2c7ef7849e1b1d84e0d3f17bc574..949542bedeb80a1f942cc5aecc0edaf66183fd77 100644 --- a/services/service/include/idevice_manager_service_impl.h +++ b/services/service/include/idevice_manager_service_impl.h @@ -268,7 +268,7 @@ public: virtual void DeleteAlwaysAllowTimeOut() = 0; virtual void CheckDeleteCredential(const std::string &remoteUdid, int32_t remoteUserId) = 0; virtual void HandleCredentialDeleted(const char *credId, const char *credInfo, const std::string &localUdid, - std::string &remoteUdid) = 0; + std::string &remoteUdid, bool &isSendBroadCast) = 0; virtual void HandleShareUnbindBroadCast(const std::string &credId, const int32_t &userId, const std::string &localUdid) = 0; virtual int32_t CheckDeviceInfoPermission(const std::string &localUdid, const std::string &peerDeviceId) = 0; diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index edcb3401ca905e5de577e89c893cc1e2cb5b99af..2cd845b22fd9328a04901df260cbdf194caa8fcc 100644 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -3123,11 +3123,16 @@ void DeviceManagerService::HandleCredentialDeleted(const char *credId, const cha return; } std::string remoteUdid = ""; - dmServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid); + bool isSendBroadCast = false; + dmServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid, isSendBroadCast); if (remoteUdid.empty()) { LOGE("HandleCredentialDeleted failed, remoteUdid is empty."); return; } + if (!isSendBroadCast) { + LOGI("HandleCredentialDeleted not need to send broadcast."); + return; + } std::vector peerUdids; peerUdids.emplace_back(remoteUdid); SendShareTypeUnBindBroadCast(credId, MultipleUserConnector::GetCurrentAccountUserID(), peerUdids); diff --git a/test/unittest/UTTest_device_manager_service_impl_first.cpp b/test/unittest/UTTest_device_manager_service_impl_first.cpp index dab94b6c117912b10f5a05939f0e327e233fe307..2aa3b8ee9398795febdfae28bd8c24a866154337 100644 --- a/test/unittest/UTTest_device_manager_service_impl_first.cpp +++ b/test/unittest/UTTest_device_manager_service_impl_first.cpp @@ -212,6 +212,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_001, testing const char *credInfo = "invalid_json"; std::string localUdid = "localUdid"; std::string remoteUdid; + bool isSendBroadCast = false; std::vector profiles; @@ -220,7 +221,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_001, testing EXPECT_CALL(*deviceProfileConnectorMock_, DeleteAccessControlById(_)) .Times(0); - deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid); + deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid, isSendBroadCast); } HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_002, testing::ext::TestSize.Level1) @@ -229,6 +230,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_002, testing const char *credInfo = R"({"deviceId": "remoteUdid", "userId": 1})"; std::string localUdid = "localUdid"; std::string remoteUdid; + bool isSendBroadCast = false; std::vector profiles; AccessControlProfile profile; @@ -239,7 +241,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_002, testing .WillOnce(Return(profiles)); EXPECT_CALL(*deviceProfileConnectorMock_, DeleteAccessControlById(_)).Times(0); - deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid); + deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid, isSendBroadCast); } HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_003, testing::ext::TestSize.Level1) @@ -248,6 +250,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_003, testing const char *credInfo = R"({"deviceId": "remoteUdid", "userId": 1})"; std::string localUdid = "localUdid"; std::string remoteUdid; + bool isSendBroadCast = false; std::vector profiles; AccessControlProfile profile; @@ -265,7 +268,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_003, testing EXPECT_CALL(*deviceProfileConnectorMock_, DeleteAccessControlById(_)) .Times(1); - deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid); + deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid, isSendBroadCast); } HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_004, testing::ext::TestSize.Level1) @@ -274,6 +277,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_004, testing const char *credInfo = R"({"deviceId": "remoteUdid", "userId": 1})"; std::string localUdid = "localUdid"; std::string remoteUdid; + bool isSendBroadCast = false; std::vector profiles; AccessControlProfile profile; @@ -291,7 +295,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleCredentialDeleted_004, testing EXPECT_CALL(*deviceProfileConnectorMock_, DeleteAccessControlById(_)) .Times(1); - deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid); + deviceManagerServiceImpl_->HandleCredentialDeleted(credId, credInfo, localUdid, remoteUdid, isSendBroadCast); } HWTEST_F(DeviceManagerServiceImplFirstTest, HandleShareUnbindBroadCast_001, testing::ext::TestSize.Level1) diff --git a/test/unittest/UTTest_device_manager_service_two.cpp b/test/unittest/UTTest_device_manager_service_two.cpp index 1ecdd86fa305cbc697cf4487d2fe5676f5ce7a0b..8e6105395f3986bea8168729ec0d162344f15060 100644 --- a/test/unittest/UTTest_device_manager_service_two.cpp +++ b/test/unittest/UTTest_device_manager_service_two.cpp @@ -1880,7 +1880,7 @@ HWTEST_F(DeviceManagerServiceTest, SendShareTypeUnBindBroadCast_001, testing::ex HWTEST_F(DeviceManagerServiceTest, HandleCredentialDeleted_002, testing::ext::TestSize.Level1) { - EXPECT_CALL(*deviceManagerServiceImplMock_, HandleCredentialDeleted(_, _, _, _)).Times(0); + EXPECT_CALL(*deviceManagerServiceImplMock_, HandleCredentialDeleted(_, _, _, _, _)).Times(0); DeviceManagerService::GetInstance().HandleCredentialDeleted(nullptr, "credInfo"); } diff --git a/test/unittest/mock/device_manager_service_impl_mock.cpp b/test/unittest/mock/device_manager_service_impl_mock.cpp index e939ec1b3e08ab634dcc34ea904100a01e8b474c..80ac6e8c6370708a6ab95d8a9486cce16b05a09c 100644 --- a/test/unittest/mock/device_manager_service_impl_mock.cpp +++ b/test/unittest/mock/device_manager_service_impl_mock.cpp @@ -73,10 +73,10 @@ bool DeviceManagerServiceImpl::CheckSharePeerSrc(const std::string &peerUdid, co } void DeviceManagerServiceImpl::HandleCredentialDeleted(const char *credId, - const char *credInfo, const std::string &localUdid, std::string &remoteUdid) + const char *credInfo, const std::string &localUdid, std::string &remoteUdid, bool &isSendBroadCast) { DmDeviceManagerServiceImpl::dmDeviceManagerServiceImpl->HandleCredentialDeleted(credId, - credInfo, localUdid, remoteUdid); + credInfo, localUdid, remoteUdid, isSendBroadCast); } void DeviceManagerServiceImpl::HandleShareUnbindBroadCast(const std::string &credId, const int32_t &userId, const std::string &localUdid) diff --git a/test/unittest/mock/device_manager_service_impl_mock.h b/test/unittest/mock/device_manager_service_impl_mock.h index a8d9e45a899c4865e799be0c5b46ea15c1cd4e13..2886de7e3a61725e38eaf81aee69f52846be07fd 100644 --- a/test/unittest/mock/device_manager_service_impl_mock.h +++ b/test/unittest/mock/device_manager_service_impl_mock.h @@ -39,7 +39,7 @@ public: int32_t bindLevel, const std::string &extra) = 0; virtual bool CheckSharePeerSrc(const std::string &peerUdid, const std::string &localUdid) = 0; virtual void HandleCredentialDeleted(const char *credId, const char *credInfo, const std::string &localUdid, - std::string &remoteUdid) = 0; + std::string &remoteUdid, bool &isSendBroadCast) = 0; virtual void HandleShareUnbindBroadCast(const std::string &credId, const int32_t &userId, const std::string &localUdid) = 0; virtual int32_t CheckDeviceInfoPermission(const std::string &localUdid, const std::string &peerDeviceId) = 0; @@ -67,7 +67,7 @@ public: MOCK_METHOD(int32_t, UnBindDevice, (const std::string &, const std::string &, int32_t, const std::string &)); MOCK_METHOD(bool, CheckSharePeerSrc, (const std::string &peerUdid, const std::string &localUdid)); MOCK_METHOD(void, HandleCredentialDeleted, (const char *, const char *, const std::string &, - std::string &)); + std::string &, bool &)); MOCK_METHOD(void, HandleShareUnbindBroadCast, (const std::string &, const int32_t &, const std::string &)); MOCK_METHOD(int32_t, CheckDeviceInfoPermission, (const std::string &, const std::string &)); MOCK_METHOD(void, HandleAppUnBindEvent, (int32_t remoteUserId, const std::string &remoteUdid, int32_t tokenId));