diff --git a/services/reminder/include/reminder_data_manager.h b/services/reminder/include/reminder_data_manager.h index a16a21f4e40a92f74d01c176ef1947162eb6fd9a..dd25ea52bf8127f88c5306dc0f6253e98c136c42 100644 --- a/services/reminder/include/reminder_data_manager.h +++ b/services/reminder/include/reminder_data_manager.h @@ -565,8 +565,9 @@ private: * @param isSysTimeChanged Indicates whether it is triggerred as system time changed by user. * @param needScheduleTimeout Indicates whether need to control the ring duration. */ - void ShowReminder(const sptr &reminder, const bool &isNeedToPlaySound, - const bool &isNeedToStartNext, const bool &isSysTimeChanged, const bool &needScheduleTimeout); + void ShowReminder(const sptr& reminder, const bool isNeedToPlaySound, + const bool isNeedToStartNext, const bool isSysTimeChanged, const bool needScheduleTimeout, + const bool isNeedCloseDefaultSound); void SnoozeReminderImpl(sptr &reminder); diff --git a/services/reminder/src/reminder_data_manager.cpp b/services/reminder/src/reminder_data_manager.cpp index aa3498344462507e1732c3d647c7530ac74b9ae8..fcc72ffc88ed022a50929f27635d705212557b0d 100644 --- a/services/reminder/src/reminder_data_manager.cpp +++ b/services/reminder/src/reminder_data_manager.cpp @@ -1036,11 +1036,11 @@ void ReminderDataManager::ShowActiveReminderExtendLocked(sptr& playSoundReminder = (*it); isAlerting = true; } else { - ShowReminder((*it), false, false, false, false); + ShowReminder((*it), false, false, false, false, isAlerting); } } if (playSoundReminder != nullptr) { - ShowReminder(playSoundReminder, true, false, false, true); + ShowReminder(playSoundReminder, true, false, false, true, true); } } @@ -1066,8 +1066,9 @@ bool ReminderDataManager::StartExtensionAbility(const sptr &rem return true; } -void ReminderDataManager::ShowReminder(const sptr &reminder, const bool &isNeedToPlaySound, - const bool &isNeedToStartNext, const bool &isSysTimeChanged, const bool &needScheduleTimeout) +void ReminderDataManager::ShowReminder(const sptr& reminder, const bool isNeedToPlaySound, + const bool isNeedToStartNext, const bool isSysTimeChanged, const bool needScheduleTimeout, + const bool isNeedCloseDefaultSound) { ANSR_LOGD("Show the reminder(Play sound: %{public}d), %{public}s", static_cast(isNeedToPlaySound), reminder->Dump().c_str()); @@ -1088,7 +1089,7 @@ void ReminderDataManager::ShowReminder(const sptr &reminder, co if (alertingReminderId_ != -1) { TerminateAlerting(alertingReminder_, "PlaySoundAndVibration"); } - if (toPlaySound) { + if (toPlaySound || isNeedCloseDefaultSound) { // close notification default sound. notificationRequest.SetNotificationControlFlags(static_cast( NotificationNapi::NotificationControlFlagStatus::NOTIFICATION_STATUS_CLOSE_SOUND)); @@ -1298,11 +1299,11 @@ void ReminderDataManager::HandleImmediatelyShow( } if (((*it)->GetRingDuration() > 0) && !isAlerting) { std::lock_guard lock(ReminderDataManager::MUTEX); - ShowReminder((*it), true, false, isSysTimeChanged, true); + ShowReminder((*it), true, false, isSysTimeChanged, true, true); isAlerting = true; } else { std::lock_guard lock(ReminderDataManager::MUTEX); - ShowReminder((*it), false, false, isSysTimeChanged, false); + ShowReminder((*it), false, false, isSysTimeChanged, false, isAlerting); } } } @@ -2039,7 +2040,7 @@ void ReminderDataManager::OnLanguageChanged() continue; } std::lock_guard lock(ReminderDataManager::MUTEX); - ShowReminder((*it), false, false, false, false); + ShowReminder((*it), false, false, false, false, false); } ReminderDataShareHelper::GetInstance().StartDataExtension(ReminderCalendarShareTable::START_BY_LANGUAGE_CHANGE); ANSR_LOGI("System language config changed end."); @@ -2139,7 +2140,7 @@ void ReminderDataManager::LoadShareReminders() calendar->Copy(iter->second); // In the logic of insertion or deletion, it can only be updated if the id changes. if ((*it)->IsShowing() && reminderId != iter->second->GetReminderId()) { - ShowReminder((*it), false, false, false, false); + ShowReminder((*it), false, false, false, false, false); } reminders.erase(iter); ++it; diff --git a/services/reminder/src/reminder_data_manager_inner.cpp b/services/reminder/src/reminder_data_manager_inner.cpp index f03c98a023efdf6d7f6c420bea497b876bcdf1ef..3903763828e1b441c0b97c09ecbe23bc52ef8b72 100644 --- a/services/reminder/src/reminder_data_manager_inner.cpp +++ b/services/reminder/src/reminder_data_manager_inner.cpp @@ -251,7 +251,7 @@ void ReminderDataManager::UpdateShareReminders(const std::map((*it).GetRefPtr()); calendar->Copy(iter->second); if ((*it)->IsShowing()) { - ShowReminder((*it), false, false, false, false); + ShowReminder((*it), false, false, false, false, false); } } } diff --git a/services/reminder/test/unittest/reminder_data_manager_test.cpp b/services/reminder/test/unittest/reminder_data_manager_test.cpp index 58204c7bb8044dfb760da0cf95f1d625e4d2120d..590ac881bfcdc85ae3a35ea9e37c77d0a3f9368c 100644 --- a/services/reminder/test/unittest/reminder_data_manager_test.cpp +++ b/services/reminder/test/unittest/reminder_data_manager_test.cpp @@ -349,14 +349,14 @@ HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_011, Level1) { sptr reminder(new ReminderRequestTimer(10)); reminder->SetReminderId(0); - manager->ShowReminder(reminder, true, true, true, true); + manager->ShowReminder(reminder, true, true, true, true, true); reminder->SetReminderId(10); - manager->ShowReminder(reminder, true, true, true, true); - manager->ShowReminder(reminder, true, true, true, true); + manager->ShowReminder(reminder, true, true, true, true, true); + manager->ShowReminder(reminder, true, true, true, true, true); manager->alertingReminderId_ = 1; - manager->ShowReminder(reminder, true, true, true, true); + manager->ShowReminder(reminder, true, true, true, true, true); manager->alertingReminderId_ = -1; - manager->ShowReminder(reminder, true, true, true, true); + manager->ShowReminder(reminder, true, true, true, true, true); remove("/data/service/el1/public/notification/notification.db"); EXPECT_TRUE(manager != nullptr); } diff --git a/test/fuzztest/reminderdatamanager_fuzzer/reminderdatamanager_fuzzer.cpp b/test/fuzztest/reminderdatamanager_fuzzer/reminderdatamanager_fuzzer.cpp index b3feed4578d5b0e394341ce44fec5ee8a4368e0a..8acda40347c8db17cb3a8b1961c8fe75c1915c58 100644 --- a/test/fuzztest/reminderdatamanager_fuzzer/reminderdatamanager_fuzzer.cpp +++ b/test/fuzztest/reminderdatamanager_fuzzer/reminderdatamanager_fuzzer.cpp @@ -119,7 +119,7 @@ namespace OHOS { manager->HandleSameNotificationIdShowing(reminder); manager->IsBelongToSameApp(uid, uid); manager->CheckIsSameApp(reminder, uid); - manager->ShowReminder(reminder, value, value, value, value); + manager->ShowReminder(reminder, value, value, value, value, value); return true; }