From 78da49ccbf7b76c79c97a40146766d8ac50d4144 Mon Sep 17 00:00:00 2001 From: let_it_rot Date: Thu, 11 Sep 2025 14:04:41 +0800 Subject: [PATCH] update Signed-off-by: let_it_rot --- frameworks/js/napi/src/reminder/publish.cpp | 6 +-- .../js/napi/src/reminder/reminder_common.cpp | 2 - .../include/reminder_datashare_helper.h | 2 +- .../reminder/src/reminder_agent_service.cpp | 1 - .../reminder/src/reminder_data_manager.cpp | 37 +++++----------- .../src/reminder_data_manager_inner.cpp | 4 +- .../src/reminder_datashare_helper.cpp | 8 ++-- .../unittest/reminder_agent_service_test.cpp | 4 +- .../unittest/reminder_data_manager_test.cpp | 44 ++++++++++++++++++- .../test/unittest/reminder_store_test.cpp | 2 +- .../reminderdatasharehelper_fuzzer.cpp | 2 +- 11 files changed, 67 insertions(+), 45 deletions(-) diff --git a/frameworks/js/napi/src/reminder/publish.cpp b/frameworks/js/napi/src/reminder/publish.cpp index 156a82b7c..6a6ee8cab 100644 --- a/frameworks/js/napi/src/reminder/publish.cpp +++ b/frameworks/js/napi/src/reminder/publish.cpp @@ -772,11 +772,7 @@ napi_value SetValidReminder(const napi_env &env, ReminderRequest &reminder, napi // slotType NotificationNapi::SlotType jsSlotType; - if (reminder.GetSlotType() == NotificationConstant::SlotType::OTHER) { - NotificationNapi::AnsEnumUtil::SlotTypeCToJS(NotificationConstant::SlotType::SOCIAL_COMMUNICATION, jsSlotType); - } else { - NotificationNapi::AnsEnumUtil::SlotTypeCToJS(reminder.GetSlotType(), jsSlotType); - } + NotificationNapi::AnsEnumUtil::SlotTypeCToJS(reminder.GetSlotType(), jsSlotType); napi_create_int32(env, static_cast(jsSlotType), &value); napi_set_named_property(env, result, SLOT_TYPE, value); diff --git a/frameworks/js/napi/src/reminder/reminder_common.cpp b/frameworks/js/napi/src/reminder/reminder_common.cpp index 47ba11ee6..7625e2cf1 100644 --- a/frameworks/js/napi/src/reminder/reminder_common.cpp +++ b/frameworks/js/napi/src/reminder/reminder_common.cpp @@ -608,8 +608,6 @@ bool ReminderCommon::GenReminderIntInner( return false; } reminder->SetSlotType(actureType); - } else if (!reminder->IsSystemApp()) { - reminder->SetSlotType(NotificationConstant::SlotType::OTHER); } //autoDeletedTime diff --git a/services/reminder/include/reminder_datashare_helper.h b/services/reminder/include/reminder_datashare_helper.h index fa66dfa7d..42dfaedfe 100644 --- a/services/reminder/include/reminder_datashare_helper.h +++ b/services/reminder/include/reminder_datashare_helper.h @@ -54,7 +54,7 @@ public: * @brief Update the reminder state. * state is ReminderCalendarShareTable::STATE_* */ - bool Update(const int32_t reminderId, const int32_t state); + bool Update(const std::string& identifier, const int32_t state); /** * @brief Start calendar data extension. diff --git a/services/reminder/src/reminder_agent_service.cpp b/services/reminder/src/reminder_agent_service.cpp index 50ed97510..bbfb514b0 100644 --- a/services/reminder/src/reminder_agent_service.cpp +++ b/services/reminder/src/reminder_agent_service.cpp @@ -129,7 +129,6 @@ ErrCode ReminderAgentService::UpdateReminder(const int32_t reminderId, const Rem } tarReminder->SetReminderId(reminderId); ret = rdm->UpdateReminder(tarReminder, callingUid); - TryPostDelayUnloadTask(UNLOAD_TASK_DELAY_TIME); return ret; } diff --git a/services/reminder/src/reminder_data_manager.cpp b/services/reminder/src/reminder_data_manager.cpp index fe38e5eac..f722c8129 100644 --- a/services/reminder/src/reminder_data_manager.cpp +++ b/services/reminder/src/reminder_data_manager.cpp @@ -122,7 +122,7 @@ ErrCode ReminderDataManager::CancelReminder( ANSR_LOGI("cancel reminder id: %{public}d", reminderId); sptr reminder = FindReminderRequestLocked(reminderId, false); if (reminder == nullptr) { - ANSR_LOGW("null reminder"); + ANSR_LOGW("Cancel reminder, not find the reminder in memory."); return CancelReminderToDb(reminderId, callingUid); } if (!CheckIsSameApp(reminder, callingUid)) { @@ -429,7 +429,6 @@ void ReminderDataManager::OnUserSwitch(const int32_t& userId) void ReminderDataManager::OnProcessDiedLocked(const int32_t callingUid) { - ANSR_LOGD("called, uid=%{public}d", callingUid); std::lock_guard locker(ReminderDataManager::MUTEX); std::lock_guard lock(ReminderDataManager::SHOW_MUTEX); for (auto it = showedReminderVector_.begin(); it != showedReminderVector_.end(); ++it) { @@ -561,7 +560,6 @@ void ReminderDataManager::CloseRemindersByGroupId(const int32_t &oldReminderId, const std::string &groupId) { if (packageName == "") { - ANSR_LOGD("packageName is empty"); return; } std::lock_guard lock(ReminderDataManager::MUTEX); @@ -572,7 +570,6 @@ void ReminderDataManager::CloseRemindersByGroupId(const int32_t &oldReminderId, } int32_t reminderId = reminder->GetReminderId(); if (reminderId == oldReminderId) { - ANSR_LOGD("The old and new reminder are the same"); continue; } if (IsMatchedForGroupIdAndPkgName(reminder, packageName, groupId)) { @@ -606,7 +603,8 @@ void ReminderDataManager::CloseReminder(const sptr &reminder, b reminder->OnClose(true); RemoveFromShowedReminders(reminder); if (reminder->IsShare()) { - ReminderDataShareHelper::GetInstance().Update(reminderId, ReminderCalendarShareTable::STATE_DISMISSED); + ReminderDataShareHelper::GetInstance().Update(reminder->GetIdentifier(), + ReminderCalendarShareTable::STATE_DISMISSED); } else { store_->UpdateOrInsert(reminder); } @@ -631,7 +629,6 @@ void ReminderDataManager::StartLoadTimer() { sptr timer = MiscServices::TimeServiceClient::GetInstance(); if (timer == nullptr) { - ANSR_LOGE("null timer"); return; } std::lock_guard locker(timeLoadMutex_); @@ -645,7 +642,6 @@ void ReminderDataManager::StartLoadTimer() void ReminderDataManager::InitShareReminders(const bool registerObserver) { - ANSR_LOGD("called"); ReminderDataShareHelper::GetInstance().SetUserId(currentUserId_); ReminderDataShareHelper::GetInstance().UpdateCalendarUid(); if (registerObserver) { @@ -834,7 +830,6 @@ void ReminderDataManager::RefreshRemindersDueToSysTimeChange(uint8_t type) std::string typeInfo = type == TIME_ZONE_CHANGE ? "timeZone" : "dateTime"; ANSR_LOGI("Refresh all reminders due to %{public}s changed by user", typeInfo.c_str()); if (activeReminderId_ != -1) { - ANSR_LOGD("Stop active reminder due to date/time or timeZone change"); { std::lock_guard locker(ReminderDataManager::ACTIVE_MUTEX); activeReminder_->OnStop(); @@ -897,7 +892,6 @@ void ReminderDataManager::TerminateAlerting(const sptr &reminde } int32_t reminderId = reminder->GetReminderId(); int32_t uid = reminder->GetUid(); - ANSR_LOGD("publish(update) notification.(reminderId=%{public}d)", reminder->GetReminderId()); NotificationRequest notificationRequest(reminder->GetNotificationId()); notificationRequest.SetNotificationControlFlags(static_cast( NotificationNapi::NotificationControlFlagStatus::NOTIFICATION_STATUS_CLOSE_SOUND)); @@ -962,7 +956,6 @@ bool ReminderDataManager::ShouldAlert(const sptr &reminder) con return true; } } - ANSR_LOGD("The reminder (reminderId=%{public}d) is silent for Dnd", reminderId); return false; } @@ -1050,8 +1043,6 @@ void ReminderDataManager::ShowReminder(const sptr& reminder, co 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()); int32_t reminderId = reminder->GetReminderId(); bool isShare = reminder->IsShare(); if (!IsAllowedNotify(reminder)) { @@ -1091,7 +1082,8 @@ void ReminderDataManager::ShowReminder(const sptr& reminder, co } HandleSameNotificationIdShowing(reminder); if (isShare) { - ReminderDataShareHelper::GetInstance().Update(reminderId, ReminderCalendarShareTable::STATE_FIRED); + ReminderDataShareHelper::GetInstance().Update(reminder->GetIdentifier(), + ReminderCalendarShareTable::STATE_FIRED); } } store_->UpdateOrInsert(reminder); @@ -1117,7 +1109,6 @@ void ReminderDataManager::SnoozeReminder(const OHOS::EventFwk::Want &want) void ReminderDataManager::SnoozeReminderImpl(sptr &reminder) { - ANSR_LOGD("Snooze the reminder request, %{public}s", reminder->Dump().c_str()); int32_t reminderId = reminder->GetReminderId(); if (activeReminderId_ == reminderId) { ANSR_LOGD("Cancel active reminder, id=%{public}d", activeReminderId_.load()); @@ -1152,7 +1143,7 @@ void ReminderDataManager::StartRecentReminder() std::lock_guard lock(ReminderDataManager::MUTEX); sptr reminder = GetRecentReminder(); if (reminder == nullptr) { - ANSR_LOGE("null reminder"); + ANSR_LOGE("No reminder need to start"); SetActiveReminder(reminder); return; } @@ -1297,8 +1288,8 @@ void ReminderDataManager::HandleImmediatelyShow( sptr ReminderDataManager::HandleRefreshReminder(const uint8_t &type, sptr &reminder) { + uint64_t lastShowTime = reminder->GetReminderTimeInMilli(); reminder->SetReminderTimeInMilli(ReminderRequest::INVALID_LONG_LONG_VALUE); - uint64_t triggerTimeBefore = reminder->GetTriggerTimeInMilli(); bool needShowImmediately = false; if (type == TIME_ZONE_CHANGE) { needShowImmediately = reminder->OnTimeZoneChange(); @@ -1307,8 +1298,8 @@ sptr ReminderDataManager::HandleRefreshReminder(const uint8_t & needShowImmediately = reminder->OnDateTimeChange(); } if (!needShowImmediately) { - uint64_t triggerTimeAfter = reminder->GetTriggerTimeInMilli(); - if (triggerTimeBefore != triggerTimeAfter || reminder->GetReminderId() == alertingReminderId_) { + uint64_t now = static_cast(GetCurrentTime()); + if (reminder->IsShowing() && now < lastShowTime) { CloseReminder(reminder, true); } store_->UpdateOrInsert(reminder); @@ -1341,7 +1332,8 @@ void ReminderDataManager::HandleSameNotificationIdShowing(const sptrOnSameNotificationIdCovered(); RemoveFromShowedReminders(*it); if ((*it)->IsShare()) { - ReminderDataShareHelper::GetInstance().Update(tmpId, ReminderCalendarShareTable::STATE_DISMISSED); + ReminderDataShareHelper::GetInstance().Update((*it)->GetIdentifier(), + ReminderCalendarShareTable::STATE_DISMISSED); } else { store_->UpdateOrInsert((*it)); } @@ -1683,7 +1675,6 @@ void ReminderDataManager::RemoveFromShowedReminders(const sptr for (auto it = showedReminderVector_.begin(); it != showedReminderVector_.end(); ++it) { if ((*it)->GetReminderId() == reminder->GetReminderId() && (*it)->IsShare() == reminder->IsShare()) { - ANSR_LOGD("Containers(shownVector) remove. reminderId=%{public}d", reminder->GetReminderId()); showedReminderVector_.erase(it); break; } @@ -1739,7 +1730,6 @@ void ReminderDataManager::StartTimer(const sptr &reminderReques time_t now; (void)time(&now); // unit is seconds. if (now < 0) { - ANSR_LOGE("Get now time error"); return; } uint64_t triggerTime = 0; @@ -1761,7 +1751,6 @@ void ReminderDataManager::StartTimer(const sptr &reminderReques break; } default: { - ANSR_LOGE("TimerType not support"); break; } } @@ -1823,7 +1812,6 @@ void ReminderDataManager::StopTimer(TimerType type) break; } default: { - ANSR_LOGE("TimerType not support"); break; } } @@ -1855,7 +1843,6 @@ void ReminderDataManager::ResetStates(TimerType type) break; } default: { - ANSR_LOGE("TimerType not support"); break; } } @@ -1912,7 +1899,7 @@ void ReminderDataManager::ClickReminder(const OHOS::EventFwk::Want &want) ANSR_LOGW("null reminder: %{public}d", reminderId); return; } - CloseReminder(reminder, true); + CloseReminder(reminder, reminder->IsTapDismissed()); StartRecentReminder(); auto wantInfo = reminder->GetWantAgentInfo(); diff --git a/services/reminder/src/reminder_data_manager_inner.cpp b/services/reminder/src/reminder_data_manager_inner.cpp index 423e0ff59..7148076eb 100644 --- a/services/reminder/src/reminder_data_manager_inner.cpp +++ b/services/reminder/src/reminder_data_manager_inner.cpp @@ -447,9 +447,9 @@ void ReminderDataManager::ReportTimerEvent(const int64_t targetTime, const bool if ((now - targetTime) <= deviation) { return; } + std::string event = "REMINDER_TIMER_ERROR"; uint8_t errorCode = isSysTimeChanged ? 0 : 1; - HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::NOTIFICATION, "REMINDER_TIMER_ERROR", - HiviewDFX::HiSysEvent::EventType::STATISTIC, + HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::NOTIFICATION, event, HiviewDFX::HiSysEvent::EventType::STATISTIC, "TARGET_TIME", targetTime, "TRIGGER_TIME", now, "ERROR_CODE", errorCode); #endif } diff --git a/services/reminder/src/reminder_datashare_helper.cpp b/services/reminder/src/reminder_datashare_helper.cpp index 0657fff90..7de5117bd 100644 --- a/services/reminder/src/reminder_datashare_helper.cpp +++ b/services/reminder/src/reminder_datashare_helper.cpp @@ -153,7 +153,7 @@ bool ReminderDataShareHelper::Query(std::map> bool ReminderDataShareHelper::Query(Uri& uri, const std::string& key, std::string& value) { - static constexpr const char* SETTINGS_DATA_EXT_URI = "datashare::///com.ohos.settingsdata.DataAbility"; + static constexpr const char* SETTINGS_DATA_EXT_URI = "datashare:///com.ohos.settingsdata.DataAbility"; static constexpr const char* DATA_COLUMN_KEYWORD = "KEYWORD"; static constexpr const char* DATA_COLUMN_VALUE = "VALUE"; auto helper = CreateDataShareHelper(SETTINGS_DATA_EXT_URI); @@ -173,7 +173,7 @@ bool ReminderDataShareHelper::Query(Uri& uri, const std::string& key, std::strin ANSR_LOGE("GoToFirstRow failed."); result->Close(); helper->Release(); - return false; + return true; } int32_t columnIndex; result->GetColumnIndex(DATA_COLUMN_VALUE, columnIndex); @@ -183,7 +183,7 @@ bool ReminderDataShareHelper::Query(Uri& uri, const std::string& key, std::strin return true; } -bool ReminderDataShareHelper::Update(const int32_t reminderId, const int32_t state) +bool ReminderDataShareHelper::Update(const std::string& identifier, const int32_t state) { auto helper = CreateDataShareHelper(ReminderCalendarShareTable::PROXY); if (helper == nullptr) { @@ -195,7 +195,7 @@ bool ReminderDataShareHelper::Update(const int32_t reminderId, const int32_t sta Uri uri(proxy); DataShare::DataSharePredicates predicates; - predicates.EqualTo(ReminderCalendarShareTable::ID, reminderId); + predicates.EqualTo(ReminderCalendarShareTable::IDENTIFIER, identifier); DataShare::DataShareValuesBucket valuesBucket; valuesBucket.Put(ReminderCalendarShareTable::STATE, state); helper->UpdateEx(uri, predicates, valuesBucket); diff --git a/services/reminder/test/unittest/reminder_agent_service_test.cpp b/services/reminder/test/unittest/reminder_agent_service_test.cpp index d0323d7a1..77fa313a0 100644 --- a/services/reminder/test/unittest/reminder_agent_service_test.cpp +++ b/services/reminder/test/unittest/reminder_agent_service_test.cpp @@ -425,12 +425,12 @@ HWTEST_F(ReminderAgentServiceTest, ReminderAgentServiceTest_015, Function | Smal } /** - * @tc.name: ReminderAgentServiceTest_017 + * @tc.name: ReminderAgentServiceTest_016 * @tc.desc: Test UpdateReminder function * @tc.type: FUNC * @tc.require: issueI5S4VP */ -HWTEST_F(ReminderAgentServiceTest, ReminderAgentServiceTest_017, Function | SmallTest | Level1) +HWTEST_F(ReminderAgentServiceTest, ReminderAgentServiceTest_016, Function | SmallTest | Level1) { // test CreateReminderRequest int32_t reminderId = 0; diff --git a/services/reminder/test/unittest/reminder_data_manager_test.cpp b/services/reminder/test/unittest/reminder_data_manager_test.cpp index 56b255231..f2a14be19 100644 --- a/services/reminder/test/unittest/reminder_data_manager_test.cpp +++ b/services/reminder/test/unittest/reminder_data_manager_test.cpp @@ -1042,7 +1042,7 @@ HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_021, Level1) { ReminderDataShareHelper::GetInstance().RegisterObserver(); ReminderDataShareHelper::GetInstance().RegisterObserver(); - ReminderDataShareHelper::GetInstance().Update(1, 1); + ReminderDataShareHelper::GetInstance().Update("1", 1); ReminderDataShareHelper::GetInstance().OnDataInsertOrDelete(); ReminderDataShareHelper::GetInstance().OnDataInsertOrDelete(); DataShare::DataShareObserver::ChangeInfo info; @@ -1640,5 +1640,47 @@ HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_038, Level1) auto ret = ReminderDataShareHelper::GetInstance().Query(enableUri, "focus_mode_enable", enable); EXPECT_EQ(ret, false); } + +/** + * @tc.name: ReminderDataManagerTest_039 + * @tc.desc: Reminder data manager test + * @tc.type: FUNC + * @tc.require: issueI5YTF3 + */ +HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_039, Level1) +{ + sptr calendar = new ReminderRequestCalendar(300); + calendar->InitBundleName("com.test.test"); + calendar->InitUid(999); + uint64_t triggerTimeInMilli = static_cast(GetCurrentTime()) + 5 * 60 * 1000; + calendar->SetTriggerTimeInMilli(triggerTimeInMilli); + auto result = manager->HandleRefreshReminder(ReminderDataManager::TIME_ZONE_CHANGE, calendar); + EXPECT_TRUE(result == nullptr); + result = manager->HandleRefreshReminder(ReminderDataManager::DATE_TIME_CHANGE, calendar); + EXPECT_TRUE(result == nullptr); + calendar->OnStart(); + calendar->OnShow(false, false, true); + triggerTimeInMilli = static_cast(GetCurrentTime()) + 10 * 60 * 1000; + calendar->SetReminderTimeInMilli(triggerTimeInMilli); + result = manager->HandleRefreshReminder(ReminderDataManager::DATE_TIME_CHANGE, calendar); + EXPECT_TRUE(result == nullptr); +} + +/** + * @tc.name: ReminderDataManagerTest_040 + * @tc.desc: Reminder data manager test + * @tc.type: FUNC + * @tc.require: issueI5YTF3 + */ +HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_040, Level1) +{ + sptr calendar = new ReminderRequestCalendar(300); + calendar->InitBundleName("com.test.test"); + calendar->InitUid(999); + uint64_t triggerTimeInMilli = static_cast(GetCurrentTime()) - 60 * 1000; + calendar->SetTriggerTimeInMilli(triggerTimeInMilli); + auto result = manager->HandleRefreshReminder(ReminderDataManager::DATE_TIME_CHANGE, calendar); + EXPECT_TRUE(result != nullptr); +} } // namespace Notification } // namespace OHOS diff --git a/services/reminder/test/unittest/reminder_store_test.cpp b/services/reminder/test/unittest/reminder_store_test.cpp index 96e61b2bc..22d53da25 100644 --- a/services/reminder/test/unittest/reminder_store_test.cpp +++ b/services/reminder/test/unittest/reminder_store_test.cpp @@ -728,7 +728,7 @@ HWTEST_F(ReminderStoreTest, ReminderStoreTest_001, Function | SmallTest | Level1 callback.OnUpgrade(store, 10, 1); callback.OnUpgrade(store, 1, 2); callback.OnDowngrade(store, 8, 1); - callback.OnUpgrade(store, 1, 9); + callback.OnUpgrade(store, 1, 8); callback.OnDowngrade(store, 1, 8); callback.OnDowngrade(store, 8, 7); } diff --git a/test/fuzztest/reminderdatasharehelper_fuzzer/reminderdatasharehelper_fuzzer.cpp b/test/fuzztest/reminderdatasharehelper_fuzzer/reminderdatasharehelper_fuzzer.cpp index 92c902e92..e9d0b0412 100644 --- a/test/fuzztest/reminderdatasharehelper_fuzzer/reminderdatasharehelper_fuzzer.cpp +++ b/test/fuzztest/reminderdatasharehelper_fuzzer/reminderdatasharehelper_fuzzer.cpp @@ -32,7 +32,7 @@ namespace OHOS { helper.UnRegisterObserver(); std::map> reminders; helper.Query(reminders); - helper.Update(id, id); + helper.Update(bundleName, id); helper.StartDataExtension(id); helper.SetUserId(id); helper.UpdateCalendarUid(); -- Gitee