From ebf91503149dd117949feb683492216924466f47 Mon Sep 17 00:00:00 2001 From: guoyi Date: Sat, 26 Apr 2025 18:02:42 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=9B=91=E5=90=AC=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guoyi --- services/service/include/device_manager_service.h | 2 +- .../include/devicenamemgr/device_name_manager.h | 1 + .../publishcommonevent/dm_datashare_common_event.h | 2 +- services/service/src/device_manager_service.cpp | 14 +++++++------- .../src/device_manager_service_listener.cpp | 13 +++++++++++++ .../src/devicenamemgr/device_name_manager.cpp | 8 ++++++++ .../dm_datashare_common_event.cpp | 10 ++++++---- .../unittest/UTTest_device_manager_service_two.cpp | 5 +---- .../mock/device_manager_service_impl_mock.cpp | 6 ++++++ .../mock/device_manager_service_impl_mock.h | 2 ++ 10 files changed, 46 insertions(+), 17 deletions(-) diff --git a/services/service/include/device_manager_service.h b/services/service/include/device_manager_service.h index 86914ea72..5e9916ed2 100644 --- a/services/service/include/device_manager_service.h +++ b/services/service/include/device_manager_service.h @@ -348,7 +348,7 @@ private: #endif // SUPPORT_BLUETOOTH SUPPORT_WIFI DM_EXPORT void SubscribeDataShareCommonEvent(); #endif - void CheckRegisterInfoWithWise(int32_t curUserId); + void CheckRegisterInfoWithWise(); void NotifyRemoteLocalLogout(const std::vector &peerUdids, const std::string &accountIdHash, const std::string &accountName, int32_t userId); diff --git a/services/service/include/devicenamemgr/device_name_manager.h b/services/service/include/devicenamemgr/device_name_manager.h index 50670c762..ed68ca896 100644 --- a/services/service/include/devicenamemgr/device_name_manager.h +++ b/services/service/include/devicenamemgr/device_name_manager.h @@ -44,6 +44,7 @@ public: int32_t ModifyUserDefinedName(const std::string &deviceName); int32_t RestoreLocalDeviceName(); int32_t InitDeviceNameWhenLanguageOrRegionChanged(); + std::string GetUserDefinedDeviceName(); private: DeviceNameManager() = default; diff --git a/services/service/include/publishcommonevent/dm_datashare_common_event.h b/services/service/include/publishcommonevent/dm_datashare_common_event.h index ac984fc82..3064f0545 100644 --- a/services/service/include/publishcommonevent/dm_datashare_common_event.h +++ b/services/service/include/publishcommonevent/dm_datashare_common_event.h @@ -24,7 +24,7 @@ namespace DistributedHardware { using OHOS::EventFwk::CommonEventData; using OHOS::EventFwk::CommonEventSubscriber; using OHOS::EventFwk::CommonEventSubscribeInfo; -using DataShareEventCallback = std::function; +using DataShareEventCallback = std::function; class DmDataShareEventSubscriber : public CommonEventSubscriber { public: diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index dc7524053..c2240e798 100644 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -70,6 +70,7 @@ namespace { const int32_t NORMAL = 0; const int32_t SYSTEM_BASIC = 1; const int32_t SYSTEM_CORE = 2; + constexpr int32_t NUM3 = 3; constexpr const char *ALL_PKGNAME = ""; constexpr const char *NETWORKID = "NETWORK_ID"; constexpr uint32_t INVALIED_BIND_LEVEL = 0; @@ -170,13 +171,16 @@ DM_EXPORT void DeviceManagerService::SubscribeDataShareCommonEvent() if (dataShareCommonEventManager_ == nullptr) { dataShareCommonEventManager_ = std::make_shared(); } - DataShareEventCallback callback = [=](const auto &arg1) { + DataShareEventCallback callback = [=](const auto &arg1, const auto &arg2) { if (arg1 == CommonEventSupport::COMMON_EVENT_DATA_SHARE_READY) { DeviceNameManager::GetInstance().DataShareReady(); } if (arg1 == CommonEventSupport::COMMON_EVENT_LOCALE_CHANGED) { DeviceNameManager::GetInstance().InitDeviceNameWhenLanguageOrRegionChanged(); } + if (arg1 == CommonEventSupport::COMMON_EVENT_CONNECTIVITY_CHANGE && arg2 == NUM3) { + DeviceNameManager::GetInstance().InitDeviceNameWhenLanguageOrRegionChanged(); + } }; std::vector commonEventVec; commonEventVec.emplace_back(CommonEventSupport::COMMON_EVENT_DATA_SHARE_READY); @@ -2956,7 +2960,6 @@ void DeviceManagerService::HandleUserSwitchTimeout(int32_t curUserId, int32_t pr void DeviceManagerService::HandleUserSwitchedEvent(int32_t currentUserId, int32_t beforeUserId) { DeviceNameManager::GetInstance().InitDeviceNameWhenUserSwitch(currentUserId, beforeUserId); - CheckRegisterInfoWithWise(currentUserId); MultipleUserConnector::SetAccountInfo(currentUserId, MultipleUserConnector::GetCurrentDMAccountInfo()); if (IsPC()) { return; @@ -3289,12 +3292,9 @@ std::vector DeviceManagerService::GetDeviceNamePrefixs() return dmServiceImplExtResident_->GetDeviceNamePrefixs(); } -void DeviceManagerService::CheckRegisterInfoWithWise(int32_t curUserId) +void DeviceManagerService::CheckRegisterInfoWithWise() { - LOGI("In curUserId:%{public}d", curUserId); - if (curUserId == -1) { - return; - } + LOGI("In"); if (!IsDMServiceAdapterResidentLoad()) { LOGE("CheckRegisterInfoWithWise failed, adapter instance not init or init failed."); return; diff --git a/services/service/src/device_manager_service_listener.cpp b/services/service/src/device_manager_service_listener.cpp index ba30c6d62..cc6a8bab5 100644 --- a/services/service/src/device_manager_service_listener.cpp +++ b/services/service/src/device_manager_service_listener.cpp @@ -949,6 +949,19 @@ void DeviceManagerServiceListener::OnGetDeviceProfileInfoListResult(const Proces std::shared_ptr pRsp = std::make_shared(); pReq->SetPkgName(processInfo.pkgName); pReq->SetDeviceProfileInfoList(deviceProfileInfos); +#if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) + std::string userDefinedDeviceName = DeviceNameManager::GetInstance().GetUserDefinedDeviceName(); + if (code == DM_OK && !userDefinedDeviceName.empty()) { + std::vector temVec = deviceProfileInfos; + for (auto &item : temVec) { + if (item.isLocalDevice) { + item.deviceName = userDefinedDeviceName; + break; + } + } + pReq->SetDeviceProfileInfoList(temVec); + } +#endif pReq->SetResult(code); pReq->SetProcessInfo(processInfo); ipcServerListener_.SendRequest(GET_DEVICE_PROFILE_INFO_LIST_RESULT, pReq, pRsp); diff --git a/services/service/src/devicenamemgr/device_name_manager.cpp b/services/service/src/devicenamemgr/device_name_manager.cpp index d77ce9c4d..ef95c0b2d 100644 --- a/services/service/src/devicenamemgr/device_name_manager.cpp +++ b/services/service/src/devicenamemgr/device_name_manager.cpp @@ -182,6 +182,14 @@ int32_t DeviceNameManager::InitDeviceNameWhenLanguageOrRegionChanged() return DM_OK; } +std::string DeviceNameManager::GetUserDefinedDeviceName() +{ + int32_t userId = MultipleUserConnector::GetCurrentAccountUserID(); + std::string userDefinedDeviceName = ""; + GetUserDefinedDeviceName(userId, userDefinedDeviceName); + return userDefinedDeviceName; +} + int32_t DeviceNameManager::InitDeviceNameWhenNameChange(int32_t userId) { LOGI("In"); diff --git a/services/service/src/publishcommonevent/dm_datashare_common_event.cpp b/services/service/src/publishcommonevent/dm_datashare_common_event.cpp index f62a83536..dd903b834 100644 --- a/services/service/src/publishcommonevent/dm_datashare_common_event.cpp +++ b/services/service/src/publishcommonevent/dm_datashare_common_event.cpp @@ -134,21 +134,23 @@ bool DmDataShareCommonEventManager::UnsubscribeDataShareCommonEvent() void DmDataShareEventSubscriber::OnReceiveEvent(const CommonEventData &data) { std::string receiveEvent = data.GetWant().GetAction(); + int32_t eventState = data.GetCode(); bool validEvent = false; if (receiveEvent == EventFwk::CommonEventSupport::COMMON_EVENT_DATA_SHARE_READY || - receiveEvent == EventFwk::CommonEventSupport::COMMON_EVENT_LOCALE_CHANGED) { + receiveEvent == EventFwk::CommonEventSupport::COMMON_EVENT_LOCALE_CHANGED || + receiveEvent == EventFwk::CommonEventSupport::COMMON_EVENT_CONNECTIVITY_CHANGE) { validEvent = true; } - LOGI("Received datashare event: %{public}s", receiveEvent.c_str()); + LOGI("Received datashare event: %{public}s, eventState: %{public}d", receiveEvent.c_str(), eventState); if (!validEvent) { LOGE("Invalied datashare type event."); return; } #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) - ffrt::submit([=]() { callback_(receiveEvent); }); + ffrt::submit([=]() { callback_(receiveEvent, eventState); }); #else - std::thread dealThread([=]() { callback_(receiveEvent); }); + std::thread dealThread([=]() { callback_(receiveEvent, eventState); }); int32_t ret = pthread_setname_np(dealThread.native_handle(), DEAL_THREAD); if (ret != DM_OK) { LOGE("dealThread setname failed."); diff --git a/test/unittest/UTTest_device_manager_service_two.cpp b/test/unittest/UTTest_device_manager_service_two.cpp index a6704b1b6..4e3ebfea4 100644 --- a/test/unittest/UTTest_device_manager_service_two.cpp +++ b/test/unittest/UTTest_device_manager_service_two.cpp @@ -1662,10 +1662,7 @@ HWTEST_F(DeviceManagerServiceTest, RestoreLocalDeviceName_201, testing::ext::Tes int32_t ret = DeviceManagerService::GetInstance().RestoreLocalDeviceName(pkgName); EXPECT_EQ(ret, ERR_DM_NO_PERMISSION); - int32_t curUserId = -1; - DeviceManagerService::GetInstance().CheckRegisterInfoWithWise(curUserId); - curUserId = 1; - DeviceManagerService::GetInstance().CheckRegisterInfoWithWise(curUserId); + DeviceManagerService::GetInstance().CheckRegisterInfoWithWise(); } HWTEST_F(DeviceManagerServiceTest, RestoreLocalDeviceName_202, testing::ext::TestSize.Level1) diff --git a/test/unittest/mock/device_manager_service_impl_mock.cpp b/test/unittest/mock/device_manager_service_impl_mock.cpp index 6ed0f5a53..35017b52e 100644 --- a/test/unittest/mock/device_manager_service_impl_mock.cpp +++ b/test/unittest/mock/device_manager_service_impl_mock.cpp @@ -67,5 +67,11 @@ int32_t DeviceManagerServiceImpl::UnBindDevice(const std::string &pkgName, const { return DmDeviceManagerServiceImpl::dmDeviceManagerServiceImpl->UnBindDevice(pkgName, udid, bindLevel, extra); } + +int32_t DeviceManagerServiceImpl::CheckDeviceInfoPermission(const std::string &localUdid, + const std::string &peerDeviceId) +{ + return DmDeviceManagerServiceImpl::dmDeviceManagerServiceImpl->CheckDeviceInfoPermission(localUdid, peerDeviceId); +} } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file diff --git a/test/unittest/mock/device_manager_service_impl_mock.h b/test/unittest/mock/device_manager_service_impl_mock.h index bbc6f8792..128524b3e 100644 --- a/test/unittest/mock/device_manager_service_impl_mock.h +++ b/test/unittest/mock/device_manager_service_impl_mock.h @@ -37,6 +37,7 @@ public: virtual int32_t UnAuthenticateDevice(const std::string &pkgName, const std::string &udid, int32_t bindLevel) = 0; virtual int32_t UnBindDevice(const std::string &pkgName, const std::string &udid, int32_t bindLevel, const std::string &extra) = 0; + virtual int32_t CheckDeviceInfoPermission(const std::string &localUdid, const std::string &peerDeviceId) = 0; public: static inline std::shared_ptr dmDeviceManagerServiceImpl = nullptr; }; @@ -52,6 +53,7 @@ public: MOCK_METHOD((std::unordered_map), GetAppTrustDeviceIdList, (std::string)); MOCK_METHOD(int32_t, UnAuthenticateDevice, (const std::string &, const std::string &, int32_t)); MOCK_METHOD(int32_t, UnBindDevice, (const std::string &, const std::string &, int32_t, const std::string &)); + MOCK_METHOD(int32_t, CheckDeviceInfoPermission, (const std::string &, const std::string &)); }; } } -- Gitee From 9a3732df0f7eef36f2dbc99006356d379b549f57 Mon Sep 17 00:00:00 2001 From: guoyi Date: Sat, 26 Apr 2025 22:05:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E6=84=8F=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guoyi --- .../include/publishcommonevent/dm_datashare_common_event.h | 6 +++--- services/service/src/device_manager_service.cpp | 6 +++--- services/service/src/device_manager_service_listener.cpp | 3 +++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/services/service/include/publishcommonevent/dm_datashare_common_event.h b/services/service/include/publishcommonevent/dm_datashare_common_event.h index 3064f0545..a8013c325 100644 --- a/services/service/include/publishcommonevent/dm_datashare_common_event.h +++ b/services/service/include/publishcommonevent/dm_datashare_common_event.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef OHOS_DM_DATASAHRE_COMMON_EVENT_H -#define OHOS_DM_DATASAHRE_COMMON_EVENT_H +#ifndef OHOS_DM_DATASHARE_COMMON_EVENT_H +#define OHOS_DM_DATASHARE_COMMON_EVENT_H #include "common_event_manager.h" #include "system_ability_status_change_stub.h" @@ -71,4 +71,4 @@ private: }; } // namespace DistributedHardware } // namespace OHOS -#endif // OHOS_DM_DATASAHRE_COMMON_EVENT_H +#endif // OHOS_DM_DATASHARE_COMMON_EVENT_H diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index c2240e798..eaa6e07ae 100644 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -70,7 +70,7 @@ namespace { const int32_t NORMAL = 0; const int32_t SYSTEM_BASIC = 1; const int32_t SYSTEM_CORE = 2; - constexpr int32_t NUM3 = 3; + constexpr int32_t NETWORK_AVAILABLE = 3; constexpr const char *ALL_PKGNAME = ""; constexpr const char *NETWORKID = "NETWORK_ID"; constexpr uint32_t INVALIED_BIND_LEVEL = 0; @@ -178,8 +178,8 @@ DM_EXPORT void DeviceManagerService::SubscribeDataShareCommonEvent() if (arg1 == CommonEventSupport::COMMON_EVENT_LOCALE_CHANGED) { DeviceNameManager::GetInstance().InitDeviceNameWhenLanguageOrRegionChanged(); } - if (arg1 == CommonEventSupport::COMMON_EVENT_CONNECTIVITY_CHANGE && arg2 == NUM3) { - DeviceNameManager::GetInstance().InitDeviceNameWhenLanguageOrRegionChanged(); + if (arg1 == CommonEventSupport::COMMON_EVENT_CONNECTIVITY_CHANGE && arg2 == NETWORK_AVAILABLE) { + this->CheckRegisterInfoWithWise(); } }; std::vector commonEventVec; diff --git a/services/service/src/device_manager_service_listener.cpp b/services/service/src/device_manager_service_listener.cpp index cc6a8bab5..311dce7e9 100644 --- a/services/service/src/device_manager_service_listener.cpp +++ b/services/service/src/device_manager_service_listener.cpp @@ -993,6 +993,8 @@ void DeviceManagerServiceListener::OnSetLocalDeviceNameResult(const ProcessInfo if (code == DM_OK) { DeviceNameManager::GetInstance().ModifyUserDefinedName(deviceName); } +else + (void) deviceName; #endif ipcServerListener_.SendRequest(SET_LOCAL_DEVICE_NAME_RESULT, pReq, pRsp); } @@ -1007,6 +1009,7 @@ void DeviceManagerServiceListener::OnSetRemoteDeviceNameResult(const ProcessInfo pReq->SetDeviceId(deviceId); pReq->SetResult(code); pReq->SetProcessInfo(processInfo); + (void) deviceName; ipcServerListener_.SendRequest(SET_REMOTE_DEVICE_NAME_RESULT, pReq, pRsp); } } // namespace DistributedHardware -- Gitee