From de46dfa9858af021f9d684dfaa867f8942d3e2bf Mon Sep 17 00:00:00 2001 From: m00579239 Date: Wed, 29 Jun 2022 21:09:30 +0800 Subject: [PATCH] add permisison check Signed-off-by: m00579239 Change-Id: I2697b3f1e51b6c02a77a2bb4e3c3f645e2aa6bf4 --- .../include/distributed_sched_adapter.h | 3 - .../include/distributed_sched_interface.h | 4 - .../include/distributed_sched_proxy.h | 4 - .../include/distributed_sched_service.h | 4 - .../include/distributed_sched_stub.h | 13 +- .../distributed_sched_mission_manager.h | 22 -- .../include/mission/mission_changed_notify.h | 2 - .../src/distributed_sched_adapter.cpp | 18 - .../src/distributed_sched_proxy.cpp | 94 ----- .../src/distributed_sched_service.cpp | 22 -- .../src/distributed_sched_stub.cpp | 76 +--- .../distributed_sched_mission_manager.cpp | 363 +----------------- .../src/mission/mission_changed_notify.cpp | 27 -- .../mission/dms_mission_manager_test.cpp | 106 +---- .../test/unittest/mock_distributed_sched.cpp | 22 -- .../test/unittest/mock_distributed_sched.h | 4 - 16 files changed, 27 insertions(+), 757 deletions(-) diff --git a/services/dtbschedmgr/include/distributed_sched_adapter.h b/services/dtbschedmgr/include/distributed_sched_adapter.h index fbbc9c1..bd84d49 100644 --- a/services/dtbschedmgr/include/distributed_sched_adapter.h +++ b/services/dtbschedmgr/include/distributed_sched_adapter.h @@ -47,11 +47,8 @@ public: void DeviceOffline(const std::string& deviceId); void ProcessConnectDied(const sptr& connect); int32_t GetLocalMissionInfos(int32_t numMissions, std::vector& missionInfos); - bool AllowMissionUid(int32_t uid); int32_t RegisterMissionListener(const sptr& listener); int32_t UnRegisterMissionListener(const sptr& listener); - int32_t GetOsdSwitch(); - void OnOsdEventOccur(int32_t flag); int32_t GetLocalMissionSnapshotInfo(const std::string& networkId, int32_t missionId, AAFwk::MissionSnapshot& missionSnapshot); int32_t ReleaseAbility(const sptr& connect, const AppExecFwk::ElementName &element); diff --git a/services/dtbschedmgr/include/distributed_sched_interface.h b/services/dtbschedmgr/include/distributed_sched_interface.h index 14f07d0..39cba0f 100755 --- a/services/dtbschedmgr/include/distributed_sched_interface.h +++ b/services/dtbschedmgr/include/distributed_sched_interface.h @@ -93,10 +93,6 @@ public: std::unique_ptr& missionSnapshot) = 0; virtual int32_t NotifyMissionsChangedFromRemote(const std::vector& missionInfos, const CallerInfo& callerInfo) = 0; - virtual int32_t CheckSupportOsd(const std::string& deviceId) = 0; - virtual void GetCachedOsdSwitch(std::vector& deviceIds, std::vector& values) = 0; - virtual int32_t GetOsdSwitchValueFromRemote() = 0; - virtual int32_t UpdateOsdSwitchValueFromRemote(int32_t switchVal, const std::string& sourceDeviceId) = 0; #endif virtual int32_t StartRemoteAbilityByCall(const OHOS::AAFwk::Want& want, const sptr& connect, int32_t callerUid, int32_t callerPid, uint32_t accessToken) = 0; diff --git a/services/dtbschedmgr/include/distributed_sched_proxy.h b/services/dtbschedmgr/include/distributed_sched_proxy.h index dd6ef75..a825a16 100755 --- a/services/dtbschedmgr/include/distributed_sched_proxy.h +++ b/services/dtbschedmgr/include/distributed_sched_proxy.h @@ -63,10 +63,6 @@ public: std::unique_ptr& missionSnapshot) override; int32_t NotifyMissionsChangedFromRemote(const std::vector& missionInfos, const CallerInfo& callerInfo) override; - int32_t CheckSupportOsd(const std::string& deviceId) override; - void GetCachedOsdSwitch(std::vector& deviceIds, std::vector& values) override; - int32_t GetOsdSwitchValueFromRemote() override; - int32_t UpdateOsdSwitchValueFromRemote(int32_t switchVal, const std::string& sourceDeviceId) override; int32_t StartSyncMissionsFromRemote(const CallerInfo& callerInfo, std::vector& missionInfos) override; int32_t StopSyncMissionsFromRemote(const CallerInfo& callerInfo) override; diff --git a/services/dtbschedmgr/include/distributed_sched_service.h b/services/dtbschedmgr/include/distributed_sched_service.h index 37ee7e4..11a53e1 100755 --- a/services/dtbschedmgr/include/distributed_sched_service.h +++ b/services/dtbschedmgr/include/distributed_sched_service.h @@ -100,10 +100,6 @@ public: void DumpSessionsLocked(const std::list& sessionsList, std::string& info); void DumpElementLocked(const std::list& elementsList, std::string& info); #ifdef SUPPORT_DISTRIBUTED_MISSION_MANAGER - int32_t CheckSupportOsd(const std::string& deviceId) override; - void GetCachedOsdSwitch(std::vector& deviceIds, std::vector& values) override; - int32_t GetOsdSwitchValueFromRemote() override; - int32_t UpdateOsdSwitchValueFromRemote(int32_t switchVal, const std::string& sourceDeviceId) override; int32_t GetRemoteMissionSnapshotInfo(const std::string& networkId, int32_t missionId, std::unique_ptr& missionSnapshot) override; int32_t StartSyncRemoteMissions(const std::string& devId, bool fixConflict, int64_t tag) override; diff --git a/services/dtbschedmgr/include/distributed_sched_stub.h b/services/dtbschedmgr/include/distributed_sched_stub.h index fa09150..d10dafd 100644 --- a/services/dtbschedmgr/include/distributed_sched_stub.h +++ b/services/dtbschedmgr/include/distributed_sched_stub.h @@ -39,17 +39,13 @@ private: int32_t StartContinuationInner(MessageParcel& data, MessageParcel& reply); int32_t NotifyCompleteContinuationInner(MessageParcel& data, MessageParcel& reply); int32_t NotifyContinuationResultFromRemoteInner(MessageParcel& data, MessageParcel& reply); - bool CheckDmsRequestPermission(); int32_t ConnectRemoteAbilityInner(MessageParcel& data, MessageParcel& reply); int32_t DisconnectRemoteAbilityInner(MessageParcel& data, MessageParcel& reply); int32_t ConnectAbilityFromRemoteInner(MessageParcel& data, MessageParcel& reply); int32_t DisconnectAbilityFromRemoteInner(MessageParcel& data, MessageParcel& reply); int32_t NotifyProcessDiedFromRemoteInner(MessageParcel& data, MessageParcel& reply); #ifdef SUPPORT_DISTRIBUTED_MISSION_MANAGER - int32_t CheckSupportOsdInner(MessageParcel& data, MessageParcel& reply); - int32_t GetCachedOsdSwitchInner(MessageParcel& data, MessageParcel& reply); int32_t GetMissionInfosInner(MessageParcel& data, MessageParcel& reply); - int32_t GetOsdSwitchValueFromRemoteInner(MessageParcel& data, MessageParcel& reply); int32_t GetRemoteMissionSnapshotInfoInner(MessageParcel& data, MessageParcel& reply); int32_t RegisterMissionListenerInner(MessageParcel& data, MessageParcel& reply); int32_t UnRegisterMissionListenerInner(MessageParcel& data, MessageParcel& reply); @@ -58,11 +54,7 @@ private: int32_t StopSyncRemoteMissionsInner(MessageParcel& data, MessageParcel& reply); int32_t StopSyncMissionsFromRemoteInner(MessageParcel& data, MessageParcel& reply); int32_t NotifyMissionsChangedFromRemoteInner(MessageParcel& data, MessageParcel& reply); - int32_t NotifyOsdSwitchChangedInner(MessageParcel& data, MessageParcel& reply); - int32_t UpdateOsdSwitchValueFromRemoteInner(MessageParcel& data, MessageParcel& reply); #endif - bool CheckCallingUid(); - bool EnforceInterfaceToken(MessageParcel& data); int32_t StartRemoteAbilityByCallInner(MessageParcel& data, MessageParcel& reply); int32_t ReleaseRemoteAbilityInner(MessageParcel& data, MessageParcel& reply); int32_t StartAbilityByCallFromRemoteInner(MessageParcel& data, MessageParcel& reply); @@ -72,8 +64,11 @@ private: int32_t NotifyCompleteFreeInstallFromRemoteInner(MessageParcel& data, MessageParcel& reply); int32_t RegisterDistributedComponentListenerInner(MessageParcel& data, MessageParcel& reply); int32_t GetDistributedComponentListInner(MessageParcel& data, MessageParcel& reply); - + bool CheckDmsRequestPermission(); + bool CheckCallingUid(); + bool EnforceInterfaceToken(MessageParcel& data); bool CallerInfoUnmarshalling(CallerInfo& callerInfo, MessageParcel& data); + using DistributedSchedFunc = int32_t(DistributedSchedStub::*)(MessageParcel& data, MessageParcel& reply); std::map remoteFuncsMap_; std::map localFuncsMap_; diff --git a/services/dtbschedmgr/include/mission/distributed_sched_mission_manager.h b/services/dtbschedmgr/include/mission/distributed_sched_mission_manager.h index 94226b7..1c2b5f7 100644 --- a/services/dtbschedmgr/include/mission/distributed_sched_mission_manager.h +++ b/services/dtbschedmgr/include/mission/distributed_sched_mission_manager.h @@ -100,14 +100,6 @@ public: int32_t NotifyMissionsChangedToRemote(const std::vector& missionInfos); int32_t NotifyMissionsChangedFromRemote(const CallerInfo& callerInfo, const std::vector& missionInfos); - int32_t CheckSupportOsd(const std::string& deviceId); - int32_t CheckOsdSwitch(const std::string& deviceId); - void GetCachedOsdSwitch(std::vector& deviceIds, std::vector& values); - int32_t GetOsdSwitchValueFromRemote(); - int32_t UpdateOsdSwitchValueFromRemote(int32_t switchVal, const std::string& deviceId); - int32_t UpdateSwitchValueToRemote(); - void UpdateConnCapSupportOsd(const std::string& deviceId); - void NotifyOsdSwitchChanged(bool needNotifyChanged); void OnRemoteDmsDied(const wptr& remote); void NotifyDmsProxyProcessDied(); void OnDnetDied(); @@ -130,7 +122,6 @@ private: { return devId + "_" + std::to_string(missionId); } - bool AllowMissionUid(int32_t uid); int32_t StartSyncRemoteMissions(const std::string& dstDevId, const std::string& localDevId); int32_t StartSyncRemoteMissions(const std::string& dstDevId, const sptr& remoteDms); void CleanMissionResources(const std::string& dstDevId); @@ -142,16 +133,6 @@ private: std::vector& missionInfos); void RebornMissionCache(const std::string& deviceId, const std::vector& missionInfos); void CleanMissionCache(const std::string& deviceId); - void UpdateSwitchValueToRemoteInner(std::set& remoteSyncDeviceSet, - const std::string& localNetworkId); - void TryUpdateSwitchValueToRemote(const std::string& localNetworkId, - const std::string& destUuid, int32_t retryTime); - bool IsValidOsdSwitchValue(int32_t osdSwitchVal); - bool IsConnCapSupportOsd(const std::string& deviceId); - bool GetConnCapSupportOsd(const std::string& deviceId); - bool GetConnCapSupportOsdInnerLocked(const std::string& deviceId); - bool PreCheckSupportOsd(const std::string& deviceId); - void NotifyOsdSwitchChanged(bool needNotifyChanged, const std::string& deviceId, int32_t switchVal); void OnMissionListenerDied(const sptr& remote); void OnRemoteDmsDied(const sptr& remote); void RetryRegisterMissionChange(int32_t retryTimes); @@ -189,9 +170,6 @@ private: std::mutex remoteDmsLock_; std::shared_ptr missionHandler_; std::shared_ptr updateHandler_; - std::mutex osdSwitchLock_; - std::map osdSwitchValueMap_; // key is uuid - std::map connCapSupportOsdMap_; // key is networkId }; } } diff --git a/services/dtbschedmgr/include/mission/mission_changed_notify.h b/services/dtbschedmgr/include/mission/mission_changed_notify.h index 8591100..66dc43e 100644 --- a/services/dtbschedmgr/include/mission/mission_changed_notify.h +++ b/services/dtbschedmgr/include/mission/mission_changed_notify.h @@ -30,8 +30,6 @@ public: static void NotifyMissionsChanged(const sptr& remoteObject, const std::u16string& deviceId); static void NotifyNetDisconnect(const sptr& remoteObject, const std::u16string& deviceId, int32_t state); - static void NotifyOsdSwitchChanged(const sptr& remoteObject, const std::u16string& deviceId, - bool isSwitchOn); }; } // namespace DistributedSchedule } // namespace OHOS diff --git a/services/dtbschedmgr/src/distributed_sched_adapter.cpp b/services/dtbschedmgr/src/distributed_sched_adapter.cpp index fc0e4cd..cd85290 100644 --- a/services/dtbschedmgr/src/distributed_sched_adapter.cpp +++ b/services/dtbschedmgr/src/distributed_sched_adapter.cpp @@ -315,15 +315,6 @@ int32_t DistributedSchedAdapter::GetLocalMissionInfos(int32_t numMissions, return MissionInfoConverter::ConvertToDstbMissionInfos(amsMissions, missionInfos); } -bool DistributedSchedAdapter::AllowMissionUid(int32_t uid) -{ - if (uid < 0) { - HILOGE("AllowMissionUid invalid params!"); - return false; - } - return true; -} - int32_t DistributedSchedAdapter::RegisterMissionListener(const sptr& listener) { HILOGD("called."); @@ -387,15 +378,6 @@ int32_t DistributedSchedAdapter::GetLocalMissionSnapshotInfo(const std::string& HILOGD("pixelMap size:%{public}d", missionSnapshot.snapshot->GetCapacity()); return ERR_OK; } - -int32_t DistributedSchedAdapter::GetOsdSwitch() -{ - return MISSION_OSD_ENABLED; -} #endif - -void DistributedSchedAdapter::OnOsdEventOccur(int32_t flag) -{ -} } // namespace DistributedSchedule } // namespace OHOS diff --git a/services/dtbschedmgr/src/distributed_sched_proxy.cpp b/services/dtbschedmgr/src/distributed_sched_proxy.cpp index 24c9e10..785a386 100755 --- a/services/dtbschedmgr/src/distributed_sched_proxy.cpp +++ b/services/dtbschedmgr/src/distributed_sched_proxy.cpp @@ -519,73 +519,6 @@ int32_t DistributedSchedProxy::NotifyMissionsChangedFromRemote(const std::vector return result; } -int32_t DistributedSchedProxy::CheckSupportOsd(const std::string& deviceId) -{ - HILOGI("CheckSupportOsd is called"); - sptr remote = Remote(); - if (remote == nullptr) { - HILOGE("CheckSupportOsd remote service is null"); - return ERR_NULL_OBJECT; - } - MessageParcel data; - MessageParcel reply; - MessageOption option; - if (!data.WriteInterfaceToken(DMS_PROXY_INTERFACE_TOKEN)) { - return ERR_FLATTEN_OBJECT; - } - PARCEL_WRITE_HELPER(data, String, deviceId); - return remote->SendRequest(CHECK_SUPPORTED_OSD, data, reply, option); -} - -void DistributedSchedProxy::GetCachedOsdSwitch(std::vector& deviceIds, std::vector& values) -{ - HILOGI("GetCachedOsdSwitch is called"); - sptr remote = Remote(); - if (remote == nullptr) { - HILOGE("GetCachedOsdSwitch remote service is null"); - return; - } - MessageParcel data; - MessageParcel reply; - MessageOption option; - if (!data.WriteInterfaceToken(DMS_PROXY_INTERFACE_TOKEN)) { - return; - } - int32_t error = remote->SendRequest(GET_CACHED_SUPPORTED_OSD, data, reply, option); - if (error != ERR_NONE) { - HILOGE("%{public}s transact failed, error: %{public}d", __func__, error); - return; - } - PARCEL_READ_HELPER_NORET(reply, String16Vector, &deviceIds); - PARCEL_READ_HELPER_NORET(reply, Int32Vector, &values); - return; -} - -int32_t DistributedSchedProxy::GetOsdSwitchValueFromRemote() -{ - HILOGI("GetOsdSwitchValueFromRemote is called"); - sptr remote = Remote(); - if (remote == nullptr) { - HILOGE("GetOsdSwitchValueFromRemote remote service is null"); - return ERR_NULL_OBJECT; - } - - MessageParcel data; - if (!data.WriteInterfaceToken(DMS_PROXY_INTERFACE_TOKEN)) { - return ERR_FLATTEN_OBJECT; - } - MessageParcel reply; - MessageOption option { MessageOption::TF_SYNC, WAIT_TIME }; - int32_t error = remote->SendRequest(CHECK_SUPPORT_OSD_FROM_REMOTE, data, reply, option); - if (error != ERR_NONE) { - HILOGE("%{public}s transact failed, error: %{public}d", __func__, error); - return error; - } - int32_t result = reply.ReadInt32(); - HILOGD("%{public}s get result from server data = %{public}d", __func__, result); - return result; -} - int32_t DistributedSchedProxy::GetRemoteMissionSnapshotInfo(const std::string& networkId, int32_t missionId, std::unique_ptr& missionSnapshot) { @@ -619,33 +552,6 @@ int32_t DistributedSchedProxy::GetRemoteMissionSnapshotInfo(const std::string& n missionSnapshot = std::move(missionSnapshotPtr); return ERR_NONE; } - -int32_t DistributedSchedProxy::UpdateOsdSwitchValueFromRemote(int32_t switchVal, - const std::string& sourceDeviceId) -{ - HILOGD("called"); - sptr remote = Remote(); - if (remote == nullptr) { - HILOGE("remote service is null"); - return ERR_NULL_OBJECT; - } - MessageParcel data; - if (!data.WriteInterfaceToken(DMS_PROXY_INTERFACE_TOKEN)) { - return ERR_FLATTEN_OBJECT; - } - PARCEL_WRITE_HELPER(data, Int32, switchVal); - PARCEL_WRITE_HELPER(data, String, sourceDeviceId); - MessageParcel reply; - MessageOption option { MessageOption::TF_SYNC, WAIT_TIME }; - int32_t error = remote->SendRequest(NOTIFY_SWITCH_CHANGED_FROM_REMOTE, data, reply, option); - if (error != ERR_NONE) { - HILOGE("%{public}s transact failed, error: %{public}d", __func__, error); - return error; - } - int32_t result = reply.ReadInt32(); - HILOGD("%{public}s get result from server data = %{public}d", __func__, result); - return result; -} #endif bool DistributedSchedProxy::CallerInfoMarshalling(const CallerInfo& callerInfo, MessageParcel& data) diff --git a/services/dtbschedmgr/src/distributed_sched_service.cpp b/services/dtbschedmgr/src/distributed_sched_service.cpp index bf47d14..4f8d63f 100644 --- a/services/dtbschedmgr/src/distributed_sched_service.cpp +++ b/services/dtbschedmgr/src/distributed_sched_service.cpp @@ -1588,21 +1588,6 @@ int32_t DistributedSchedService::GetRemoteMissionSnapshotInfo(const std::string& .GetRemoteMissionSnapshotInfo(networkId, missionId, missionSnapshot); } -int32_t DistributedSchedService::CheckSupportOsd(const std::string& deviceId) -{ - return DistributedSchedMissionManager::GetInstance().CheckSupportOsd(deviceId); -} - -void DistributedSchedService::GetCachedOsdSwitch(std::vector& deviceIds, std::vector& values) -{ - return DistributedSchedMissionManager::GetInstance().GetCachedOsdSwitch(deviceIds, values); -} - -int32_t DistributedSchedService::GetOsdSwitchValueFromRemote() -{ - return DistributedSchedMissionManager::GetInstance().GetOsdSwitchValueFromRemote(); -} - int32_t DistributedSchedService::RegisterMissionListener(const std::u16string& devId, const sptr& obj) { @@ -1636,13 +1621,6 @@ int32_t DistributedSchedService::StopSyncMissionsFromRemote(const CallerInfo& ca DistributedSchedMissionManager::GetInstance().StopSyncMissionsFromRemote(callerInfo.sourceDeviceId); return ERR_NONE; } - -int32_t DistributedSchedService::UpdateOsdSwitchValueFromRemote(int32_t switchVal, - const std::string& sourceDeviceId) -{ - return DistributedSchedMissionManager::GetInstance() - .UpdateOsdSwitchValueFromRemote(switchVal, sourceDeviceId); -} #endif void CallerDeathRecipient::OnRemoteDied(const wptr& remote) diff --git a/services/dtbschedmgr/src/distributed_sched_stub.cpp b/services/dtbschedmgr/src/distributed_sched_stub.cpp index 3f01717..79288a9 100755 --- a/services/dtbschedmgr/src/distributed_sched_stub.cpp +++ b/services/dtbschedmgr/src/distributed_sched_stub.cpp @@ -62,15 +62,12 @@ DistributedSchedStub::DistributedSchedStub() localFuncsMap_[DISCONNECT_REMOTE_ABILITY] = &DistributedSchedStub::DisconnectRemoteAbilityInner; // request codes for mission manager #ifdef SUPPORT_DISTRIBUTED_MISSION_MANAGER - localFuncsMap_[CHECK_SUPPORTED_OSD] = &DistributedSchedStub::CheckSupportOsdInner; localFuncsMap_[GET_REMOTE_MISSION_SNAPSHOT_INFO] = &DistributedSchedStub::GetRemoteMissionSnapshotInfoInner; localFuncsMap_[REGISTER_MISSION_LISTENER] = &DistributedSchedStub::RegisterMissionListenerInner; localFuncsMap_[UNREGISTER_MISSION_LISTENER] = &DistributedSchedStub::UnRegisterMissionListenerInner; localFuncsMap_[GET_MISSION_INFOS] = &DistributedSchedStub::GetMissionInfosInner; localFuncsMap_[START_SYNC_MISSIONS] = &DistributedSchedStub::StartSyncRemoteMissionsInner; localFuncsMap_[STOP_SYNC_MISSIONS] = &DistributedSchedStub::StopSyncRemoteMissionsInner; - localFuncsMap_[SWITCH_CHANGED] = &DistributedSchedStub::NotifyOsdSwitchChangedInner; - localFuncsMap_[GET_CACHED_SUPPORTED_OSD] = &DistributedSchedStub::GetCachedOsdSwitchInner; #endif remoteFuncsMap_[START_ABILITY_FROM_REMOTE] = &DistributedSchedStub::StartAbilityFromRemoteInner; remoteFuncsMap_[SEND_RESULT_FROM_REMOTE] = &DistributedSchedStub::SendResultFromRemoteInner; @@ -81,13 +78,11 @@ DistributedSchedStub::DistributedSchedStub() remoteFuncsMap_[NOTIFY_PROCESS_DIED_FROM_REMOTE] = &DistributedSchedStub::NotifyProcessDiedFromRemoteInner; #ifdef SUPPORT_DISTRIBUTED_MISSION_MANAGER // request codes for mission manager - remoteFuncsMap_[CHECK_SUPPORT_OSD_FROM_REMOTE] = &DistributedSchedStub::GetOsdSwitchValueFromRemoteInner; remoteFuncsMap_[START_SYNC_MISSIONS_FROM_REMOTE] = &DistributedSchedStub::StartSyncMissionsFromRemoteInner; remoteFuncsMap_[STOP_SYNC_MISSIONS_FROM_REMOTE] = &DistributedSchedStub::StopSyncMissionsFromRemoteInner; remoteFuncsMap_[NOTIFY_MISSIONS_CHANGED_FROM_REMOTE] = &DistributedSchedStub::NotifyMissionsChangedFromRemoteInner; - remoteFuncsMap_[NOTIFY_SWITCH_CHANGED_FROM_REMOTE] = &DistributedSchedStub::UpdateOsdSwitchValueFromRemoteInner; #endif remoteFuncsMap_[CONTINUE_MISSION] = &DistributedSchedStub::ContinueMissionInner; // request codes for call ability @@ -528,6 +523,9 @@ bool DistributedSchedStub::EnforceInterfaceToken(MessageParcel& data) int32_t DistributedSchedStub::GetMissionInfosInner(MessageParcel& data, MessageParcel& reply) { HILOGI("[PerformanceTest] called, IPC end = %{public}" PRId64, GetTickCount()); + if (!DistributedSchedPermission::GetInstance().IsFoundationCall()) { + return DMS_PERMISSION_DENIED; + } std::u16string deviceId = data.ReadString16(); int32_t numMissions = 0; PARCEL_READ_HELPER(data, Int32, numMissions); @@ -613,6 +611,10 @@ int32_t DistributedSchedStub::UnRegisterMissionListenerInner(MessageParcel& data int32_t DistributedSchedStub::StartSyncMissionsFromRemoteInner(MessageParcel& data, MessageParcel& reply) { + if (!CheckCallingUid()) { + HILOGW("request DENIED!"); + return DMS_PERMISSION_DENIED; + } CallerInfo callerInfo; if (!CallerInfoUnmarshalling(callerInfo, data)) { HILOGW("read callerInfo failed!"); @@ -635,6 +637,9 @@ int32_t DistributedSchedStub::StartSyncMissionsFromRemoteInner(MessageParcel& da int32_t DistributedSchedStub::StopSyncRemoteMissionsInner(MessageParcel& data, MessageParcel& reply) { HILOGI("[PerformanceTest] called, IPC end = %{public}" PRId64, GetTickCount()); + if (!DistributedSchedPermission::GetInstance().IsFoundationCall()) { + return DMS_PERMISSION_DENIED; + } u16string devId = data.ReadString16(); if (devId.empty()) { HILOGW("read deviceId failed!"); @@ -646,6 +651,10 @@ int32_t DistributedSchedStub::StopSyncRemoteMissionsInner(MessageParcel& data, M int32_t DistributedSchedStub::StopSyncMissionsFromRemoteInner(MessageParcel& data, MessageParcel& reply) { + if (!CheckCallingUid()) { + HILOGW("request DENIED!"); + return DMS_PERMISSION_DENIED; + } CallerInfo callerInfo; if (!CallerInfoUnmarshalling(callerInfo, data)) { HILOGW("read callerInfo failed!"); @@ -655,33 +664,12 @@ int32_t DistributedSchedStub::StopSyncMissionsFromRemoteInner(MessageParcel& dat PARCEL_WRITE_REPLY_NOERROR(reply, Int32, result); } -int32_t DistributedSchedStub::CheckSupportOsdInner(MessageParcel& data, MessageParcel& reply) -{ - HILOGI("[PerformanceTest] called, IPC end = %{public}" PRId64, GetTickCount()); - int64_t begin = GetTickCount(); - std::u16string deviceId = data.ReadString16(); - std::string u8DeviceId = Str16ToStr8(deviceId); - int32_t result = CheckSupportOsd(u8DeviceId); - HILOGI("result = %{public}d, deviceId = %{public}s spend %{public}" PRId64 " ms", - result, DnetworkAdapter::AnonymizeDeviceId(u8DeviceId).c_str(), GetTickCount() - begin); - PARCEL_WRITE_REPLY_NOERROR(reply, Int32, result); -} - -int32_t DistributedSchedStub::GetCachedOsdSwitchInner(MessageParcel& data, MessageParcel& reply) -{ - HILOGI("[PerformanceTest] called, IPC end = %{public}" PRId64, GetTickCount()); - std::vector deviceIds; - std::vector values; - int64_t begin = GetTickCount(); - GetCachedOsdSwitch(deviceIds, values); - HILOGI("spend %{public}" PRId64 " ms", GetTickCount() - begin); - PARCEL_WRITE_HELPER(reply, String16Vector, deviceIds); - PARCEL_WRITE_HELPER(reply, Int32Vector, values); - return ERR_NONE; -} - int32_t DistributedSchedStub::NotifyMissionsChangedFromRemoteInner(MessageParcel& data, MessageParcel& reply) { + if (!CheckCallingUid()) { + HILOGW("request DENIED!"); + return DMS_PERMISSION_DENIED; + } int32_t version = data.ReadInt32(); HILOGD("version is %{public}d", version); std::vector missionInfos; @@ -697,33 +685,11 @@ int32_t DistributedSchedStub::NotifyMissionsChangedFromRemoteInner(MessageParcel PARCEL_WRITE_REPLY_NOERROR(reply, Int32, result); } -int32_t DistributedSchedStub::GetOsdSwitchValueFromRemoteInner(MessageParcel& data, MessageParcel& reply) -{ - int32_t result = GetOsdSwitchValueFromRemote(); - HILOGI("result = %{public}d", result); - PARCEL_WRITE_HELPER(reply, Int32, result); - return ERR_NONE; -} - -int32_t DistributedSchedStub::NotifyOsdSwitchChangedInner(MessageParcel& data, MessageParcel& reply) -{ - int32_t result = DistributedSchedMissionManager::GetInstance().UpdateSwitchValueToRemote(); - HILOGI("result: %{public}d!", result); - return ERR_NONE; -} - -int32_t DistributedSchedStub::UpdateOsdSwitchValueFromRemoteInner(MessageParcel& data, MessageParcel& reply) -{ - int32_t switchVal = data.ReadInt32(); - std::string srcUuid = data.ReadString(); - int32_t result = UpdateOsdSwitchValueFromRemote(switchVal, srcUuid); - HILOGD("srcUuid: %s, result: %d!", - srcUuid.c_str(), result); - PARCEL_WRITE_REPLY_NOERROR(reply, Int32, result); -} - int32_t DistributedSchedStub::StartSyncRemoteMissionsInner(MessageParcel& data, MessageParcel& reply) { + if (!DistributedSchedPermission::GetInstance().IsFoundationCall()) { + return DMS_PERMISSION_DENIED; + } HILOGI("[PerformanceTest], IPC end = %{public}" PRId64, GetTickCount()); u16string devId = data.ReadString16(); if (devId.empty()) { diff --git a/services/dtbschedmgr/src/mission/distributed_sched_mission_manager.cpp b/services/dtbschedmgr/src/mission/distributed_sched_mission_manager.cpp index 6909581..073b882 100644 --- a/services/dtbschedmgr/src/mission/distributed_sched_mission_manager.cpp +++ b/services/dtbschedmgr/src/mission/distributed_sched_mission_manager.cpp @@ -38,16 +38,11 @@ namespace DistributedSchedule { namespace { const std::string TAG = "DistributedSchedMissionManager"; constexpr size_t MAX_CACHED_ITEM = 10; -constexpr int32_t FIRST_APPLICATION_UID = 10000; -constexpr int32_t MULTIUSER_HAP_PER_USER_RANGE = 100000; constexpr int32_t MAX_RETRY_TIMES = 15; constexpr int32_t RETRY_DELAYED = 2000; constexpr int32_t GET_FOREGROUND_SNAPSHOT_DELAY_TIME = 800; // ms const std::string DELETE_DATA_STORAGE = "DeleteDataStorage"; constexpr int32_t DELETE_DATA_STORAGE_DELAYED = 60000; // ms -constexpr int32_t REGISTER_MISSION_LISTENER = 0; -constexpr int32_t UNREGISTER_MISSION_LISTENER = 1; -constexpr int64_t DELAY_TIME = 300; const std::string INVAILD_LOCAL_DEVICE_ID = "-1"; } namespace Mission { @@ -76,10 +71,6 @@ int32_t DistributedSchedMissionManager::GetMissionInfos(const std::string& devic int32_t numMissions, std::vector& missionInfos) { HILOGI("start!"); - if (!AllowMissionUid(IPCSkeleton::GetCallingUid())) { - HILOGE("permission denied!"); - return ERR_PERMISSION_DENIED; - } if (!IsDeviceIdValidated(deviceId)) { return INVALID_PARAMETERS_ERR; } @@ -220,10 +211,6 @@ int32_t DistributedSchedMissionManager::RemoveSnapshotInfo(const std::string& de int32_t DistributedSchedMissionManager::GetRemoteMissionSnapshotInfo(const std::string& networkId, int32_t missionId, std::unique_ptr& missionSnapshot) { - if (!AllowMissionUid(IPCSkeleton::GetCallingUid())) { - HILOGE("permission denied!"); - return DMS_PERMISSION_DENIED; - } std::string uuid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUuidByNetworkId(networkId); if (uuid.empty()) { HILOGE("uuid is empty!"); @@ -287,46 +274,8 @@ void DistributedSchedMissionManager::DeviceOfflineNotify(const std::string& devi remoteDmsMap_.erase(iter); } } - int64_t begin = GetTickCount(); - { - std::lock_guard autoLock(osdSwitchLock_); - connCapSupportOsdMap_.erase(deviceId); - } - HILOGI("DeviceOfflineNotify erase value for deviceId: %{public}s spend %{public}" PRId64 " ms", - DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str(), GetTickCount() - begin); -} - -void DistributedSchedMissionManager::UpdateConnCapSupportOsd(const std::string& deviceId) -{ - HILOGI("UpdateConnCapSupportOsd begin, deviceId is %{public}s", + HILOGI("DeviceOfflineNotify erase value for deviceId: %{public}s", DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str()); - bool isSupportOsd = IsConnCapSupportOsd(deviceId); - bool needNotifyChanged = false; - int32_t switchVal = MISSION_OSD_NOT_SUPPORTED; - { - std::string uuid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUuidByNetworkId(deviceId); - std::lock_guard autoLock(osdSwitchLock_); - auto iter = connCapSupportOsdMap_.find(deviceId); - if (iter != connCapSupportOsdMap_.end()) { - needNotifyChanged = (iter->second != isSupportOsd); - } else { - needNotifyChanged = true; - } - connCapSupportOsdMap_[deviceId] = isSupportOsd; - HILOGI("UpdateConnCapSupportOsd end, isSupportOsd is %{public}d", isSupportOsd); - auto iterOsdSwitch = osdSwitchValueMap_.find(uuid); - if (isSupportOsd && iterOsdSwitch == osdSwitchValueMap_.end()) { - HILOGI("UpdateConnCapSupportOsd can not find osd switch value!"); - return; - } - switchVal = isSupportOsd ? iterOsdSwitch->second : MISSION_OSD_NOT_SUPPORTED; - } - NotifyOsdSwitchChanged(needNotifyChanged, deviceId, switchVal); -} - -bool DistributedSchedMissionManager::IsConnCapSupportOsd(const std::string& deviceId) -{ - return true; } void DistributedSchedMissionManager::DeleteDataStorage(const std::string& deviceId, bool isDelayed) @@ -368,10 +317,6 @@ int32_t DistributedSchedMissionManager::RegisterMissionListener(const std::u16st if (listener == nullptr) { return INVALID_PARAMETERS_ERR; } - if (!AllowMissionUid(IPCSkeleton::GetCallingUid())) { - HILOGE("permission denied!"); - return DMS_PERMISSION_DENIED; - } std::string localDeviceId; std::string remoteDeviceId = Str16ToStr8(devId); if (!DtbschedmgrDeviceInfoStorage::GetInstance().GetLocalDeviceId(localDeviceId) @@ -395,11 +340,6 @@ int32_t DistributedSchedMissionManager::RegisterMissionListener(const std::u16st return ERR_NONE; } } - - if (CheckOsdSwitch(remoteDeviceId) != MISSION_OSD_ENABLED) { - NotifyOsdSwitchChanged(true, remoteDeviceId, MISSION_OSD_NOT_SUPPORTED); - return MISSION_OSD_NOT_SUPPORTED; - } return ERR_NONE; } @@ -460,10 +400,6 @@ int32_t DistributedSchedMissionManager::UnRegisterMissionListener(const std::u16 if (listener == nullptr) { return INVALID_PARAMETERS_ERR; } - if (!AllowMissionUid(IPCSkeleton::GetCallingUid())) { - HILOGE("permission denied!"); - return DMS_PERMISSION_DENIED; - } std::string localDeviceId; if (!DtbschedmgrDeviceInfoStorage::GetInstance().GetLocalDeviceId(localDeviceId) || localDeviceId == Str16ToStr8(devId)) { @@ -549,11 +485,6 @@ int32_t DistributedSchedMissionManager::StartSyncRemoteMissions(const std::strin HILOGI("begin, dstDevId is %{public}s, local deviceId is %{public}s", DnetworkAdapter::AnonymizeDeviceId(dstDevId).c_str(), DnetworkAdapter::AnonymizeDeviceId(localDeviceId).c_str()); - if (dstDevId != INVAILD_LOCAL_DEVICE_ID && dstDevId != localDeviceId && - CheckOsdSwitch(dstDevId) != MISSION_OSD_ENABLED) { - NotifyOsdSwitchChanged(true, dstDevId, MISSION_OSD_NOT_SUPPORTED); - return MISSION_OSD_NOT_SUPPORTED; - } auto ret = StartSyncRemoteMissions(dstDevId, localDeviceId); if (ret != ERR_NONE) { HILOGE("StartSyncRemoteMissions failed, %{public}d", ret); @@ -570,13 +501,6 @@ int32_t DistributedSchedMissionManager::StartSyncMissionsFromRemote(const Caller { std::lock_guard autoLock(remoteSyncDeviceLock_); remoteSyncDeviceSet_.emplace(deviceId); - if (remoteSyncDeviceSet_.size() == 1) { - DistributedSchedAdapter::GetInstance().OnOsdEventOccur(REGISTER_MISSION_LISTENER); - } - } - if (GetOsdSwitchValueFromRemote() != MISSION_OSD_ENABLED) { - HILOGI("osd function is disable!"); - return ERR_NONE; } int32_t result = DistributedSchedAdapter::GetInstance().GetLocalMissionInfos(Mission::GET_MAX_MISSIONS, missionInfos); @@ -606,7 +530,6 @@ void DistributedSchedMissionManager::StopSyncMissionsFromRemote(const std::strin auto func = [this]() { int32_t ret = DistributedSchedAdapter::GetInstance().UnRegisterMissionListener(missonChangeListener_); if (ret == ERR_OK) { - DistributedSchedAdapter::GetInstance().OnOsdEventOccur(UNREGISTER_MISSION_LISTENER); isRegMissionChange_ = false; } }; @@ -972,156 +895,6 @@ std::shared_ptr DistributedSchedMissionManager::FetchD return handler; } -bool DistributedSchedMissionManager::GetConnCapSupportOsd(const std::string& deviceId) -{ - HILOGI("GetConnCapSupportOsd begin, deviceId is %{public}s", - DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str()); - std::lock_guard autoLock(osdSwitchLock_); - return GetConnCapSupportOsdInnerLocked(deviceId); -} - -bool DistributedSchedMissionManager::GetConnCapSupportOsdInnerLocked(const std::string& deviceId) -{ - bool connCapSupportOsd = false; - auto iter = connCapSupportOsdMap_.find(deviceId); - if (iter != connCapSupportOsdMap_.end()) { - connCapSupportOsd = iter->second; - HILOGI("CheckSupportOsd find connCapSupportOsd is %{public}d", connCapSupportOsd); - } else { - HILOGI("CheckSupportOsd can not find connCapSupportOsd, try to get it!"); - connCapSupportOsd = IsConnCapSupportOsd(deviceId); - connCapSupportOsdMap_[deviceId] = connCapSupportOsd; - } - return connCapSupportOsd; -} - -bool DistributedSchedMissionManager::PreCheckSupportOsd(const std::string& deviceId) -{ - if (!AllowMissionUid(IPCSkeleton::GetCallingUid())) { - HILOGE("CheckSupportOsd permission denied!"); - return false; - } - if (!IsDeviceIdValidated(deviceId)) { - HILOGE("DeviceId is inValidated!"); - return false; - } - if (!GetConnCapSupportOsd(deviceId)) { - HILOGI("CheckSupportOsd conn cap not support osd!"); - return false; - } - return true; -} - -int32_t DistributedSchedMissionManager::CheckSupportOsd(const std::string& deviceId) -{ - HILOGI("CheckSupportOsd start, deviceId: %{public}s!", - DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str()); - if (!PreCheckSupportOsd(deviceId)) { - return MISSION_OSD_NOT_SUPPORTED; - } - int64_t begin = GetTickCount(); - { - std::string uuid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUuidByNetworkId(deviceId); - std::lock_guard autoLock(osdSwitchLock_); - auto iter = osdSwitchValueMap_.find(uuid); - if (iter != osdSwitchValueMap_.end()) { - HILOGI("CheckSupportOsd find value spend %{public}" PRId64 " ms", GetTickCount() - begin); - return iter->second; - } - } - HILOGI("CheckSupportOsd can not find value spend %{public}" PRId64 " ms", GetTickCount() - begin); - - sptr remoteDms = GetRemoteDms(deviceId); - if (remoteDms == nullptr) { - HILOGE("CheckSupportOsd DMS get remoteDms failed"); - return MISSION_OSD_NOT_SUPPORTED; - } - begin = GetTickCount(); - int32_t osdSwitchVal = remoteDms->GetOsdSwitchValueFromRemote(); - HILOGI("[PerformanceTest] GetOsdSwitchValueFromRemote osdSwitch:%d, spend %{public}" PRId64 " ms", - osdSwitchVal, GetTickCount() - begin); - if (osdSwitchVal == IPC_STUB_UNKNOW_TRANS_ERR) { - HILOGI("GetOsdSwitchValueFromRemote destUuid: %{public}s does not support osd result: %{public}d", - DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str(), osdSwitchVal); - osdSwitchVal = MISSION_OSD_NOT_SUPPORTED; - } - if (!IsValidOsdSwitchValue(osdSwitchVal)) { - HILOGE("CheckSupportOsd osdSwitch %{public}d is invalid!", osdSwitchVal); - return MISSION_OSD_NOT_SUPPORTED; - } - begin = GetTickCount(); - std::string uuid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUuidByNetworkId(deviceId); - std::lock_guard autoLock(osdSwitchLock_); - osdSwitchValueMap_[uuid] = osdSwitchVal; - HILOGI("CheckSupportOsd insert value spend %{public}" PRId64 " ms", GetTickCount() - begin); - return osdSwitchVal; -} - -int32_t DistributedSchedMissionManager::CheckOsdSwitch(const std::string& deviceId) -{ - HILOGI("CheckOsdSwitch start, deviceId: %{public}s!", - DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str()); - if (!PreCheckSupportOsd(deviceId)) { - return MISSION_OSD_NOT_SUPPORTED; - } - int64_t begin = GetTickCount(); - { - std::string uuid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUuidByNetworkId(deviceId); - std::lock_guard autoLock(osdSwitchLock_); - auto iter = osdSwitchValueMap_.find(uuid); - if (iter != osdSwitchValueMap_.end()) { - HILOGI("CheckOsdSwitch find value spend %{public}" PRId64 " ms", GetTickCount() - begin); - return iter->second; - } - } - HILOGI("CheckOsdSwitch can not find value spend %{public}" PRId64 " ms", GetTickCount() - begin); - return MISSION_OSD_ENABLED; -} - -void DistributedSchedMissionManager::GetCachedOsdSwitch(std::vector& deviceIds, - std::vector& values) -{ - HILOGI("GetCachedOsdSwitch start"); - if (!AllowMissionUid(IPCSkeleton::GetCallingUid())) { - HILOGE("GetCachedOsdSwitch permission denied!"); - return; - } - std::lock_guard autoLock(osdSwitchLock_); - for (const auto& [uuid, value] : osdSwitchValueMap_) { - std::string deviceId = DtbschedmgrDeviceInfoStorage::GetInstance().GetNetworkIdByUuid(uuid); - deviceIds.emplace_back(Str8ToStr16(deviceId)); - bool connCapSupportOsd = GetConnCapSupportOsdInnerLocked(deviceId); - values.emplace_back(connCapSupportOsd ? value : MISSION_OSD_NOT_SUPPORTED); - } -} - -int32_t DistributedSchedMissionManager::GetOsdSwitchValueFromRemote() -{ - HILOGI("GetOsdSwitchValueFromRemote start!"); - return DistributedSchedAdapter::GetInstance().GetOsdSwitch(); -} - -bool DistributedSchedMissionManager::AllowMissionUid(int32_t uid) -{ - int32_t appId = uid % MULTIUSER_HAP_PER_USER_RANGE; - if (appId < FIRST_APPLICATION_UID) { - return true; - } - std::lock_guard autoLock(allowMissionUidsLock_); - if (allowMissionUids_.count(appId) == 0) { - int64_t begin = GetTickCount(); - bool ret = DistributedSchedAdapter::GetInstance().AllowMissionUid(uid); - HILOGI("AllowMissionUid ret:%{public}s, spend %{public}" PRId64 " ms!", - (ret ? "succ" : "fail"), GetTickCount() - begin); - if (!ret) { - HILOGW("AllowMissionUid failed!"); - return false; - } - allowMissionUids_.insert(appId); - } - return true; -} - void DistributedSchedMissionManager::RemoteDmsDeathRecipient::OnRemoteDied(const wptr& remote) { HILOGI("OnRemoteDied received died notify!"); @@ -1166,139 +939,6 @@ void DistributedSchedMissionManager::RetryStartSyncRemoteMissions(const std::str } } -int32_t DistributedSchedMissionManager::UpdateOsdSwitchValueFromRemote(int32_t switchVal, - const std::string& deviceId) -{ - HILOGI("UpdateOsdSwitchValueFromRemote notify start, switchVal: %{public}d, deviceId: %{public}s!", - switchVal, DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str()); - bool needNotifyChanged = false; - bool connCap = false; - int64_t begin = GetTickCount(); - { - std::string uuid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUuidByNetworkId(deviceId); - std::lock_guard autoLock(osdSwitchLock_); - auto iter = osdSwitchValueMap_.find(uuid); - if (iter != osdSwitchValueMap_.end()) { - needNotifyChanged = (iter->second != switchVal); - } else { - needNotifyChanged = true; - } - osdSwitchValueMap_[uuid] = switchVal; - connCap = GetConnCapSupportOsdInnerLocked(deviceId); - } - HILOGI("UpdateOsdSwitchValueFromRemote update value spend %{public}" PRId64 " ms", GetTickCount() - begin); - NotifyOsdSwitchChanged(needNotifyChanged, deviceId, connCap ? switchVal : MISSION_OSD_NOT_SUPPORTED); - HILOGD("UpdateOsdSwitchValueFromRemote end!"); - return ERR_NONE; -} - -void DistributedSchedMissionManager::NotifyOsdSwitchChanged(bool needNotifyChanged, const std::string& deviceId, - int32_t switchVal) -{ - std::lock_guard autoLock(listenDeviceLock_); - if (!needNotifyChanged) { - HILOGI("NotifyOsdSwitchChanged no need to notify!"); - return; - } - auto iter = listenDeviceMap_.find(Str8ToStr16(deviceId)); - if (iter == listenDeviceMap_.end()) { - HILOGI("NotifyOsdSwitchChanged notify no listener!"); - return; - } - - auto& listenerSet = iter->second.listenerSet; - auto notifyChanged = [listenerSet, deviceId, switchVal, this] () { - HILOGI("NotifyOsdSwitchChanged %{public}s!", - DnetworkAdapter::AnonymizeDeviceId(deviceId).c_str()); - bool isSwitchOn = (switchVal == MISSION_OSD_ENABLED); - for (const auto& listener : listenerSet) { - MissionChangedNotify::NotifyOsdSwitchChanged(listener, Str8ToStr16(deviceId), isSwitchOn); - } - }; - if (missionHandler_ != nullptr && !missionHandler_->PostTask(notifyChanged)) { - HILOGE("NotifyOsdSwitchChanged PostTask failed!"); - } -} - -int32_t DistributedSchedMissionManager::UpdateSwitchValueToRemote() -{ - auto callback = [this] () { - std::string localNetworkId; - if (!DtbschedmgrDeviceInfoStorage::GetInstance().GetLocalDeviceId(localNetworkId)) { - HILOGE("UpdateSwitchValueToRemote get local uuid failed!"); - return; - } - std::set remoteSyncDeviceSet; - DtbschedmgrDeviceInfoStorage::GetInstance().GetDeviceIdSet(remoteSyncDeviceSet); - UpdateSwitchValueToRemoteInner(remoteSyncDeviceSet, localNetworkId); - }; - if (updateHandler_ == nullptr) { - HILOGE("UpdateSwitchValueToRemote updateHandler_ is nullptr"); - return ERR_NULL_OBJECT; - } - if (!updateHandler_->PostTask(callback)) { - HILOGE("UpdateSwitchValueToRemote PostTask failed!"); - return ERR_NULL_OBJECT; - } - return ERR_NONE; -} - -void DistributedSchedMissionManager::UpdateSwitchValueToRemoteInner(std::set& remoteSyncDeviceSet, - const std::string& localNetworkId) -{ - HILOGD("UpdateSwitchValueToRemote Start"); - for (auto iter = remoteSyncDeviceSet.begin(); iter != remoteSyncDeviceSet.end(); iter++) { - TryUpdateSwitchValueToRemote(localNetworkId, *iter, 0); - } -} - -void DistributedSchedMissionManager::TryUpdateSwitchValueToRemote(const std::string& localNetworkId, - const std::string& destUuid, int32_t retryTime) -{ - std::lock_guard autoLock(remoteSyncDeviceLock_); - auto handler = FetchDeviceHandler(destUuid); - auto callback = [retryTime, localNetworkId, destUuid, this] () { - sptr remoteDms = GetRemoteDms(destUuid); - int32_t result = ERR_FLATTEN_OBJECT; - if (remoteDms != nullptr) { - int64_t begin = GetTickCount(); - int32_t switchVal = DistributedSchedAdapter::GetInstance().GetOsdSwitch(); - HILOGI("TryUpdateSwitchValueToRemote switchVal: %{public}d, destUuid: %{public}s retry:%{public}d", - switchVal, DnetworkAdapter::AnonymizeDeviceId(destUuid).c_str(), retryTime); - if (!IsValidOsdSwitchValue(switchVal)) { - HILOGI("UpdateSwitchValueToRemote invalid switch value %{public}d!", switchVal); - return; - } - result = remoteDms->UpdateOsdSwitchValueFromRemote(switchVal, localNetworkId); - HILOGI("[PerformanceTest] TryUpdateSwitchValueToRemote ret:%d, spend %{public}" PRId64 " ms", - result, GetTickCount() - begin); - } else { - HILOGE("TryUpdateSwitchValueToRemote DMS get remoteDms failed"); - } - if (result == IPC_STUB_UNKNOW_TRANS_ERR) { - HILOGI("TryUpdateSwitchValueToRemote destUuid: %{public}s does not support osd result: %{public}d", - DnetworkAdapter::AnonymizeDeviceId(destUuid).c_str(), result); - return; - } - if (result != ERR_NONE) { - TryUpdateSwitchValueToRemote(localNetworkId, destUuid, retryTime + 1); - HILOGI("DMS TryUpdateSwitchValueToRemote retry"); - } - HILOGI("DMS TryUpdateSwitchValueToRemote result:%{public}d", result); - }; - if (handler != nullptr && retryTime < MAX_RETRY_TIMES) { - handler->PostTask(callback, DELAY_TIME); - } -} - -bool DistributedSchedMissionManager::IsValidOsdSwitchValue(int32_t osdSwitchVal) -{ - return osdSwitchVal == MISSION_OSD_NOT_SUPPORTED || osdSwitchVal == MISSION_OSD_NOT_ENABLED || - osdSwitchVal == MISSION_OSD_ENABLED || osdSwitchVal == MISSION_OSD_CCM_NOT_SUPPORTED || - osdSwitchVal == MISSION_OSD_WIFI_OFF || osdSwitchVal == MISSION_OSD_CHILDMODE_ON || - osdSwitchVal == MISSION_OSD_CLOUD_SWITCH_OFF; -} - void DistributedSchedMissionManager::OnMissionListenerDied(const sptr& remote) { HILOGI("OnMissionListenerDied"); @@ -1464,7 +1104,6 @@ void DistributedSchedMissionManager::OnDnetDied() } remoteSyncDeviceSet_.clear(); DistributedSchedAdapter::GetInstance().UnRegisterMissionListener(missonChangeListener_); - DistributedSchedAdapter::GetInstance().OnOsdEventOccur(UNREGISTER_MISSION_LISTENER); isRegMissionChange_ = false; }; if (missionHandler_ != nullptr) { diff --git a/services/dtbschedmgr/src/mission/mission_changed_notify.cpp b/services/dtbschedmgr/src/mission/mission_changed_notify.cpp index a989ff9..2c56900 100644 --- a/services/dtbschedmgr/src/mission/mission_changed_notify.cpp +++ b/services/dtbschedmgr/src/mission/mission_changed_notify.cpp @@ -25,7 +25,6 @@ namespace { constexpr int32_t CODE_NOTIFY_MISSION = 0; constexpr int32_t NOTIFY_SNAP_SHOT = 1; constexpr int32_t NOTIFY_NET_DISCONNECT = 2; -constexpr int32_t CODE_NOTIFY_SWITCH = 4; const std::u16string DESCRIPTOR = u"ohos.aafwk.RemoteMissionListener"; const std::string TAG = "MissionChangedNotify"; @@ -106,31 +105,5 @@ void MissionChangedNotify::NotifyNetDisconnect(const sptr& remote } HILOGI("NotifyNetDisconnect finished!"); } - -void MissionChangedNotify::NotifyOsdSwitchChanged(const sptr& remoteObject, - const std::u16string& deviceId, bool isSwitchOn) -{ - HILOGI("NotifyOsdSwitchChanged start!"); - if (remoteObject == nullptr) { - HILOGE("NotifyOsdSwitchChanged remote service is null!"); - return; - } - MessageParcel data; - MessageParcel reply; - MessageOption option(MessageOption::TF_ASYNC); - if (!data.WriteInterfaceToken(DESCRIPTOR)) { - HILOGE("NotifyOsdSwitchChanged write interface token failed!"); - return; - } - PARCEL_WRITE_HELPER_NORET(data, String, Str16ToStr8(deviceId)); - PARCEL_WRITE_HELPER_NORET(data, Bool, isSwitchOn); - HILOGI("[PerformanceTest] NotifyOsdSwitchChanged called, IPC begin = %{public}" PRId64, GetTickCount()); - int32_t error = remoteObject->SendRequest(CODE_NOTIFY_SWITCH, data, reply, option); - if (error != ERR_NONE) { - HILOGE("NotifyOsdSwitchChanged fail, error: %{public}d", error); - return; - } - HILOGI("NotifyOsdSwitchChanged finished!"); -} } // namespace DistributedSchedule } // namespace OHOS diff --git a/services/dtbschedmgr/test/unittest/mission/dms_mission_manager_test.cpp b/services/dtbschedmgr/test/unittest/mission/dms_mission_manager_test.cpp index 1f665f8..28fe07c 100644 --- a/services/dtbschedmgr/test/unittest/mission/dms_mission_manager_test.cpp +++ b/services/dtbschedmgr/test/unittest/mission/dms_mission_manager_test.cpp @@ -297,7 +297,7 @@ HWTEST_F(DMSMissionManagerTest, testRegisterMissionListener002, TestSize.Level1) EXPECT_TRUE(ret != ERR_NONE); ret = proxy->UnRegisterMissionListener(U16DEVICE_ID, listener); - EXPECT_TRUE(ret == ERR_NONE); + EXPECT_TRUE(ret != ERR_NONE); ret = proxy->UnRegisterMissionListener(u16localDeviceId_, listener); EXPECT_TRUE(ret != ERR_NONE); @@ -375,109 +375,5 @@ HWTEST_F(DMSMissionManagerTest, testFetchCachedRemoteMissions001, TestSize.Level auto ret = DistributedSchedMissionManager::GetInstance().FetchCachedRemoteMissions(DEVICE_ID, 0, infos); EXPECT_TRUE(ret != ERR_NONE); } - -/** - * @tc.name: testFetchCachedRemoteMissions001 - * @tc.desc: test check support osd fake device, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, testCheckSupportOsd001, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().CheckSupportOsd(DEVICE_ID); - EXPECT_TRUE(ret != ERR_NONE); -} - -/** - * @tc.name: testFetchCachedRemoteMissions002 - * @tc.desc: test check support osd fake device, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, testCheckSupportOsd002, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().CheckSupportOsd(DEVICE_ID); - EXPECT_TRUE(ret != ERR_NONE); - ret = DistributedSchedMissionManager::GetInstance().CheckSupportOsd(""); - EXPECT_TRUE(ret != ERR_NONE); -} - -/** - * @tc.name: GetOsdSwitchValueFromRemote001 - * @tc.desc: test GetOsdSwitchValueFromRemote, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, GetOsdSwitchValueFromRemote001, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().GetOsdSwitchValueFromRemote(); - EXPECT_TRUE(ret != ERR_NONE); -} - -/** - * @tc.name: testUpdateOsdSwitchValueFromRemote001 - * @tc.desc: test UpdateOsdSwitchValueFromRemote fake device, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, testUpdateOsdSwitchValueFromRemote001, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().UpdateOsdSwitchValueFromRemote(0, DEVICE_ID); - EXPECT_TRUE(ret == ERR_NONE); -} - -/** - * @tc.name: testUpdateOsdSwitchValueFromRemote002 - * @tc.desc: test UpdateOsdSwitchValueFromRemote fake device, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, testUpdateOsdSwitchValueFromRemote002, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().UpdateOsdSwitchValueFromRemote(0, DEVICE_ID); - EXPECT_TRUE(ret == ERR_NONE); - ret = DistributedSchedMissionManager::GetInstance().UpdateOsdSwitchValueFromRemote(1, DEVICE_ID); - EXPECT_TRUE(ret == ERR_NONE); -} - -/** - * @tc.name: testUpdateOsdSwitchValueFromRemote003 - * @tc.desc: test UpdateOsdSwitchValueFromRemote fake device, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, testUpdateOsdSwitchValueFromRemote003, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().UpdateOsdSwitchValueFromRemote(0, ""); - EXPECT_TRUE(ret == ERR_NONE); - ret = DistributedSchedMissionManager::GetInstance().UpdateOsdSwitchValueFromRemote(1, ""); - EXPECT_TRUE(ret == ERR_NONE); -} - -/** - * @tc.name: testUpdateSwitchValueToRemote001 - * @tc.desc: test UpdateSwitchValueToRemote, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, testUpdateSwitchValueToRemote001, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().UpdateSwitchValueToRemote(); - EXPECT_TRUE(ret != ERR_NONE); -} - -/** - * @tc.name: testUpdateSwitchValueToRemote002 - * @tc.desc: test check support osd fake device, return error code - * @tc.type: FUNC - * @tc.require:AR000GK67M - */ -HWTEST_F(DMSMissionManagerTest, testUpdateSwitchValueToRemote002, TestSize.Level1) -{ - auto ret = DistributedSchedMissionManager::GetInstance().UpdateSwitchValueToRemote(); - EXPECT_TRUE(ret != ERR_NONE); - ret = DistributedSchedMissionManager::GetInstance().UpdateSwitchValueToRemote(); - EXPECT_TRUE(ret != ERR_NONE); -} } // namespace DistributedSchedule } // namespace OHOS diff --git a/services/dtbschedmgr/test/unittest/mock_distributed_sched.cpp b/services/dtbschedmgr/test/unittest/mock_distributed_sched.cpp index 8b51d90..d3636cc 100755 --- a/services/dtbschedmgr/test/unittest/mock_distributed_sched.cpp +++ b/services/dtbschedmgr/test/unittest/mock_distributed_sched.cpp @@ -125,22 +125,6 @@ int32_t MockDistributedSched::NotifyMissionsChangedFromRemote(const std::vector< return ERR_NONE; } -int32_t MockDistributedSched::CheckSupportOsd(const std::string& deviceId) -{ - return ERR_NONE; -} - -void MockDistributedSched::GetCachedOsdSwitch(std::vector& deviceIds, - std::vector& values) -{ - return; -} - -int32_t MockDistributedSched::GetOsdSwitchValueFromRemote() -{ - return ERR_NONE; -} - int32_t MockDistributedSched::GetMissionInfos(const std::string& deviceId, int32_t numMissions, std::vector& missionInfos) { @@ -162,12 +146,6 @@ int32_t MockDistributedSched::StopSyncRemoteMissions(const std::string& devId) { return ERR_NONE; } - -int32_t MockDistributedSched::UpdateOsdSwitchValueFromRemote(int32_t switchVal, - const std::string& sourceDeviceId) -{ - return ERR_NONE; -} #endif int32_t MockDistributedSched::StartRemoteAbilityByCall(const OHOS::AAFwk::Want& want, diff --git a/services/dtbschedmgr/test/unittest/mock_distributed_sched.h b/services/dtbschedmgr/test/unittest/mock_distributed_sched.h index a597fa3..c3876e0 100644 --- a/services/dtbschedmgr/test/unittest/mock_distributed_sched.h +++ b/services/dtbschedmgr/test/unittest/mock_distributed_sched.h @@ -60,10 +60,6 @@ public: std::unique_ptr& missionSnapshot) override; int32_t NotifyMissionsChangedFromRemote(const std::vector& missionInfos, const CallerInfo& callerInfo) override; - int32_t CheckSupportOsd(const std::string& deviceId) override; - void GetCachedOsdSwitch(std::vector& deviceIds, std::vector& values) override; - int32_t GetOsdSwitchValueFromRemote() override; - int32_t UpdateOsdSwitchValueFromRemote(int32_t switchVal, const std::string& sourceDeviceId) override; int32_t StartSyncMissionsFromRemote(const CallerInfo& callerInfo, std::vector& missionInfos) override; int32_t StopSyncMissionsFromRemote(const CallerInfo& callerInfo) override;