diff --git a/services/service/include/device_manager_service.h b/services/service/include/device_manager_service.h index 709e7301f82ebded3a8b48bc725e3199ce8e06b4..e42507ee2aeeddc198bde1545cd8205ce69a2730 100644 --- a/services/service/include/device_manager_service.h +++ b/services/service/include/device_manager_service.h @@ -64,9 +64,9 @@ public: void DelAllRelateShip(); - DM_EXPORT void RegisterCallerAppId(const std::string &pkgName); + DM_EXPORT void RegisterCallerAppId(const std::string &pkgName, const int32_t userId); - DM_EXPORT void UnRegisterCallerAppId(const std::string &pkgName); + DM_EXPORT void UnRegisterCallerAppId(const std::string &pkgName, const int32_t userId); void UninitSoftbusListener(); diff --git a/services/service/include/device_manager_service_listener.h b/services/service/include/device_manager_service_listener.h index 216835016a96327f3e1961ba1e80cab2facb1e72..8eaf51139f5595f2fd6ef65046e06d3e2b20114e 100644 --- a/services/service/include/device_manager_service_listener.h +++ b/services/service/include/device_manager_service_listener.h @@ -109,9 +109,9 @@ private: void RemoveOnlinePkgName(const DmDeviceInfo &info); #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) DM_EXPORT int32_t ConvertUdidHashToAnoyAndSave(const std::string &pkgName, - DmDeviceInfo &deviceInfo); + DmDeviceInfo &deviceInfo, const int32_t userId); int32_t ConvertUdidHashToAnoyDeviceId(const std::string &pkgName, const std::string &udidHash, - std::string &anoyDeviceId); + std::string &anoyDeviceId, const int32_t userId); #endif std::vector GetWhiteListSAProcessInfo(DmCommonNotifyEvent dmCommonNotifyEvent); std::vector GetNotifyProcessInfoByUserId(int32_t userId, DmCommonNotifyEvent dmCommonNotifyEvent); diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index 45925abffa3eadb13348f4b1052ef81e64597065..4a55f4814a1ca677e7afe8d486db617dbaee6fe0 100644 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -371,14 +371,14 @@ DM_EXPORT void DeviceManagerService::UninitDMServiceListener() LOGI("Uninit."); } -DM_EXPORT void DeviceManagerService::RegisterCallerAppId(const std::string &pkgName) +DM_EXPORT void DeviceManagerService::RegisterCallerAppId(const std::string &pkgName, const int32_t userId) { - AppManager::GetInstance().RegisterCallerAppId(pkgName); + AppManager::GetInstance().RegisterCallerAppId(pkgName, userId); } -DM_EXPORT void DeviceManagerService::UnRegisterCallerAppId(const std::string &pkgName) +DM_EXPORT void DeviceManagerService::UnRegisterCallerAppId(const std::string &pkgName, const int32_t userId) { - AppManager::GetInstance().UnRegisterCallerAppId(pkgName); + AppManager::GetInstance().UnRegisterCallerAppId(pkgName, userId); } int32_t DeviceManagerService::GetTrustedDeviceList(const std::string &pkgName, const std::string &extra, diff --git a/services/service/src/device_manager_service_listener.cpp b/services/service/src/device_manager_service_listener.cpp index bc47a6a81fc2c3d3908b7aa811a1d160a185c12a..f917117d4aa2a5fed7ead810c8b06ea515126196 100644 --- a/services/service/src/device_manager_service_listener.cpp +++ b/services/service/src/device_manager_service_listener.cpp @@ -134,12 +134,12 @@ void DeviceManagerServiceListener::SetDeviceInfo(std::shared_ptrSetDeviceInfo(dmDeviceInfo); pReq->SetDeviceBasicInfo(deviceBasicInfo); return; } - ConvertUdidHashToAnoyAndSave(processInfo.pkgName, dmDeviceInfo); + ConvertUdidHashToAnoyAndSave(processInfo.pkgName, dmDeviceInfo, processInfo.userId); DmDeviceBasicInfo dmDeviceBasicInfo = deviceBasicInfo; if (memset_s(dmDeviceBasicInfo.deviceId, DM_MAX_DEVICE_ID_LEN, 0, DM_MAX_DEVICE_ID_LEN) != DM_OK) { LOGE("ConvertNodeBasicInfoToDmDevice memset failed."); @@ -270,7 +270,7 @@ void DeviceManagerServiceListener::OnDeviceFound(const ProcessInfo &processInfo, std::shared_ptr pRsp = std::make_shared(); DmDeviceInfo deviceInfo = info; #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) - ConvertUdidHashToAnoyAndSave(processInfo.pkgName, deviceInfo); + ConvertUdidHashToAnoyAndSave(processInfo.pkgName, deviceInfo, processInfo.userId); #endif DmDeviceBasicInfo devBasicInfo; ConvertDeviceInfoToDeviceBasicInfo(processInfo.pkgName, deviceInfo, devBasicInfo); @@ -332,7 +332,7 @@ void DeviceManagerServiceListener::OnAuthResult(const ProcessInfo &processInfo, pReq->SetDeviceId(deviceId); #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) std::string deviceIdTemp = ""; - if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, deviceId, deviceIdTemp) == DM_OK) { + if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, deviceId, deviceIdTemp, processInfo.userId) == DM_OK) { pReq->SetDeviceId(deviceIdTemp); } #endif @@ -382,8 +382,8 @@ void DeviceManagerServiceListener::OnBindResult(const ProcessInfo &processInfo, #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) std::string deviceIdTemp = ""; DmKVValue kvValue; - if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, targetId.deviceId, deviceIdTemp) == DM_OK && - KVAdapterManager::GetInstance().Get(deviceIdTemp, kvValue) == DM_OK) { + if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, targetId.deviceId, deviceIdTemp, + processInfo.userId) == DM_OK && KVAdapterManager::GetInstance().Get(deviceIdTemp, kvValue) == DM_OK) { returnTargetId.deviceId = deviceIdTemp; } #endif @@ -405,8 +405,8 @@ void DeviceManagerServiceListener::OnUnbindResult(const ProcessInfo &processInfo #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) std::string deviceIdTemp = ""; DmKVValue kvValue; - if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, targetId.deviceId, deviceIdTemp) == DM_OK && - KVAdapterManager::GetInstance().Get(deviceIdTemp, kvValue) == DM_OK) { + if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, targetId.deviceId, deviceIdTemp, + processInfo.userId) == DM_OK && KVAdapterManager::GetInstance().Get(deviceIdTemp, kvValue) == DM_OK) { returnTargetId.deviceId = deviceIdTemp; } #endif @@ -487,10 +487,11 @@ void DeviceManagerServiceListener::OnPinHolderEvent(const ProcessInfo &processIn ipcServerListener_.SendRequest(SERVER_ON_PIN_HOLDER_EVENT, pReq, pRsp); } #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) -int32_t DeviceManagerServiceListener::ConvertUdidHashToAnoyAndSave(const std::string &pkgName, DmDeviceInfo &deviceInfo) +int32_t DeviceManagerServiceListener::ConvertUdidHashToAnoyAndSave(const std::string &pkgName, DmDeviceInfo &deviceInfo, + const int32_t userId) { std::string appId = ""; - if (AppManager::GetInstance().GetAppIdByPkgName(pkgName, appId) != DM_OK) { + if (AppManager::GetInstance().GetAppIdByPkgName(pkgName, appId, userId) != DM_OK) { LOGD("GetAppIdByPkgName failed"); return ERR_DM_FAILED; } @@ -512,10 +513,10 @@ int32_t DeviceManagerServiceListener::ConvertUdidHashToAnoyAndSave(const std::st } int32_t DeviceManagerServiceListener::ConvertUdidHashToAnoyDeviceId(const std::string &pkgName, - const std::string &udidHash, std::string &anoyDeviceId) + const std::string &udidHash, std::string &anoyDeviceId, const int32_t userId) { std::string appId = ""; - if (AppManager::GetInstance().GetAppIdByPkgName(pkgName, appId) != DM_OK) { + if (AppManager::GetInstance().GetAppIdByPkgName(pkgName, appId, userId) != DM_OK) { LOGD("GetAppIdByPkgName failed"); return ERR_DM_FAILED; } @@ -559,12 +560,12 @@ void DeviceManagerServiceListener::SetDeviceScreenInfo(std::shared_ptrSetProcessInfo(processInfo); #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) std::string appId = ""; - if (AppManager::GetInstance().GetAppIdByPkgName(processInfo.pkgName, appId) != DM_OK) { + if (AppManager::GetInstance().GetAppIdByPkgName(processInfo.pkgName, appId, processInfo.userId) != DM_OK) { pReq->SetDeviceInfo(deviceInfo); return; } DmDeviceInfo dmDeviceInfo = deviceInfo; - ConvertUdidHashToAnoyAndSave(processInfo.pkgName, dmDeviceInfo); + ConvertUdidHashToAnoyAndSave(processInfo.pkgName, dmDeviceInfo, processInfo.userId); pReq->SetDeviceInfo(dmDeviceInfo); return; #endif @@ -662,8 +663,8 @@ void DeviceManagerServiceListener::OnSinkBindResult(const ProcessInfo &processIn #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) std::string deviceIdTemp = ""; DmKVValue kvValue; - if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, targetId.deviceId, deviceIdTemp) == DM_OK && - KVAdapterManager::GetInstance().Get(deviceIdTemp, kvValue) == DM_OK) { + if (ConvertUdidHashToAnoyDeviceId(processInfo.pkgName, targetId.deviceId, deviceIdTemp, + processInfo.userId) == DM_OK && KVAdapterManager::GetInstance().Get(deviceIdTemp, kvValue) == DM_OK) { returnTargetId.deviceId = deviceIdTemp; } #endif diff --git a/services/service/src/ipc/standard/ipc_cmd_parser.cpp b/services/service/src/ipc/standard/ipc_cmd_parser.cpp index e8f908bca808e91b7bef061b7d87ed46e4c9e3c3..3db87d9ab62c3529290c1824008b584ba61e68b0 100644 --- a/services/service/src/ipc/standard/ipc_cmd_parser.cpp +++ b/services/service/src/ipc/standard/ipc_cmd_parser.cpp @@ -472,7 +472,7 @@ ON_IPC_CMD(REGISTER_DEVICE_MANAGER_LISTENER, MessageParcel &data, MessageParcel ProcessInfo processInfo; processInfo.pkgName = pkgName; MultipleUserConnector::GetCallerUserId(processInfo.userId); - DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName); + DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName, processInfo.userId); int32_t result = IpcServerStub::GetInstance().RegisterDeviceManagerListener(processInfo, callback); if (!reply.WriteInt32(result)) { LOGE("write result failed"); @@ -489,7 +489,7 @@ ON_IPC_CMD(UNREGISTER_DEVICE_MANAGER_LISTENER, MessageParcel &data, MessageParce ProcessInfo processInfo; processInfo.pkgName = pkgName; MultipleUserConnector::GetCallerUserId(processInfo.userId); - DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName); + DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName, processInfo.userId); int32_t result = IpcServerStub::GetInstance().UnRegisterDeviceManagerListener(processInfo); if (!reply.WriteInt32(result)) { LOGE("write result failed"); diff --git a/services/service/src/ipc/standard/ipc_server_stub.cpp b/services/service/src/ipc/standard/ipc_server_stub.cpp index 6f0fc375ca1ebf29f85c71c3ca9c74357c1a5ff0..5994cd534cf43aee3fab52c30993411124244ca9 100644 --- a/services/service/src/ipc/standard/ipc_server_stub.cpp +++ b/services/service/src/ipc/standard/ipc_server_stub.cpp @@ -445,6 +445,7 @@ void AppDeathRecipient::OnRemoteDied(const wptr &remote) DeviceManagerService::GetInstance().ClearDiscoveryCache(processInfo); DeviceManagerServiceNotify::GetInstance().ClearDiedProcessCallback(processInfo); DeviceManagerService::GetInstance().ClearPublishIdCache(processInfo.pkgName); + DeviceManagerService::GetInstance().UnRegisterCallerAppId(processInfo.pkgName, processInfo.userId); } void IpcServerStub::AddSystemSA(const std::string &pkgName) diff --git a/test/commonfuzztest/authenticatedeviceservice_fuzzer/authenticate_device_service_fuzzer.cpp b/test/commonfuzztest/authenticatedeviceservice_fuzzer/authenticate_device_service_fuzzer.cpp index a3e40ec26c9748b572722b0d1156deb9fddeab6f..9a21424a9cf2154aa100c96a43e93f49e96c45f7 100644 --- a/test/commonfuzztest/authenticatedeviceservice_fuzzer/authenticate_device_service_fuzzer.cpp +++ b/test/commonfuzztest/authenticatedeviceservice_fuzzer/authenticate_device_service_fuzzer.cpp @@ -65,14 +65,15 @@ void AuthenticateDeviceServiceFuzzTest(const uint8_t* data, size_t size) std::string network = fdp.ConsumeRandomLengthString(); int32_t authType = fdp.ConsumeIntegral(); int32_t level = fdp.ConsumeIntegral(); + int32_t userId = fdp.ConsumeIntegral(); DeviceManagerService::GetInstance().Init(); DeviceManagerService::GetInstance().AuthenticateDevice(pkgName, authType, deviceId, extra); DeviceManagerService::GetInstance().BindDevice(pkgName, authType, deviceId, extra); DeviceManagerService::GetInstance().UnAuthenticateDevice(pkgName, extra); DeviceManagerService::GetInstance().UnBindDevice(pkgName, deviceId); DeviceManagerService::GetInstance().SetUserOperation(pkgName, authType, network); - DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName); - DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName); + DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName, userId); + DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName, userId); DeviceManagerService::GetInstance().GetUdidByNetworkId(pkgName, deviceId, udid); DeviceManagerService::GetInstance().CheckApiPermission(level); } diff --git a/test/unittest/UTTest_app_manager.cpp b/test/unittest/UTTest_app_manager.cpp index 0c1d7c4d34b53e20f38f11bd4f8e7c3a4f82df00..f12407129e73ea28381409a9e7f51d99a410ce0b 100644 --- a/test/unittest/UTTest_app_manager.cpp +++ b/test/unittest/UTTest_app_manager.cpp @@ -95,13 +95,14 @@ HWTEST_F(AppManagerTest, RegisterCallerAppId_success_001, testing::ext::TestSize .Times(INVOKE_COUNT) .WillOnce(DoAll(SetArgReferee(bundleInfo), Return(ERR_OK))); std::string packageName = "packageName"; - AppManager::GetInstance().RegisterCallerAppId(packageName); + int32_t userId = 1001; + AppManager::GetInstance().RegisterCallerAppId(packageName, userId); std::string appId; - auto result = AppManager::GetInstance().GetAppIdByPkgName(packageName, appId); + auto result = AppManager::GetInstance().GetAppIdByPkgName(packageName, appId, userId); EXPECT_EQ(result, DM_OK); EXPECT_STREQ(bundleInfo.appId.c_str(), appId.c_str()); - AppManager::GetInstance().UnRegisterCallerAppId(packageName); + AppManager::GetInstance().UnRegisterCallerAppId(packageName, userId); } HWTEST_F(AppManagerTest, RegisterCallerAppId_failed_001, testing::ext::TestSize.Level2) @@ -111,20 +112,21 @@ HWTEST_F(AppManagerTest, RegisterCallerAppId_failed_001, testing::ext::TestSize. std::string emptyPackageName; std::string appId; - AppManager::GetInstance().RegisterCallerAppId(emptyPackageName); - AppManager::GetInstance().GetAppIdByPkgName(emptyPackageName, appId); - AppManager::GetInstance().UnRegisterCallerAppId(emptyPackageName); + int32_t userId = 10001; + AppManager::GetInstance().RegisterCallerAppId(emptyPackageName, userId); + AppManager::GetInstance().GetAppIdByPkgName(emptyPackageName, appId, userId); + AppManager::GetInstance().UnRegisterCallerAppId(emptyPackageName, userId); EXPECT_CALL(*skeleton_, GetCallingTokenID()) .Times(AtLeast(INVOKE_COUNT)); EXPECT_CALL(*token_, GetTokenTypeFlag(_)) - .Times(INVOKE_COUNT) + .Times(AtLeast(INVOKE_COUNT)) .WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE)); std::string packageName = "packageName"; - AppManager::GetInstance().RegisterCallerAppId(packageName); - auto result = AppManager::GetInstance().GetAppIdByPkgName(packageName, appId); + AppManager::GetInstance().RegisterCallerAppId(packageName, userId); + auto result = AppManager::GetInstance().GetAppIdByPkgName(packageName, appId, userId); EXPECT_EQ(result, ERR_DM_FAILED); - AppManager::GetInstance().UnRegisterCallerAppId(packageName); + AppManager::GetInstance().UnRegisterCallerAppId(packageName, userId); } HWTEST_F(AppManagerTest, GetAppId_001, testing::ext::TestSize.Level2) diff --git a/test/unittest/UTTest_device_manager_service.cpp b/test/unittest/UTTest_device_manager_service.cpp index 3496f2e2be571f840653a387b01ef134776b34e8..f9d2b234ee4c4e527cf53d16a4a7c6453ce359b1 100644 --- a/test/unittest/UTTest_device_manager_service.cpp +++ b/test/unittest/UTTest_device_manager_service.cpp @@ -1193,7 +1193,8 @@ HWTEST_F(DeviceManagerServiceTest, CheckApiPermission_001, testing::ext::TestSiz HWTEST_F(DeviceManagerServiceTest, RegisterCallerAppId_001, testing::ext::TestSize.Level1) { std::string pkgName; - DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName); + int32_t userId = 10001; + DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName, userId); EXPECT_NE(DeviceManagerService::GetInstance().listener_, nullptr); } @@ -1205,8 +1206,9 @@ HWTEST_F(DeviceManagerServiceTest, RegisterCallerAppId_001, testing::ext::TestSi HWTEST_F(DeviceManagerServiceTest, RegisterCallerAppId_002, testing::ext::TestSize.Level1) { std::string pkgName; + int32_t userId = 10001; DeviceManagerService::GetInstance().listener_ = nullptr; - DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName); + DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName, userId); EXPECT_EQ(DeviceManagerService::GetInstance().listener_, nullptr); } @@ -1218,7 +1220,8 @@ HWTEST_F(DeviceManagerServiceTest, RegisterCallerAppId_002, testing::ext::TestSi HWTEST_F(DeviceManagerServiceTest, UnRegisterCallerAppId_001, testing::ext::TestSize.Level1) { std::string pkgName; - DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName); + int32_t userId = 10001; + DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName, userId); EXPECT_EQ(DeviceManagerService::GetInstance().listener_, nullptr); } @@ -1230,8 +1233,9 @@ HWTEST_F(DeviceManagerServiceTest, UnRegisterCallerAppId_001, testing::ext::Test HWTEST_F(DeviceManagerServiceTest, UnRegisterCallerAppId_002, testing::ext::TestSize.Level1) { std::string pkgName; + int32_t userId = 10001; DeviceManagerService::GetInstance().listener_ = nullptr; - DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName); + DeviceManagerService::GetInstance().UnRegisterCallerAppId(pkgName, userId); EXPECT_EQ(DeviceManagerService::GetInstance().listener_, nullptr); } diff --git a/test/unittest/UTTest_device_manager_service_listener.cpp b/test/unittest/UTTest_device_manager_service_listener.cpp index ff761bb5399e6cb47271deaaf5f4f7e0d605c6eb..ae734592ca64428845fb1d968469bc324aa3313f 100644 --- a/test/unittest/UTTest_device_manager_service_listener.cpp +++ b/test/unittest/UTTest_device_manager_service_listener.cpp @@ -191,7 +191,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnDeviceFound_001, testing::ext::Test .deviceTypeId = 1, }; uint16_t subscribeId = 1; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(1)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(1)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); listener_->OnDeviceFound(processInfo, subscribeId, info); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), true); @@ -491,7 +491,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnDeviceScreenStateChange_001, testin processInfoTmp.userId = 106; int32_t dmCommonNotifyEvent = 3; DeviceManagerServiceNotify::GetInstance().RegisterCallBack(dmCommonNotifyEvent, processInfoTmp); - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); listener_->OnDeviceScreenStateChange(processInfo, devInfo); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), true); @@ -508,7 +508,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnDeviceScreenStateChange_001, testin systemSA.insert("pkgName"); EXPECT_CALL(*ipcServerListenerMock_, GetAllProcessInfo()).WillOnce(Return(processInfos)); EXPECT_CALL(*ipcServerListenerMock_, GetSystemSA()).WillOnce(Return(systemSA)); - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); listener_->OnDeviceScreenStateChange(processInfo, devInfo); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), true); @@ -537,7 +537,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnSinkBindResult_001, testing::ext::T int32_t result = 1; int32_t status = 0; std::string content = "content"; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyDeviceId(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*kVAdapterManagerMock_, Get(_, _)).WillOnce(Return(DM_OK)); std::vector processInfos; @@ -635,7 +635,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, ProcessAppStateChange_001, testing::e allProcessInfos.push_back(processInfo1); EXPECT_CALL(*ipcServerListenerMock_, GetSystemSA()).WillOnce(Return(systemSA)); EXPECT_CALL(*ipcServerListenerMock_, GetAllProcessInfo()).WillOnce(Return(allProcessInfos)); - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(4)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(4)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)) .Times(::testing::AtLeast(4)).WillOnce(Return(DM_OK)); listener_->ProcessAppStateChange(processInfo, state, info, deviceBasicInfo); @@ -647,14 +647,15 @@ HWTEST_F(DeviceManagerServiceListenerTest, ConvertUdidHashToAnoyAndSave_001, tes std::shared_ptr listener_ = std::make_shared(); std::string pkgName = "pkgName004"; DmDeviceInfo deviceInfo; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + int32_t userId = 10001; + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(ERR_DM_FAILED)); - int32_t ret = listener_->ConvertUdidHashToAnoyAndSave(pkgName, deviceInfo); + int32_t ret = listener_->ConvertUdidHashToAnoyAndSave(pkgName, deviceInfo, userId); EXPECT_EQ(ret, ERR_DM_FAILED); - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); - ret = listener_->ConvertUdidHashToAnoyAndSave(pkgName, deviceInfo); + ret = listener_->ConvertUdidHashToAnoyAndSave(pkgName, deviceInfo, userId); EXPECT_EQ(ret, DM_OK); } @@ -664,9 +665,10 @@ HWTEST_F(DeviceManagerServiceListenerTest, ConvertUdidHashToAnoyAndSave_002, tes std::string pkgName = "pkgName002"; std::string udidHash = "udidHash"; std::string anoyDeviceId = "anoyDeviceId"; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + int32_t userId = 10001; + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyDeviceId(_, _, _)).WillOnce(Return(DM_OK)); - int32_t ret = listener_->ConvertUdidHashToAnoyDeviceId(pkgName, udidHash, anoyDeviceId); + int32_t ret = listener_->ConvertUdidHashToAnoyDeviceId(pkgName, udidHash, anoyDeviceId, userId); EXPECT_EQ(ret, DM_OK); } @@ -699,7 +701,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, SetDeviceScreenInfo_001, testing::ext ProcessInfo processInfo; DmDeviceInfo deviceInfo; processInfo.pkgName = "pkgName"; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); listener_->SetDeviceScreenInfo(pReq, processInfo, deviceInfo); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), false); @@ -852,7 +854,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, ProcessDeviceOnline_001, testing::ext DmDeviceState state = DmDeviceState::DEVICE_INFO_CHANGED; DmDeviceInfo info; DmDeviceBasicInfo deviceBasicInfo; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(4)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(4)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)) .Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); listener_->ProcessDeviceOnline(procInfoVec, processInfo, state, info, deviceBasicInfo); @@ -892,7 +894,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, ProcessDeviceInfoChange_001, testing: DmDeviceState state = DmDeviceState::DEVICE_INFO_CHANGED; DmDeviceInfo info; DmDeviceBasicInfo deviceBasicInfo; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)) .Times(::testing::AtLeast(1)).WillOnce(Return(DM_OK)); listener_->ProcessDeviceInfoChange(procInfoVec, processInfo, state, info, deviceBasicInfo); @@ -941,12 +943,12 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnDevStateCallbackAdd_001, testing::e info.authForm = DmAuthForm::ACROSS_ACCOUNT; info.deviceTypeId = 1; deviceList.push_back(info); - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); listener_->OnDevStateCallbackAdd(processInfo, deviceList); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), false); - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); listener_->OnDevStateCallbackAdd(processInfo, deviceList); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), false); @@ -1009,7 +1011,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnBindResult_004, testing::ext::TestS ProcessInfo processInfo; processInfo.pkgName = "com.ohos.helloworld"; processInfo.userId = 100; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyDeviceId(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*kVAdapterManagerMock_, Get(_, _)).WillOnce(Return(DM_OK)); listener_->OnBindResult(processInfo, targetId, result, status, content); @@ -1026,7 +1028,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnAuthResult_004, testing::ext::TestS ProcessInfo processInfo; processInfo.pkgName = "com.ohos.hellojk"; processInfo.userId = 100; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyDeviceId(_, _, _)).WillOnce(Return(DM_OK)); listener_->OnAuthResult(processInfo, deviceId, token, status, reason); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), false); @@ -1041,7 +1043,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnUnbindResult_002, testing::ext::Tes ProcessInfo processInfo; processInfo.pkgName = "com.ohos.helloworld01"; processInfo.userId = 100; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyDeviceId(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*kVAdapterManagerMock_, Get(_, _)).WillOnce(Return(DM_OK)); listener_->OnUnbindResult(processInfo, targetId, result, content); @@ -1058,7 +1060,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, OnSinkBindResult_002, testing::ext::T int32_t result = 1; int32_t status = 1; std::string content = "content"; - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyDeviceId(_, _, _)).WillOnce(Return(DM_OK)); EXPECT_CALL(*kVAdapterManagerMock_, Get(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); std::vector processInfos; @@ -1079,7 +1081,7 @@ HWTEST_F(DeviceManagerServiceListenerTest, SetDeviceInfo_001, testing::ext::Test DmDeviceBasicInfo deviceBasicInfo; EXPECT_CALL(*kVAdapterManagerMock_, Get(_, _)).Times(::testing::AtLeast(3)).WillOnce(Return(DM_OK)); - EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); + EXPECT_CALL(*appManagerMock_, GetAppIdByPkgName(_, _, _)).Times(::testing::AtLeast(2)).WillOnce(Return(DM_OK)); EXPECT_CALL(*cryptoMock_, ConvertUdidHashToAnoyAndSave(_, _, _)).WillOnce(Return(DM_OK)); listener_->SetDeviceInfo(pReq, processInfo, state, deviceInfo, deviceBasicInfo); EXPECT_EQ(listener_->alreadyOnlinePkgName_.empty(), false); diff --git a/test/unittest/UTTest_device_manager_service_two.cpp b/test/unittest/UTTest_device_manager_service_two.cpp index 9f4011c5c63b642e5737d5b98b0b4c768d27dd98..67b9e93a43fe9d7e7d0f701990ea4d14ef52171c 100644 --- a/test/unittest/UTTest_device_manager_service_two.cpp +++ b/test/unittest/UTTest_device_manager_service_two.cpp @@ -86,9 +86,10 @@ void SetSetDnPolicyPermission() HWTEST_F(DeviceManagerServiceTest, GetTrustedDeviceList_201, testing::ext::TestSize.Level1) { std::string pkgName = "pkgName"; + int32_t userId = 10001; EXPECT_CALL(*appManagerMock_, GetAppId()).Times(::testing::AtLeast(1)).WillOnce(Return("appId")); DeviceManagerService::GetInstance().listener_ = std::make_shared(); - DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName); + DeviceManagerService::GetInstance().RegisterCallerAppId(pkgName, userId); DeletePermission(); const std::string extra; std::vector deviceList; diff --git a/test/unittest/mock/app_manager_mock.cpp b/test/unittest/mock/app_manager_mock.cpp index aedcc22c10067e1a6fd7ee06efe963f709b560f5..02539d9a616da0676ea107944e9e4372f5d9a4f0 100644 --- a/test/unittest/mock/app_manager_mock.cpp +++ b/test/unittest/mock/app_manager_mock.cpp @@ -40,9 +40,9 @@ int32_t AppManager::GetHapTokenIdByName(int32_t userId, std::string &bundleName, return DmAppManager::dmAppManager->GetHapTokenIdByName(userId, bundleName, instIndex, tokenId); } -int32_t AppManager::GetAppIdByPkgName(const std::string &pkgName, std::string &appId) +int32_t AppManager::GetAppIdByPkgName(const std::string &pkgName, std::string &appId, const int32_t userId) { - return DmAppManager::dmAppManager->GetAppIdByPkgName(pkgName, appId); + return DmAppManager::dmAppManager->GetAppIdByPkgName(pkgName, appId, userId); } int32_t AppManager::GetBundleNameForSelf(std::string &bundleName) diff --git a/test/unittest/mock/app_manager_mock.h b/test/unittest/mock/app_manager_mock.h index 1a1f0dbb0d007dd0948558c0367bf655f63067e5..133c14ee03ee96257cce83be1ef0c714f3f85404 100644 --- a/test/unittest/mock/app_manager_mock.h +++ b/test/unittest/mock/app_manager_mock.h @@ -31,7 +31,7 @@ public: virtual int32_t GetNativeTokenIdByName(std::string &processName, int64_t &tokenId) = 0; virtual int32_t GetHapTokenIdByName(int32_t userId, std::string &bundleName, int32_t instIndex, int64_t &tokenId) = 0; - virtual int32_t GetAppIdByPkgName(const std::string &pkgName, std::string &appId) = 0; + virtual int32_t GetAppIdByPkgName(const std::string &pkgName, std::string &appId, const int32_t userId) = 0; virtual int32_t GetBundleNameForSelf(std::string &bundleName) = 0; public: static inline std::shared_ptr dmAppManager = nullptr; @@ -43,7 +43,7 @@ public: MOCK_METHOD(bool, IsSystemSA, ()); MOCK_METHOD(int32_t, GetNativeTokenIdByName, (std::string &, int64_t &)); MOCK_METHOD(int32_t, GetHapTokenIdByName, (int32_t, std::string &, int32_t, int64_t &)); - MOCK_METHOD(int32_t, GetAppIdByPkgName, (const std::string &, std::string &)); + MOCK_METHOD(int32_t, GetAppIdByPkgName, (const std::string &, std::string &, int32_t)); MOCK_METHOD(int32_t, GetBundleNameForSelf, (std::string &)); }; } diff --git a/utils/include/appInfo/lite/app_manager.h b/utils/include/appInfo/lite/app_manager.h index ffc506b0a4332055ba6bcb94f31376d2dd12e6db..b0de71ecbc8e2058932852b75ebe8b8db4add2ca 100644 --- a/utils/include/appInfo/lite/app_manager.h +++ b/utils/include/appInfo/lite/app_manager.h @@ -26,9 +26,9 @@ class AppManager { public: const std::string GetAppId(); - void RegisterCallerAppId(const std::string &pkgName); - void UnRegisterCallerAppId(const std::string &pkgName); - int32_t GetAppIdByPkgName(const std::string &pkgName, std::string &appId); + void RegisterCallerAppId(const std::string &pkgName, const int32_t userId); + void UnRegisterCallerAppId(const std::string &pkgName, const int32_t userId); + int32_t GetAppIdByPkgName(const std::string &pkgName, std::string &appId, const int32_t userId); bool IsSystemSA(); bool IsSystemApp(); int32_t GetCallerName(bool isSystemSA, std::string &callerName); diff --git a/utils/include/appInfo/standard/app_manager.h b/utils/include/appInfo/standard/app_manager.h index 09247de53890f03e878bdf71574c4e947431bbbc..e03124661d8da3a55db0e92e5bddc159d4d739c5 100644 --- a/utils/include/appInfo/standard/app_manager.h +++ b/utils/include/appInfo/standard/app_manager.h @@ -33,9 +33,9 @@ class AppManager { public: DM_EXPORT const std::string GetAppId(); - DM_EXPORT void RegisterCallerAppId(const std::string &pkgName); - DM_EXPORT void UnRegisterCallerAppId(const std::string &pkgName); - DM_EXPORT int32_t GetAppIdByPkgName(const std::string &pkgName, std::string &appId); + DM_EXPORT void RegisterCallerAppId(const std::string &pkgName, const int32_t userId); + DM_EXPORT void UnRegisterCallerAppId(const std::string &pkgName, const int32_t userId); + DM_EXPORT int32_t GetAppIdByPkgName(const std::string &pkgName, std::string &appId, const int32_t userId); DM_EXPORT bool IsSystemSA(); DM_EXPORT bool IsSystemApp(); DM_EXPORT int32_t GetCallerName(bool isSystemSA, std::string &callerName); diff --git a/utils/src/appInfo/lite/app_manager.cpp b/utils/src/appInfo/lite/app_manager.cpp index c44b6f7da93e48643a1b55d225e38a0d34620b53..919b99430d7615d146e7609f5e8792cafb0d8e4f 100644 --- a/utils/src/appInfo/lite/app_manager.cpp +++ b/utils/src/appInfo/lite/app_manager.cpp @@ -25,20 +25,23 @@ const std::string AppManager::GetAppId() return ""; } -void AppManager::RegisterCallerAppId(const std::string &pkgName) +void AppManager::RegisterCallerAppId(const std::string &pkgName, const int32_t userId) { (void)pkgName; + (void)userId; } -void AppManager::UnRegisterCallerAppId(const std::string &pkgName) +void AppManager::UnRegisterCallerAppId(const std::string &pkgName, const int32_t userId) { (void)pkgName; + (void)userId; } -int32_t AppManager::GetAppIdByPkgName(const std::string &pkgName, std::string &appId) +int32_t AppManager::GetAppIdByPkgName(const std::string &pkgName, std::string &appId, const int32_t userId) { (void)pkgName; (void)appId; + (void)userId; return DM_OK; } diff --git a/utils/src/appInfo/standard/app_manager.cpp b/utils/src/appInfo/standard/app_manager.cpp index e4d7b86b342b29af3e229a6d642997fe7e3156d0..17eaf947f6a1652c7601dfd7a2ecc1a9ab1b0f33 100644 --- a/utils/src/appInfo/standard/app_manager.cpp +++ b/utils/src/appInfo/standard/app_manager.cpp @@ -73,50 +73,70 @@ const std::string AppManager::GetAppId() return appId; } -DM_EXPORT void AppManager::RegisterCallerAppId(const std::string &pkgName) +DM_EXPORT void AppManager::RegisterCallerAppId(const std::string &pkgName, const int32_t userId) { if (pkgName.empty()) { LOGE("Invalid parameter, pkgName is empty."); return; } + std::string appIdKey = pkgName + "#" + std::to_string(userId); + { + std::lock_guard lock(appIdMapLock_); + if (appIdMap_.find(appIdKey) != appIdMap_.end()) { + LOGI("PkgName %{public}s, userId %{public}d, appId %{public}s.", + pkgName.c_str(), userId, GetAnonyString(appIdMap_[appIdKey]).c_str()); + return; + } + } std::string appId = GetAppId(); if (appId.empty()) { LOGD("PkgName %{public}s get appid failed.", pkgName.c_str()); return; } - LOGI("PkgName %{public}s, appId %{public}s.", pkgName.c_str(), GetAnonyString(appId).c_str()); + LOGI("PkgName %{public}s, userId %{public}d, appId %{public}s.", + pkgName.c_str(), userId, GetAnonyString(appId).c_str()); std::lock_guard lock(appIdMapLock_); CHECK_SIZE_VOID(appIdMap_); - appIdMap_[pkgName] = appId; + appIdMap_[appIdKey] = appId; } -DM_EXPORT void AppManager::UnRegisterCallerAppId(const std::string &pkgName) +DM_EXPORT void AppManager::UnRegisterCallerAppId(const std::string &pkgName, const int32_t userId) { if (pkgName.empty()) { LOGE("Invalid parameter, pkgName is empty."); return; } - LOGI("PkgName %{public}s.", pkgName.c_str()); + LOGI("PkgName %{public}s, userId %{public}d", pkgName.c_str(), userId); + std::string appIdKey = pkgName + "#" + std::to_string(userId); std::lock_guard lock(appIdMapLock_); - if (appIdMap_.find(pkgName) == appIdMap_.end()) { + if (appIdMap_.find(appIdKey) == appIdMap_.end()) { return; } - appIdMap_.erase(pkgName); + appIdMap_.erase(appIdKey); } -int32_t AppManager::GetAppIdByPkgName(const std::string &pkgName, std::string &appId) +int32_t AppManager::GetAppIdByPkgName(const std::string &pkgName, std::string &appId, const int32_t userId) { if (pkgName.empty()) { LOGE("Invalid parameter, pkgName is empty."); return ERR_DM_INPUT_PARA_INVALID; } - LOGD("PkgName %{public}s.", pkgName.c_str()); + LOGD("PkgName %{public}s, userId %{public}d", pkgName.c_str(), userId); + std::string appIdKey = pkgName + "#" + std::to_string(userId); std::lock_guard lock(appIdMapLock_); - if (appIdMap_.find(pkgName) == appIdMap_.end()) { - LOGD("AppIdMap not find pkgName."); + if (appIdMap_.find(appIdKey) != appIdMap_.end()) { + appId = appIdMap_[appIdKey]; + return DM_OK; + } + appId = GetAppId(); + if (appId.empty()) { + LOGD("PkgName %{public}s get appid failed.", pkgName.c_str()); return ERR_DM_FAILED; } - appId = appIdMap_[pkgName]; + LOGI("PkgName %{public}s, userId %{public}d, appId %{public}s.", + pkgName.c_str(), userId, GetAnonyString(appId).c_str()); + CHECK_SIZE_RETURN(appIdMap_, ERR_DM_FAILED); + appIdMap_[appIdKey] = appId; return DM_OK; }