From 9c8fadac05ac410c973abff71c46032834c9cb5c Mon Sep 17 00:00:00 2001 From: wangsen1994 Date: Wed, 16 Jul 2025 15:42:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AF=E6=80=BB=E7=BA=BF=E5=85=A8=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E5=8D=95=E7=8B=AC=E9=9A=94=E7=A6=BB=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=A3=81=E5=89=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangsen1994 --- services/BUILD.gn | 2 ++ services/ans/BUILD.gn | 12 +++++++---- services/ans/include/smart_reminder_center.h | 2 ++ .../ans/src/advanced_notification_service.cpp | 2 ++ .../advanced_notification_service_ability.cpp | 6 ++++++ .../ans/src/distributed_device_status.cpp | 6 ++++++ ...tification_distributed_manager_service.cpp | 20 +++++++++++++++++++ .../smart_reminder_center.cpp | 14 ++++++++----- services/ans/src/system_event_observer.cpp | 4 ++++ services/ans/test/unittest/BUILD.gn | 8 ++++++++ ...nced_notification_service_ability_test.cpp | 2 +- .../unittest/smart_reminder_center_test.cpp | 4 +++- 12 files changed, 71 insertions(+), 11 deletions(-) diff --git a/services/BUILD.gn b/services/BUILD.gn index 64ba39106..df05c8768 100644 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -18,6 +18,8 @@ group("ans_service") { if (distributed_notification_supported) { deps += [ "distributed:libans_distributed" ] + } + if (distributed_notification_service_feature_all_scenario_collaboration) { deps += [ "distributed:libdans" ] } } diff --git a/services/ans/BUILD.gn b/services/ans/BUILD.gn index 20227e783..233002258 100644 --- a/services/ans/BUILD.gn +++ b/services/ans/BUILD.gn @@ -107,10 +107,6 @@ ohos_source_set("ans_service_sources") { "src/liveview_all_scenarios_extension_wrapper.cpp", "src/notification_dialog.cpp", "src/notification_dialog_manager.cpp", - "src/notification_extension/distributed_device_data_service.cpp", - "src/notification_extension/distributed_device_manager.cpp", - "src/notification_extension/distributed_extension_service.cpp", - "src/notification_extension/notification_operation_service.cpp", "src/notification_extension_wrapper.cpp", "src/notification_local_live_view_subscriber_manager.cpp", "src/notification_preferences.cpp", @@ -143,6 +139,14 @@ ohos_source_set("ans_service_sources") { "../ans:external.json", ] + if (distributed_notification_service_feature_all_scenario_collaboration) { + defines += [ "ALL_SCENARIO_COLLABORATION" ] + sources += [ "src/notification_extension/distributed_device_data_service.cpp" ] + sources += [ "src/notification_extension/distributed_device_manager.cpp" ] + sources += [ "src/notification_extension/distributed_extension_service.cpp" ] + sources += [ "src/notification_extension/notification_operation_service.cpp" ] + } + if (is_double_framework) { cflags += [ "-DCONFIG_DUAL_FRAMEWORK" ] } diff --git a/services/ans/include/smart_reminder_center.h b/services/ans/include/smart_reminder_center.h index 0c2f6d59c..12bc85535 100644 --- a/services/ans/include/smart_reminder_center.h +++ b/services/ans/include/smart_reminder_center.h @@ -90,10 +90,12 @@ private: void InitValidDevices(set &syncDevices, set &smartDevices, map> &statusMap, const sptr &request) const; +#ifdef ALL_SCENARIO_COLLABORATION void InitPcPadDevices(const string &deviceType, set &syncDevices, set &smartDevices, map> &statusMap, const sptr &request) const; +#endif void FillRequestExtendInfo(const string &deviceType, DeviceStatus &deviceStatus, const sptr &request) const; bool IsCollaborationAllowed(const sptr &request) const; diff --git a/services/ans/src/advanced_notification_service.cpp b/services/ans/src/advanced_notification_service.cpp index 696891c5b..d1e69077f 100644 --- a/services/ans/src/advanced_notification_service.cpp +++ b/services/ans/src/advanced_notification_service.cpp @@ -77,7 +77,9 @@ #include "advanced_datashare_helper_ext.h" #include "notification_analytics_util.h" #include "advanced_notification_flow_control_service.h" +#ifdef ALL_SCENARIO_COLLABORATION #include "distributed_device_manager.h" +#endif #include "liveview_all_scenarios_extension_wrapper.h" #include "notification_operation_service.h" #include "string_wrapper.h" diff --git a/services/ans/src/advanced_notification_service_ability.cpp b/services/ans/src/advanced_notification_service_ability.cpp index df31576ea..ab2b80195 100644 --- a/services/ans/src/advanced_notification_service_ability.cpp +++ b/services/ans/src/advanced_notification_service_ability.cpp @@ -18,7 +18,9 @@ #include "system_event_observer.h" #include "common_event_manager.h" #include "liveview_all_scenarios_extension_wrapper.h" +#ifdef ALL_SCENARIO_COLLABORATION #include "distributed_device_manager.h" +#endif #include "advanced_datashare_helper.h" #include "distributed_extension_service.h" @@ -107,9 +109,13 @@ void AdvancedNotificationServiceAbility::OnAddSystemAbility(int32_t systemAbilit notificationService->ResetDistributedEnabled(); } else if (systemAbilityId == DISTRIBUTED_HARDWARE_DEVICEMANAGER_SA_ID) { ANS_LOGW("DISTRIBUTED_HARDWARE_DEVICEMANAGER_SA_ID"); +#ifdef ALL_SCENARIO_COLLABORATION DistributedDeviceManager::GetInstance().RegisterDms(true); +#endif } else if (systemAbilityId == ALL_CONNECT_SA_ID) { +#ifdef ALL_SCENARIO_COLLABORATION DistributedExtensionService::GetInstance().OnAllConnectOnline(); +#endif } } diff --git a/services/ans/src/distributed_device_status.cpp b/services/ans/src/distributed_device_status.cpp index 0febcf786..9fb0a4ece 100644 --- a/services/ans/src/distributed_device_status.cpp +++ b/services/ans/src/distributed_device_status.cpp @@ -16,7 +16,9 @@ #include "distributed_device_status.h" #include "distributed_data_define.h" +#ifdef ALL_SCENARIO_COLLABORATION #include "distributed_extension_service.h" +#endif #include "ans_inner_errors.h" namespace OHOS { @@ -77,6 +79,7 @@ void ChangeStatus(DeviceStatus& device, const std::string &deviceType, const uin } } +#ifdef ALL_SCENARIO_COLLABORATION if (deviceType == NotificationConstant::PAD_DEVICE_TYPE || deviceType == NotificationConstant::PC_DEVICE_TYPE) { DeviceStatueChangeInfo changeInfo; @@ -92,6 +95,7 @@ void ChangeStatus(DeviceStatus& device, const std::string &deviceType, const uin DistributedExtensionService::GetInstance().DeviceStatusChange(changeInfo); } } +#endif ANS_LOGI("update %{public}s %{public}s %{public}d status %{public}d %{public}u %{public}u", device.deviceType.c_str(), StringAnonymous(device.deviceId).c_str(), userId, controlFlag, @@ -105,6 +109,7 @@ ErrCode DistributedDeviceStatus::SetDeviceStatus(const std::string &deviceType, std::string deviceStatusId = deviceId; uint32_t finalStatus = 0; bool allConnect = ((1 << NETWORKID_FLAG) & controlFlag); +#ifdef ALL_SCENARIO_COLLABORATION if (allConnect) { std::string udid; int32_t result = DistributedExtensionService::GetInstance().TransDeviceIdToUdid(deviceId, udid); @@ -115,6 +120,7 @@ ErrCode DistributedDeviceStatus::SetDeviceStatus(const std::string &deviceType, } deviceStatusId = udid; } +#endif std::lock_guard lock(mapLock_); for (auto device = deviceInfo_.begin(); device != deviceInfo_.end(); device++) { diff --git a/services/ans/src/distributed_manager/advanced_notification_distributed_manager_service.cpp b/services/ans/src/distributed_manager/advanced_notification_distributed_manager_service.cpp index 0d05a5dec..477a781aa 100644 --- a/services/ans/src/distributed_manager/advanced_notification_distributed_manager_service.cpp +++ b/services/ans/src/distributed_manager/advanced_notification_distributed_manager_service.cpp @@ -99,6 +99,7 @@ ErrCode AdvancedNotificationService::SetDistributedEnabledBySlot( ErrCode result = NotificationPreferences::GetInstance()->SetDistributedEnabledBySlot(slotType, deviceType, enabled); +#ifdef ALL_SCENARIO_COLLABORATION if (result == ERR_OK && slotType == NotificationConstant::SlotType::LIVE_VIEW) { NotificationConstant::SWITCH_STATE notification = NotificationConstant::SWITCH_STATE::SYSTEM_DEFAULT_OFF; if (NotificationPreferences::GetInstance()->IsDistributedEnabled(deviceType, @@ -117,6 +118,7 @@ ErrCode AdvancedNotificationService::SetDistributedEnabledBySlot( NotificationConstant::DISTRIBUTED_ENABLE_CLOSE_DELETE, NotificationConstant::DistributedDeleteType::SLOT); } +#endif ANS_LOGI("SetDistributedEnabledBySlot %{public}d, deviceType: %{public}s, enabled: %{public}s, " "SetDistributedEnabledBySlot result: %{public}d", slotType, deviceType.c_str(), std::to_string(enabled).c_str(), result); @@ -359,6 +361,7 @@ ErrCode DistributeOperationParamCheck(const sptr& ope ErrCode AdvancedNotificationService::DistributeOperation(const sptr& operationInfo, const sptr &callback) { +#ifdef ALL_SCENARIO_COLLABORATION ErrCode result = DistributeOperationParamCheck(operationInfo, callback); if (result != ERR_OK) { return result; @@ -402,10 +405,14 @@ ErrCode AdvancedNotificationService::DistributeOperation(const sptr& bundleList) { +#ifdef ALL_SCENARIO_COLLABORATION if (!AccessTokenHelper::VerifyNativeToken(IPCSkeleton::GetCallingTokenID())) { return ERR_ANS_NON_SYSTEM_APP; } @@ -487,6 +498,9 @@ ErrCode AdvancedNotificationService::SetTargetDeviceBundleList(const std::string } return DistributedDeviceDataService::GetInstance().SetTargetDeviceBundleList(deviceType, deviceId, operatorType, bundleList); +#else + return ERR_ANS_INVALID_PARAM; +#endif } ErrCode AdvancedNotificationService::GetMutilDeviceStatus(const std::string &deviceType, const uint32_t status, @@ -527,6 +541,7 @@ ErrCode AdvancedNotificationService::GetTargetDeviceBundleList(const std::string ErrCode AdvancedNotificationService::SetTargetDeviceSwitch(const std::string& deviceType, const std::string& deviceId, bool notificaitonEnable, bool liveViewEnable) { +#ifdef ALL_SCENARIO_COLLABORATION if (!AccessTokenHelper::VerifyNativeToken(IPCSkeleton::GetCallingTokenID())) { return ERR_ANS_NON_SYSTEM_APP; } @@ -537,6 +552,9 @@ ErrCode AdvancedNotificationService::SetTargetDeviceSwitch(const std::string& de } return DistributedDeviceDataService::GetInstance().SetDeviceSyncSwitch(deviceType, deviceId, notificaitonEnable, liveViewEnable); +#else + return ERR_ANS_INVALID_PARAM; +#endif } ErrCode AdvancedNotificationService::GetAllDistribuedEnabledBundles( @@ -765,6 +783,7 @@ ErrCode AdvancedNotificationService::SetDistributedEnabled(const std::string &de return result; } +#ifdef ALL_SCENARIO_COLLABORATION if (result == ERR_OK) { bool liveViewEnabled = false; if (NotificationPreferences::GetInstance()->IsDistributedEnabledBySlot( @@ -783,6 +802,7 @@ ErrCode AdvancedNotificationService::SetDistributedEnabled(const std::string &de NotificationConstant::DISTRIBUTED_ENABLE_CLOSE_DELETE, NotificationConstant::DistributedDeleteType::EXCLUDE_ONE_SLOT); } +#endif return result; } diff --git a/services/ans/src/notification_smart_reminder/smart_reminder_center.cpp b/services/ans/src/notification_smart_reminder/smart_reminder_center.cpp index 90597d352..2c685df5f 100644 --- a/services/ans/src/notification_smart_reminder/smart_reminder_center.cpp +++ b/services/ans/src/notification_smart_reminder/smart_reminder_center.cpp @@ -120,7 +120,7 @@ void SmartReminderCenter::ParseReminderFilterDevice(const nlohmann::json &root, std::string slotTypes = reminderFilterDeviceJson[SLOT_TYPE].get(); std::vector slotTypeVector; StringUtils::Split(slotTypes, SPLIT_FLAG, slotTypeVector); - + for (std::string slotTypeStr : slotTypeVector) { if (!NotificationSlot::GetSlotTypeByString(slotTypeStr, slotType)) { continue; @@ -322,7 +322,9 @@ void SmartReminderCenter::InitValidDevices( } if (NotificationConstant::PC_DEVICE_TYPE == deviceType || NotificationConstant::PAD_DEVICE_TYPE == deviceType) { +#ifdef ALL_SCENARIO_COLLABORATION InitPcPadDevices(deviceType, syncDevices, smartDevices, statusMap, request); +#endif continue; } @@ -379,6 +381,7 @@ void SmartReminderCenter::InitValidDevices( return; } +#ifdef ALL_SCENARIO_COLLABORATION void SmartReminderCenter::InitPcPadDevices(const string &deviceType, set &syncDevices, set &smartDevices, map> &statusMap, @@ -436,6 +439,7 @@ void SmartReminderCenter::InitPcPadDevices(const string &deviceType, smartDevices.insert(deviceType); return; } +#endif void SmartReminderCenter::FillRequestExtendInfo(const string &deviceType, DeviceStatus &deviceStatus, const sptr &request) const @@ -496,7 +500,7 @@ void SmartReminderCenter::HandleReminderMethods( shared_ptr>> notificationFlagsOfDevices) const { std::string classfication = request->GetClassification(); - + if (syncDevices.find(deviceType) == syncDevices.end()) { return; } @@ -536,7 +540,7 @@ void SmartReminderCenter::HandleReminderMethods( ANS_LOGI("not set any rule for deviceType %{public}s", deviceType.c_str()); return; } - + auto iter = statusMap.find(deviceType); if (iter == statusMap.end()) { ANS_LOGE("get device status failed. deviceType = %{public}s", deviceType.c_str()); @@ -599,7 +603,7 @@ bool SmartReminderCenter::GetAppSwitch(const string &deviceType, } bool isEnable = true; - + sptr bundleOption = new (std::nothrow) NotificationBundleOption(ownerBundleName, ownerUid); if (NotificationPreferences::GetInstance()->IsDistributedEnabledByBundle( @@ -658,7 +662,7 @@ bool SmartReminderCenter::HandleAffectedReminder( ret = false; break; } - + auto iter = statusMap.find(affectedBy.first); if (iter == statusMap.end()) { ANS_LOGE("get device status failed. deviceType = %{public}s", deviceType.c_str()); diff --git a/services/ans/src/system_event_observer.cpp b/services/ans/src/system_event_observer.cpp index 844d2d8ec..29eee9c01 100644 --- a/services/ans/src/system_event_observer.cpp +++ b/services/ans/src/system_event_observer.cpp @@ -22,7 +22,9 @@ #include "common_event_support.h" #include "notification_preferences.h" #include "notification_clone_manager.h" +#ifdef ALL_SCENARIO_COLLABORATION #include "distributed_device_manager.h" +#endif namespace OHOS { namespace Notification { @@ -125,7 +127,9 @@ void SystemEventObserver::OnReceiveEvent(const EventFwk::CommonEventData &data) NotificationPreferences::GetInstance()->InitSettingFromDisturbDB(userId); AdvancedNotificationService::GetInstance()->RecoverLiveViewFromDb(userId); NotificationCloneManager::GetInstance().OnUserSwitch(userId); +#ifdef ALL_SCENARIO_COLLABORATION DistributedDeviceManager::GetInstance().InitTrustList(); +#endif return; } else if (action == EventFwk::CommonEventSupport::COMMON_EVENT_USER_REMOVED) { int32_t userId = data.GetCode(); diff --git a/services/ans/test/unittest/BUILD.gn b/services/ans/test/unittest/BUILD.gn index 431159ffc..2183ca8c3 100644 --- a/services/ans/test/unittest/BUILD.gn +++ b/services/ans/test/unittest/BUILD.gn @@ -51,6 +51,10 @@ ohos_unittest("ans_unit_test") { "smart_reminder_center_test.cpp", ] + if (distributed_notification_service_feature_all_scenario_collaboration) { + defines += [ "ALL_SCENARIO_COLLABORATION" ] + } + deps = [ "${frameworks_module_ans_path}:ans_innerkits", "${services_path}/ans:libans", @@ -748,6 +752,10 @@ ohos_unittest("notification_preferences_test") { "notification_preferences_test.cpp", ] + if (distributed_notification_service_feature_all_scenario_collaboration) { + defines += [ "ALL_SCENARIO_COLLABORATION" ] + } + deps = [ "${frameworks_module_ans_path}:ans_innerkits", "${services_path}/ans:libans", diff --git a/services/ans/test/unittest/advanced_notification_service_ability_test.cpp b/services/ans/test/unittest/advanced_notification_service_ability_test.cpp index 9f89c4d51..25a5866bf 100644 --- a/services/ans/test/unittest/advanced_notification_service_ability_test.cpp +++ b/services/ans/test/unittest/advanced_notification_service_ability_test.cpp @@ -206,7 +206,7 @@ HWTEST_F( EXPECT_EQ(test.isDatashaReready_, true); } -#ifdef DISTRIBUTED_NOTIFICATION_SUPPORTED +#ifdef ALL_SCENARIO_COLLABORATION /** * @tc.number : AdvancedNotificationServiceAbilityTest_02000 * @tc.name : ANS_AdvancedNotificationServiceAbility_02000 diff --git a/services/ans/test/unittest/smart_reminder_center_test.cpp b/services/ans/test/unittest/smart_reminder_center_test.cpp index b8fc1c802..c5e32f040 100644 --- a/services/ans/test/unittest/smart_reminder_center_test.cpp +++ b/services/ans/test/unittest/smart_reminder_center_test.cpp @@ -212,6 +212,7 @@ HWTEST_F(SmartReminderCenterTest, InitValidDevices_00002, Function | SmallTest | smartReminderCenter_->InitValidDevices(validDevices, smartDevices, statusMap, request); ASSERT_EQ(request->GetNotificationControlFlags(), 0); } +#ifdef ALL_SCENARIO_COLLABORATION /** * @tc.name: InitPcPadDevices_100 * @tc.desc: Test InitPcPadDevices @@ -251,6 +252,7 @@ HWTEST_F(SmartReminderCenterTest, InitPcPadDevices_200, Function | SmallTest | L ASSERT_EQ(validDevices.size(), 0); ASSERT_EQ(smartDevices.size(), 0); } +#endif /** * @tc.name: FillRequestExtendInfo_100 @@ -704,4 +706,4 @@ HWTEST_F(SmartReminderCenterTest, GetReminderAffecteds_500, Function | SmallTest } } //namespace Notification } //namespace OHOS -#endif \ No newline at end of file +#endif -- Gitee