diff --git a/frameworks/js/napi/src/reminder/publish.cpp b/frameworks/js/napi/src/reminder/publish.cpp index 156a82b7c78a81bc4063e99f01315560ac4cafd0..6a6ee8cabd556b2f29898b9433a7446e2bf237be 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 47ba11ee6b8e765c5b50ef9c682a7ddeb38fc1a1..7625e2cf19a7d16d3a1eaf1aaaa1095f079da66f 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 fa66dfa7d2f9099ec0c3e54e3f3c5d9bce116b6b..42dfaedfed0785262e6fdac1640c802593243636 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 50ed97510667f596a8db975738a7d79443fbdc94..bbfb514b035eba5aff847cf67f2f48ca4e1dda7f 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 fe38e5eacf1e28c7604536e7da7e3a0bc6504320..f722c81295317bd25cd17d366a98fdde5c37c0ab 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 423e0ff598709650dafe7a7bbd40e22c2ad7b3f2..7148076eb2b3da430aca04c9a6fd85480a28b046 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 0657fff90758fe781d6596ff26e054634e06f302..7de5117bd88247de7a349680378f2235f34efcd8 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 d0323d7a15d64b49ab96098c5fdfa7a029ff9a2a..77fa313a028032c6576ca80ec83aab98b10163bc 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 56b2552318b510d69ca85068a1c60d3427e35dc2..f2a14be199f84db796d33a1561a97c4305f90898 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 96e61b2bc99aa5bdb9f943adbaea382d0053eadc..22d53da25a5da51c3c1f68651b1216fddef21b7e 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 92c902e925e24747d3449d42d6f310ac2009a252..e9d0b04127eee90ff2256e1c1ef4bb260e3a091d 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();