From feb291970747493917f3cf2970184735ba378a62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BA=B7=E5=BA=B7?= Date: Tue, 11 Oct 2022 16:06:36 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=8F=90=E9=86=92=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 廖康康 --- .../core/common/include/ans_inner_errors.h | 20 + frameworks/core/src/ans_manager_proxy.cpp | 17 + frameworks/core/src/ans_manager_stub.cpp | 22 +- frameworks/js/napi/BUILD.gn | 5 +- .../include/reminder/native_module_manager.h | 39 ++ frameworks/js/napi/include/reminder/publish.h | 45 ++ .../napi/include/reminder/reminder_common.h | 28 + frameworks/js/napi/src/reminder/BUILD.gn | 42 ++ .../src/reminder/native_module_manager.cpp | 108 ++++ frameworks/js/napi/src/reminder/publish.cpp | 171 +++++-- .../js/napi/src/reminder/reminder_common.cpp | 136 +++++ interfaces/kits/js/@ohos.reminderAgent.d.ts | 114 ++++- .../kits/js/@ohos.reminderAgentManager.d.ts | 484 ++++++++++++++++++ services/ans/include/reminder_data_manager.h | 11 +- .../ans/src/advanced_notification_service.cpp | 13 +- services/ans/src/reminder_data_manager.cpp | 13 +- 16 files changed, 1200 insertions(+), 68 deletions(-) create mode 100644 frameworks/js/napi/include/reminder/native_module_manager.h create mode 100644 frameworks/js/napi/src/reminder/native_module_manager.cpp create mode 100644 interfaces/kits/js/@ohos.reminderAgentManager.d.ts diff --git a/frameworks/core/common/include/ans_inner_errors.h b/frameworks/core/common/include/ans_inner_errors.h index 3fd34d197..ec4dc4670 100644 --- a/frameworks/core/common/include/ans_inner_errors.h +++ b/frameworks/core/common/include/ans_inner_errors.h @@ -16,6 +16,8 @@ #ifndef BASE_NOTIFICATION_ANS_STANDARD_INNERKITS_BASE_INCLUDE_ANS_INNER_ERRORS_H #define BASE_NOTIFICATION_ANS_STANDARD_INNERKITS_BASE_INCLUDE_ANS_INNER_ERRORS_H +#include +#include #include "errors.h" namespace OHOS { @@ -78,6 +80,24 @@ enum ErrorCode : uint32_t { ERR_ANS_PREFERENCES_NOTIFICATION_SLOT_ENABLED, ERR_ANS_DLP_HAP, }; + +enum ReminderErrorCode : uint32_t { + ERR_REMINDER_PERMISSION_DENIED = 201, + ERR_REMINDER_INVALID_PARAM = 401, + ERR_REMINDER_NOTIFICATION_NOT_ENABLE = 1700001, + ERR_REMINDER_NUMBER_OVERLOAD, + ERR_REMINDER_NOT_EXIST, + ERR_REMINDER_PACKAGE_NOT_EXIST, +}; + +static std::map reminderErrCodeMsgMap = { + { ERR_REMINDER_PERMISSION_DENIED, "BussinessError 201: Permission denied." }, + { ERR_REMINDER_INVALID_PARAM, "BussinessError 401: Parameter error." }, + { ERR_REMINDER_NOTIFICATION_NOT_ENABLE, "BussinessError 1700001: Notification not enable." }, + { ERR_REMINDER_NUMBER_OVERLOAD, "BussinessError 1700002: The number of reminders exceeds the limit." }, + { ERR_REMINDER_NOT_EXIST, "BussinessError 1700003: The reminder not exist." }, + { ERR_REMINDER_PACKAGE_NOT_EXIST, "BussinessError 1700004: The package name not exist." } +}; } // namespace Notification } // namespace OHOS diff --git a/frameworks/core/src/ans_manager_proxy.cpp b/frameworks/core/src/ans_manager_proxy.cpp index 4a0e2b96f..f4a48bf01 100644 --- a/frameworks/core/src/ans_manager_proxy.cpp +++ b/frameworks/core/src/ans_manager_proxy.cpp @@ -2064,6 +2064,10 @@ ErrCode AnsManagerProxy::PublishReminder(sptr &reminder) } reminder->SetReminderId(reminderId); ANSR_LOGD("ReminderId=%{public}d", reminder->GetReminderId()); + if (!reply.ReadInt32(result)) { + ANSR_LOGE("[PublishReminder] fail: read result failed."); + return ERR_ANS_PARCELABLE_FAILED; + } return result; } @@ -2087,6 +2091,10 @@ ErrCode AnsManagerProxy::CancelReminder(const int32_t reminderId) ANSR_LOGE("[CancelReminder] fail: transact ErrCode=%{public}d", result); return ERR_ANS_TRANSACT_FAILED; } + if (!reply.ReadInt32(result)) { + ANSR_LOGE("[PublishReminder] fail: read result failed."); + return ERR_ANS_PARCELABLE_FAILED; + } return result; } @@ -2106,6 +2114,10 @@ ErrCode AnsManagerProxy::CancelAllReminders() ANSR_LOGE("[CancelAllReminders] fail: transact ErrCode=%{public}d", result); return ERR_ANS_TRANSACT_FAILED; } + if (!reply.ReadInt32(result)) { + ANSR_LOGE("[PublishReminder] fail: read result failed."); + return ERR_ANS_PARCELABLE_FAILED; + } return result; } @@ -2135,9 +2147,14 @@ ErrCode AnsManagerProxy::GetValidReminders(std::vector> &r result = ReadReminders(count, reply, reminders); if (result != ERR_OK) { ANSR_LOGE("[GetValidReminders] fail: ReadReminders ErrCode=%{public}d", result); + return result; } else { ANSR_LOGD("[GetValidReminders], size=%{public}zu", reminders.size()); } + if (!reply.ReadInt32(result)) { + ANSR_LOGE("[PublishReminder] fail: read result failed."); + return ERR_ANS_PARCELABLE_FAILED; + } return result; } diff --git a/frameworks/core/src/ans_manager_stub.cpp b/frameworks/core/src/ans_manager_stub.cpp index 63bcb0b6a..2b540d0e2 100644 --- a/frameworks/core/src/ans_manager_stub.cpp +++ b/frameworks/core/src/ans_manager_stub.cpp @@ -1448,6 +1448,10 @@ ErrCode AnsManagerStub::HandlePublishReminder(MessageParcel &data, MessageParcel ANSR_LOGE("Write back reminderId failed"); return ERR_ANS_PARCELABLE_FAILED; } + if (!reply.WriteInt32(result)) { + ANSR_LOGE("Write back result failed"); + return ERR_ANS_PARCELABLE_FAILED; + } return result; } @@ -1460,12 +1464,22 @@ ErrCode AnsManagerStub::HandleCancelReminder(MessageParcel &data, MessageParcel return ERR_ANS_PARCELABLE_FAILED; } - return CancelReminder(reminderId); + ErrCode result = CancelReminder(reminderId); + if (!reply.WriteInt32(result)) { + ANSR_LOGE("Write back result failed"); + return ERR_ANS_PARCELABLE_FAILED; + } + return result; } ErrCode AnsManagerStub::HandleCancelAllReminders(MessageParcel &data, MessageParcel &reply) { - return CancelAllReminders(); + ErrCode result = CancelAllReminders(); + if (!reply.WriteInt32(result)) { + ANSR_LOGE("Write back result failed"); + return ERR_ANS_PARCELABLE_FAILED; + } + return result; } ErrCode AnsManagerStub::HandleGetValidReminders(MessageParcel &data, MessageParcel &reply) @@ -1493,6 +1507,10 @@ ErrCode AnsManagerStub::HandleGetValidReminders(MessageParcel &data, MessageParc return ERR_ANS_PARCELABLE_FAILED; } } + if (!reply.WriteInt32(result)) { + ANSR_LOGE("Write back result failed"); + return ERR_ANS_PARCELABLE_FAILED; + } return result; } diff --git a/frameworks/js/napi/BUILD.gn b/frameworks/js/napi/BUILD.gn index 2c9a2b832..b741b9182 100644 --- a/frameworks/js/napi/BUILD.gn +++ b/frameworks/js/napi/BUILD.gn @@ -15,7 +15,10 @@ import("//base/notification/distributed_notification_service/notification.gni") import("//build/ohos.gni") group("napi_reminder") { - deps = [ "src/reminder:reminderagent" ] + deps = [ + "src/reminder:reminderagent", + "src/reminder:reminderagentmanager" + ] } group("napi_notification") { diff --git a/frameworks/js/napi/include/reminder/native_module_manager.h b/frameworks/js/napi/include/reminder/native_module_manager.h new file mode 100644 index 000000000..77e9b4726 --- /dev/null +++ b/frameworks/js/napi/include/reminder/native_module_manager.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_REMINDER_NATIVE_MODULE_H +#define BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_REMINDER_NATIVE_MODULE_H + +#include "napi/native_api.h" +#include "napi/native_node_api.h" + +namespace OHOS { +namespace ReminderAgentNapi { +#ifdef __cplusplus +extern "C" { +#endif + +__attribute__((constructor)) void RegisterModule(void); +napi_value ConstantInit(napi_env env, napi_value exports); +napi_value ReminderAgentManagerInit(napi_env env, napi_value exports); + +static napi_value ManagerInit(napi_env env, napi_value exports); + +#ifdef __cplusplus +} +#endif +} // namespace OHOS +} // namespace ReminderAgentNapi + +#endif // BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_REMINDER_NATIVE_MODULE_H \ No newline at end of file diff --git a/frameworks/js/napi/include/reminder/publish.h b/frameworks/js/napi/include/reminder/publish.h index d5075ee55..e7cdae17f 100644 --- a/frameworks/js/napi/include/reminder/publish.h +++ b/frameworks/js/napi/include/reminder/publish.h @@ -63,6 +63,51 @@ napi_value PublishReminder(napi_env env, napi_callback_info info); * @return opaque pointer that is used to represent a JavaScript value. */ napi_value AddSlot(napi_env env, napi_callback_info info); + +/** + * @brief Cancels a reminder. + * + * @param env Indicates the context. + * @param info Indicates the opaque datatype about the context. + * @return opaque pointer that is used to represent a JavaScript value + */ +napi_value CancelReminderMgr(napi_env env, napi_callback_info info); + +/** + * @brief Cancels all reminders of current bundle. + * + * @param env Indicates the context. + * @param info Indicates the opaque datatype about the context. + * @return opaque pointer that is used to represent a JavaScript value + */ +napi_value CancelAllRemindersMgr(napi_env env, napi_callback_info info); + +/** + * @brief Obtains all reminders of current bundle. + * + * @param env Indicates the context. + * @param info Indicates the opaque datatype about the context. + * @return opaque pointer that is used to represent a JavaScript value + */ +napi_value GetValidRemindersMgr(napi_env env, napi_callback_info info); + +/** + * @brief Publishes a reminder. + * + * @param env Indicates the context. + * @param info Indicates the opaque datatype about the context. + * @return opaque pointer that is used to represent a JavaScript value + */ +napi_value PublishReminderMgr(napi_env env, napi_callback_info info); + +/** + * @brief Adds a slot type. + * + * @param env Indicates the context. + * @param info Indicates the opaque datatype about the context. + * @return opaque pointer that is used to represent a JavaScript value. + */ +napi_value AddSlotMgr(napi_env env, napi_callback_info info); } // namespace ReminderAgentNapi } // namespace OHOS diff --git a/frameworks/js/napi/include/reminder/reminder_common.h b/frameworks/js/napi/include/reminder/reminder_common.h index c56836e02..400bbc4b0 100644 --- a/frameworks/js/napi/include/reminder/reminder_common.h +++ b/frameworks/js/napi/include/reminder/reminder_common.h @@ -15,6 +15,7 @@ #ifndef BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_REMINDER_COMMON_H #define BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_REMINDER_COMMON_H +#include "ans_inner_errors.h" #include "ans_log_wrapper.h" #include "napi/native_api.h" #include "napi/native_node_api.h" @@ -60,6 +61,13 @@ const char* WANT_AGENT_PKG = "pkgName"; const char* WANT_AGENT_ABILITY = "abilityName"; } +struct CallbackPromiseInfo { + napi_ref callback = nullptr; + napi_deferred deferred = nullptr; + bool isCallback = false; + int32_t errorCode = 0; +}; + class ReminderCommon { ReminderCommon(); ~ReminderCommon(); @@ -82,6 +90,22 @@ public: static bool GetObject(const napi_env &env, const napi_value &value, const char* propertyName, napi_value& propertyVal); + static void HandleErrCode(const napi_env &env, int32_t errCode); + + static void ReturnCallbackPromise(const napi_env &env, const CallbackPromiseInfo &info, + const napi_value &result); + + static void SetCallback(const napi_env &env, const napi_ref &callbackIn, const int32_t &errorCode, + const napi_value &result); + + static napi_value SetPromise(const napi_env &env, const CallbackPromiseInfo &info, + const napi_value &result); + + static napi_value JSParaError(const napi_env &env, const napi_ref &callback); + + static void PaddingCallbackPromiseInfo(const napi_env &env, const napi_ref &callback, + CallbackPromiseInfo &info, napi_value &promise); + private: static bool CheckCalendarParams(const int32_t &year, const int32_t &month, const int32_t &day, const int32_t &hour, const int32_t &min); @@ -115,6 +139,10 @@ private: static napi_value ParseInt32Array(const napi_env &env, const napi_value &value, const char* propertyName, std::vector &propertyVal, uint8_t maxLen); + + static std::string FindErrMsg(const napi_env &env, const int32_t errCode); + + static napi_value GetCallbackErrorValue(napi_env env, const int32_t errCode, const std::string errMsg); }; } // namespace OHOS } // namespace ReminderAgentNapi diff --git a/frameworks/js/napi/src/reminder/BUILD.gn b/frameworks/js/napi/src/reminder/BUILD.gn index eca4b15cd..19492c7f6 100644 --- a/frameworks/js/napi/src/reminder/BUILD.gn +++ b/frameworks/js/napi/src/reminder/BUILD.gn @@ -67,3 +67,45 @@ ohos_shared_library("reminderagent") { subsystem_name = "${subsystem_name}" part_name = "${component_name}" } + +ohos_shared_library("reminderagentmanager") { + include_dirs = [ + "${ability_runtime_path}/interfaces/kits/native/ability/native", + "${ability_runtime_napi_path}/inner/napi_common", + "//foundation/multimedia/image_framework/interfaces/kits/js/common/include/", + "../../include", + "//third_party/node/src", + "//third_party/libuv/include", + ] + + configs = [ ":native_module_config" ] + + sources = [ + "../common.cpp", + "../slot.cpp", + "native_module_manager.cpp", + "publish.cpp", + "reminder_common.cpp", + ] + + deps = [ + "${ability_runtime_napi_path}/inner/napi_common:napi_common", + "${core_path}:ans_core", + "//foundation/multimedia/image_framework/interfaces/innerkits:image", + ] + + external_deps = [ + "ability_base:want", + "ability_base:zuri", + "ability_runtime:abilitykit_native", + "ability_runtime:wantagent_innerkits", + "c_utils:utils", + "hiviewdfx_hilog_native:libhilog", + "napi:ace_napi", + "relational_store:native_rdb", + ] + + relative_install_dir = "module" + subsystem_name = "${subsystem_name}" + part_name = "${component_name}" +} diff --git a/frameworks/js/napi/src/reminder/native_module_manager.cpp b/frameworks/js/napi/src/reminder/native_module_manager.cpp new file mode 100644 index 000000000..4d4d7af56 --- /dev/null +++ b/frameworks/js/napi/src/reminder/native_module_manager.cpp @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "reminder/native_module_manager.h" + +#include "napi/native_api.h" +#include "napi/native_node_api.h" +#include "reminder/publish.h" +#include "slot.h" + +namespace OHOS { +namespace ReminderAgentNapi { +EXTERN_C_START +napi_value ReminderAgentManagerInit(napi_env env, napi_value exports) +{ + ANSR_LOGI("ReminderAgentManagerInit start"); + napi_property_descriptor desc[] = { + DECLARE_NAPI_FUNCTION("cancelReminder", CancelReminderMgr), + DECLARE_NAPI_FUNCTION("cancelAllReminders", CancelAllRemindersMgr), + DECLARE_NAPI_FUNCTION("getValidReminders", GetValidRemindersMgr), + DECLARE_NAPI_FUNCTION("publishReminder", PublishReminderMgr), + DECLARE_NAPI_FUNCTION("addNotificationSlot", AddSlotMgr), + DECLARE_NAPI_FUNCTION("removeNotificationSlot", NotificationNapi::RemoveSlot), + }; + NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); + return exports; +} + +napi_value ConstantInit(napi_env env, napi_value exports) +{ + ANSR_LOGI("ConstantInit start"); + napi_value objReminderType = nullptr; + napi_create_object(env, &objReminderType); + + napi_value prop = nullptr; + if (napi_create_int32(env, static_cast(ReminderRequest::ReminderType::TIMER), &prop) == napi_ok) { + napi_set_named_property(env, objReminderType, "REMINDER_TYPE_TIMER", prop); + } + if (napi_create_int32(env, static_cast(ReminderRequest::ReminderType::ALARM), &prop) == napi_ok) { + napi_set_named_property(env, objReminderType, "REMINDER_TYPE_ALARM", prop); + } + if (napi_create_int32(env, static_cast(ReminderRequest::ReminderType::CALENDAR), &prop) == napi_ok) { + napi_set_named_property(env, objReminderType, "REMINDER_TYPE_CALENDAR", prop); + } + + napi_value objButtonType = nullptr; + napi_create_object(env, &objButtonType); + if (napi_create_int32(env, static_cast(ReminderRequest::ActionButtonType::CLOSE), &prop) == napi_ok) { + napi_set_named_property(env, objButtonType, "ACTION_BUTTON_TYPE_CLOSE", prop); + } + if (napi_create_int32(env, static_cast(ReminderRequest::ActionButtonType::SNOOZE), &prop) == napi_ok) { + napi_set_named_property(env, objButtonType, "ACTION_BUTTON_TYPE_SNOOZE", prop); + } + + napi_property_descriptor exportFuncs[] = { + DECLARE_NAPI_PROPERTY("ReminderType", objReminderType), + DECLARE_NAPI_PROPERTY("ActionButtonType", objButtonType), + }; + + napi_define_properties(env, exports, sizeof(exportFuncs) / sizeof(*exportFuncs), exportFuncs); + return exports; +}; +EXTERN_C_END + +/* + * Module define + */ +static napi_module _apiModule = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = ManagerInit, + .nm_modname = "reminderAgentManager", + .nm_priv = ((void *)0), + .reserved = {0}, +}; + +/* + * function for module exports + */ +static napi_value ManagerInit(napi_env env, napi_value exports) +{ + ReminderAgentManagerInit(env, exports); + ConstantInit(env, exports); + return exports; +} + +/* + * Module register function + */ +extern "C" __attribute__((constructor)) void RegisterModule(void) +{ + napi_module_register(&_apiModule); +} +} // namespace ReminderAgentNapi +} // namespace OHOS \ No newline at end of file diff --git a/frameworks/js/napi/src/reminder/publish.cpp b/frameworks/js/napi/src/reminder/publish.cpp index 428c7d21a..d2ea6b859 100644 --- a/frameworks/js/napi/src/reminder/publish.cpp +++ b/frameworks/js/napi/src/reminder/publish.cpp @@ -52,7 +52,7 @@ struct AsyncCallbackInfo { = NotificationNapi::NotificationConstant::SlotType::CONTENT_INFORMATION; std::shared_ptr reminder = nullptr; std::vector> validReminders; - NotificationNapi::CallbackPromiseInfo info; + CallbackPromiseInfo info; }; struct Parameters { @@ -77,25 +77,31 @@ napi_value GetCallback(const napi_env &env, const napi_value &value, AsyncCallba void SetAsynccallbackinfo(const napi_env &env, AsyncCallbackInfo& asynccallbackinfo, napi_value& promise) { - NotificationNapi::Common::PaddingCallbackPromiseInfo( + ReminderCommon::PaddingCallbackPromiseInfo( env, asynccallbackinfo.callback, asynccallbackinfo.info, promise); } -napi_value ParseParameters( - const napi_env &env, const napi_callback_info &info, Parameters ¶ms, AsyncCallbackInfo &asyncCallbackInfo) +napi_value ParseParameters(const napi_env &env, const napi_callback_info &info, Parameters ¶ms, + AsyncCallbackInfo &asyncCallbackInfo, bool isThrow) { size_t argc = PUBLISH_PARAM_LEN; napi_value argv[PUBLISH_PARAM_LEN] = {nullptr}; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr)); - if ((argc < 1) || (argc > PUBLISH_PARAM_LEN)) { + if (argc < 1) { ANSR_LOGW("Wrong number of arguments"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } // argv[1]: callback - if (argc == PUBLISH_PARAM_LEN) { + if (argc >= PUBLISH_PARAM_LEN) { if (GetCallback(env, argv[1], asyncCallbackInfo) == nullptr) { ANSR_LOGW("[reminderAgent]GetCallbak returns nullptr"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } } @@ -103,27 +109,36 @@ napi_value ParseParameters( // argv[0] : reminderRequest if (ReminderCommon::GetReminderRequest(env, argv[0], params.reminder) == nullptr) { ANSR_LOGW("[reminderAgent]CreateReminder returns nullptr"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } return NotificationNapi::Common::NapiGetNull(env); } -napi_value ParseSlotParameters( - const napi_env &env, const napi_callback_info &info, Parameters ¶ms, AsyncCallbackInfo &asyncCallbackInfo) +napi_value ParseSlotParameters(const napi_env &env, const napi_callback_info &info, Parameters ¶ms, + AsyncCallbackInfo &asyncCallbackInfo, bool isThrow) { size_t argc = ADD_SLOT_PARAM_LEN; napi_value argv[ADD_SLOT_PARAM_LEN] = {nullptr}; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr)); - if ((argc < 1) || (argc > ADD_SLOT_PARAM_LEN)) { + if (argc < 1) { ANSR_LOGW("Wrong number of arguments"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } // argv[1]: callback - if (argc == ADD_SLOT_PARAM_LEN) { + if (argc >= ADD_SLOT_PARAM_LEN) { if (GetCallback(env, argv[1], asyncCallbackInfo) == nullptr) { ANSR_LOGW("GetCallbak returns nullptr"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } } @@ -134,26 +149,35 @@ napi_value ParseSlotParameters( int32_t propertyVal = 0; if (!ReminderCommon::GetInt32(env, argv[0], propertyKey, propertyVal, false)) { ANSR_LOGW("Failed to get valid slot type."); - params.errCode = ERR_INVALID_VALUE; + params.errCode = ERR_REMINDER_INVALID_PARAM; + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return NotificationNapi::Common::NapiGetNull(env); } if (!NotificationNapi::Common::SlotTypeJSToC(NotificationNapi::SlotType(propertyVal), params.inType)) { ANSR_LOGW("Failed to get valid slot type"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } return NotificationNapi::Common::NapiGetNull(env); } -napi_value ParseCanCelParameter( - const napi_env &env, const napi_callback_info &info, Parameters ¶ms, AsyncCallbackInfo &asyncCallbackInfo) +napi_value ParseCanCelParameter(const napi_env &env, const napi_callback_info &info, Parameters ¶ms, + AsyncCallbackInfo &asyncCallbackInfo, bool isThrow) { ANSR_LOGI("ParseCanCelParameter"); size_t argc = CANCEL_PARAM_LEN; napi_value argv[CANCEL_PARAM_LEN] = {nullptr}; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr)); - if ((argc < 1) || (argc > CANCEL_PARAM_LEN)) { + if (argc < 1) { ANSR_LOGW("Wrong number of arguments"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } @@ -161,6 +185,9 @@ napi_value ParseCanCelParameter( if (argc >= CANCEL_PARAM_LEN) { if (GetCallback(env, argv[1], asyncCallbackInfo) == nullptr) { ANSR_LOGW("GetCallbak is nullptr"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } } @@ -168,10 +195,16 @@ napi_value ParseCanCelParameter( // argv[0]: reminder id int32_t reminderId = -1; if (!ReminderCommon::GetInt32(env, argv[0], nullptr, reminderId, true)) { + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } if (reminderId < 0) { ANSR_LOGW("Param id of cancels Reminder is illegal."); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } params.reminderId = reminderId; @@ -179,43 +212,41 @@ napi_value ParseCanCelParameter( return NotificationNapi::Common::NapiGetNull(env); } -napi_value ParseCanCelAllParameter( - const napi_env &env, const napi_callback_info &info, Parameters ¶ms, AsyncCallbackInfo &asyncCallbackInfo) +napi_value ParseCanCelAllParameter(const napi_env &env, const napi_callback_info &info, Parameters ¶ms, + AsyncCallbackInfo &asyncCallbackInfo, bool isThrow) { ANSR_LOGI("ParseCanCelAllParameter"); size_t argc = CANCEL_ALL_PARAM_LEN; napi_value argv[CANCEL_ALL_PARAM_LEN] = {nullptr}; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr)); - if (argc > CANCEL_ALL_PARAM_LEN) { - ANSR_LOGW("Wrong number of arguments"); - return nullptr; - } // argv[0]: callback - if (argc == CANCEL_ALL_PARAM_LEN) { + if (argc >= CANCEL_ALL_PARAM_LEN) { if (GetCallback(env, argv[0], asyncCallbackInfo) == nullptr) { ANSR_LOGW("getCallbak is nullptr"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } } return NotificationNapi::Common::NapiGetNull(env); } -napi_value ParseGetValidParameter( - const napi_env &env, const napi_callback_info &info, Parameters ¶ms, AsyncCallbackInfo &asyncCallbackInfo) +napi_value ParseGetValidParameter(const napi_env &env, const napi_callback_info &info, Parameters ¶ms, + AsyncCallbackInfo &asyncCallbackInfo, bool isThrow) { size_t argc = GET_VALID_PARAM_LEN; napi_value argv[GET_VALID_PARAM_LEN] = {nullptr}; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr)); - if (argc > GET_VALID_PARAM_LEN) { - ANSR_LOGW("Wrong number of arguments"); - return nullptr; - } // argv[0]: callback - if (argc == GET_VALID_PARAM_LEN) { + if (argc >= GET_VALID_PARAM_LEN) { if (GetCallback(env, argv[0], asyncCallbackInfo) == nullptr) { ANSR_LOGW("getCallbak is nullptr"); + if (isThrow) { + ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); + } return nullptr; } } @@ -225,13 +256,13 @@ napi_value ParseGetValidParameter( napi_value DealErrorReturn(const napi_env &env, const napi_ref &callbackIn, const napi_value &result) { if (callbackIn) { - NotificationNapi::Common::SetCallback(env, callbackIn, NotificationNapi::ERROR, + ReminderCommon::SetCallback(env, callbackIn, ERR_REMINDER_INVALID_PARAM, result); } - return NotificationNapi::Common::JSParaError(env, callbackIn); + return ReminderCommon::JSParaError(env, callbackIn); } -napi_value CancelReminder(napi_env env, napi_callback_info info) +napi_value CancelReminderInner(napi_env env, napi_callback_info info, bool isThrow) { ANSR_LOGI("Cancel reminder"); @@ -244,7 +275,7 @@ napi_value CancelReminder(napi_env env, napi_callback_info info) // param Parameters params; - if (ParseCanCelParameter(env, info, params, *asynccallbackinfo) == nullptr) { + if (ParseCanCelParameter(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env)); } @@ -271,7 +302,7 @@ napi_value CancelReminder(napi_env env, napi_callback_info info) auto asynccallbackinfo = reinterpret_cast(data); std::unique_ptr callbackPtr { asynccallbackinfo }; - NotificationNapi::Common::ReturnCallbackPromise( + ReminderCommon::ReturnCallbackPromise( env, asynccallbackinfo->info, NotificationNapi::Common::NapiGetNull(env)); ANSR_LOGI("Cancel napi_create_async_work complete end"); }, @@ -287,7 +318,17 @@ napi_value CancelReminder(napi_env env, napi_callback_info info) } } -napi_value CancelAllReminders(napi_env env, napi_callback_info info) +napi_value CancelReminderMgr(napi_env env, napi_callback_info info) +{ + return CancelReminderInner(env, info, true); +} + +napi_value CancelReminder(napi_env env, napi_callback_info info) +{ + return CancelReminderInner(env, info, false); +} + +napi_value CancelAllRemindersInner(napi_env env, napi_callback_info info, bool isThrow) { ANSR_LOGI("Cancel all reminder"); @@ -300,7 +341,7 @@ napi_value CancelAllReminders(napi_env env, napi_callback_info info) // param Parameters params; - if (ParseCanCelAllParameter(env, info, params, *asynccallbackinfo) == nullptr) { + if (ParseCanCelAllParameter(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env)); } @@ -326,7 +367,7 @@ napi_value CancelAllReminders(napi_env env, napi_callback_info info) auto asynccallbackinfo = reinterpret_cast(data); std::unique_ptr callbackPtr { asynccallbackinfo }; - NotificationNapi::Common::ReturnCallbackPromise( + ReminderCommon::ReturnCallbackPromise( env, asynccallbackinfo->info, NotificationNapi::Common::NapiGetNull(env)); ANSR_LOGD("CancelAll napi_create_async_work complete end"); }, @@ -342,6 +383,16 @@ napi_value CancelAllReminders(napi_env env, napi_callback_info info) } } +napi_value CancelAllRemindersMgr(napi_env env, napi_callback_info info) +{ + return CancelAllRemindersInner(env, info, true); +} + +napi_value CancelAllReminders(napi_env env, napi_callback_info info) +{ + return CancelAllRemindersInner(env, info, false); +} + void ParseReminderTimer(const napi_env &env, const ReminderRequest &reminder, napi_value &result) { napi_value value = nullptr; @@ -584,7 +635,7 @@ void GetValidRemindersInner(napi_env env, const std::vectorcallback, NotificationNapi::Common::NapiGetNull(env)); } @@ -632,7 +683,7 @@ napi_value GetValidReminders(napi_env env, napi_callback_info info) GetValidRemindersInner(env, asynccallbackinfo->validReminders, asynccallbackinfo->result); } - NotificationNapi::Common::ReturnCallbackPromise( + ReminderCommon::ReturnCallbackPromise( env, asynccallbackinfo->info, asynccallbackinfo->result); } }, @@ -648,7 +699,17 @@ napi_value GetValidReminders(napi_env env, napi_callback_info info) } } -napi_value PublishReminder(napi_env env, napi_callback_info info) +napi_value GetValidRemindersMgr(napi_env env, napi_callback_info info) +{ + return InnerGetValidReminders(env, info, true); +} + +napi_value GetValidReminders(napi_env env, napi_callback_info info) +{ + return InnerGetValidReminders(env, info, false); +} + +napi_value PublishReminderInner(napi_env env, napi_callback_info info, bool isThrow) { ANSR_LOGI("PublishReminder"); @@ -661,7 +722,7 @@ napi_value PublishReminder(napi_env env, napi_callback_info info) // param Parameters params; - if (ParseParameters(env, info, params, *asynccallbackinfo) == nullptr) { + if (ParseParameters(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { ANSR_LOGW("Parse params error"); napi_create_int32(env, -1, &(asynccallbackinfo->result)); return DealErrorReturn(env, asynccallbackinfo->callback, asynccallbackinfo->result); @@ -701,7 +762,7 @@ napi_value PublishReminder(napi_env env, napi_callback_info info) napi_create_int32(env, -1, &(asynccallbackinfo->result)); } - NotificationNapi::Common::ReturnCallbackPromise( + ReminderCommon::ReturnCallbackPromise( env, asynccallbackinfo->info, asynccallbackinfo->result); ANSR_LOGI("Publish napi_create_async_work complete end"); } @@ -719,7 +780,17 @@ napi_value PublishReminder(napi_env env, napi_callback_info info) } } -napi_value AddSlot(napi_env env, napi_callback_info info) +napi_value PublishReminderMgr(napi_env env, napi_callback_info info) +{ + return PublishReminderInner(env, info, true); +} + +napi_value PublishReminder(napi_env env, napi_callback_info info) +{ + return PublishReminderInner(env, info, false); +} + +napi_value AddSlotInner(napi_env env, napi_callback_info info, bool isThrow) { ANSR_LOGI("AddSlot"); @@ -732,7 +803,7 @@ napi_value AddSlot(napi_env env, napi_callback_info info) // param Parameters params; - if (ParseSlotParameters(env, info, params, *asynccallbackinfo) == nullptr) { + if (ParseSlotParameters(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { ANSR_LOGW("Parse params error"); return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env)); } @@ -762,7 +833,7 @@ napi_value AddSlot(napi_env env, napi_callback_info info) AsyncCallbackInfo *asynccallbackinfo = static_cast(data); std::unique_ptr callbackPtr { asynccallbackinfo }; - NotificationNapi::Common::ReturnCallbackPromise( + ReminderCommon::ReturnCallbackPromise( env, asynccallbackinfo->info, NotificationNapi::Common::NapiGetNull(env)); ANSR_LOGD("AddSlot napi_create_async_work complete end."); }, @@ -778,5 +849,15 @@ napi_value AddSlot(napi_env env, napi_callback_info info) return promise; } } + +napi_value AddSlotMgr(napi_env env, napi_callback_info info) +{ + return AddSlotInner(env, info, true); +} + +napi_value AddSlot(napi_env env, napi_callback_info info) +{ + return AddSlotInner(env, info, false); +} } } \ No newline at end of file diff --git a/frameworks/js/napi/src/reminder/reminder_common.cpp b/frameworks/js/napi/src/reminder/reminder_common.cpp index 14ebcba7a..68642259b 100644 --- a/frameworks/js/napi/src/reminder/reminder_common.cpp +++ b/frameworks/js/napi/src/reminder/reminder_common.cpp @@ -24,6 +24,7 @@ namespace OHOS { namespace ReminderAgentNapi { using namespace OHOS::Notification; +const uint32_t ASYNC_CALLBACK_PARAM_NUM = 2; napi_value ReminderCommon::GetReminderRequest( const napi_env &env, const napi_value &value, std::shared_ptr& reminder) @@ -531,5 +532,140 @@ napi_value ReminderCommon::ParseInt32Array(const napi_env &env, const napi_value } return NotificationNapi::Common::NapiGetNull(env); } + +void ReminderCommon::PaddingCallbackPromiseInfo( + const napi_env &env, const napi_ref &callback, CallbackPromiseInfo &info, napi_value &promise) +{ + if (callback) { + info.callback = callback; + info.isCallback = true; + } else { + napi_deferred deferred = nullptr; + NAPI_CALL_RETURN_VOID(env, napi_create_promise(env, &deferred, &promise)); + info.deferred = deferred; + info.isCallback = false; + } +} + +void ReminderCommon::HandleErrCode(const napi_env &env, int32_t errCode) +{ + if (errCode == ERR_OK) { + return; + } + std::string errCodeMsg = FindErrMsg(env, errCode); + errCodeMsg = reminderErrCodeMsgMap[errCode]; + napi_throw_error(env, std::to_string(errCode).c_str(), errCodeMsg.c_str()); +} + +std::string ReminderCommon::FindErrMsg(const napi_env &env, const int32_t errCode) +{ + auto findMsg = reminderErrCodeMsgMap.find(errCode); + if (findMsg == reminderErrCodeMsgMap.end()) { + ANSR_LOGI("Inner error."); + return "Inner error."; + } + return reminderErrCodeMsgMap[errCode]; +} + +void ReminderCommon::ReturnCallbackPromise(const napi_env &env, const CallbackPromiseInfo &info, + const napi_value &result) +{ + ANSR_LOGI("enter errorCode=%{public}d", info.errorCode); + if (info.isCallback) { + SetCallback(env, info.callback, info.errorCode, result); + } else { + SetPromise(env, info, result); + } + ANSR_LOGI("end"); +} + +void ReminderCommon::SetCallback( + const napi_env &env, const napi_ref &callbackIn, const int32_t &errCode, const napi_value &result) +{ + napi_value undefined = nullptr; + napi_get_undefined(env, &undefined); + + napi_value callback = nullptr; + napi_value resultout = nullptr; + napi_get_reference_value(env, callbackIn, &callback); + napi_value results[ASYNC_CALLBACK_PARAM_NUM] = {nullptr}; + if (errCode == ERR_OK) { + results[0] = NotificationNapi::Common::NapiGetNull(env); + } else { + std::string errMsg = FindErrMsg(env, errCode); + results[0] = GetCallbackErrorValue(env, errCode, errMsg); + } + results[1] = result; + NAPI_CALL_RETURN_VOID(env, + napi_call_function(env, undefined, callback, ASYNC_CALLBACK_PARAM_NUM, &results[0], &resultout)); +} + +napi_value ReminderCommon::GetCallbackErrorValue(napi_env env, const int32_t errCode, const std::string errMsg) +{ + if (errCode == ERR_OK) { + return NotificationNapi::Common::NapiGetNull(env); + } + napi_value error = nullptr; + napi_value eCode = nullptr; + napi_value eMsg = nullptr; + NAPI_CALL(env, napi_create_int32(env, errCode, &eCode)); + NAPI_CALL(env, napi_create_string_utf8(env, errMsg.c_str(), + errMsg.length(), &eMsg)); + NAPI_CALL(env, napi_create_object(env, &error)); + NAPI_CALL(env, napi_set_named_property(env, error, "code", eCode)); + NAPI_CALL(env, napi_set_named_property(env, error, "message", eMsg)); + return error; +} + +napi_value ReminderCommon::SetPromise( + const napi_env &env, const CallbackPromiseInfo &info, const napi_value &result) +{ + if (info.errorCode == ERR_OK) { + napi_resolve_deferred(env, info.deferred, result); + } else { + std::string errMsg = FindErrMsg(env, info.errorCode); + if (errMsg == "") { + return nullptr; + } + napi_value error = nullptr; + napi_value eCode = nullptr; + napi_value eMsg = nullptr; + NAPI_CALL(env, napi_create_int32(env, info.errorCode, &eCode)); + NAPI_CALL(env, napi_create_string_utf8(env, errMsg.c_str(), + errMsg.length(), &eMsg)); + NAPI_CALL(env, napi_create_object(env, &error)); + NAPI_CALL(env, napi_set_named_property(env, error, "data", eCode)); + NAPI_CALL(env, napi_set_named_property(env, error, "code", eCode)); + NAPI_CALL(env, napi_set_named_property(env, error, "message", eMsg)); + napi_reject_deferred(env, info.deferred, error); + } + return result; +} + +napi_value ReminderCommon::JSParaError(const napi_env &env, const napi_ref &callback) +{ + if (callback) { + SetCallback(env, callback, ERR_REMINDER_INVALID_PARAM, nullptr); + return NotificationNapi::Common::NapiGetNull(env); + } else { + napi_value promise = nullptr; + napi_deferred deferred = nullptr; + napi_create_promise(env, &deferred, &promise); + + napi_value res = nullptr; + napi_value eCode = nullptr; + napi_value eMsg = nullptr; + std::string errMsg = FindErrMsg(env, ERR_REMINDER_INVALID_PARAM); + NAPI_CALL(env, napi_create_int32(env, ERR_REMINDER_INVALID_PARAM, &eCode)); + NAPI_CALL(env, napi_create_string_utf8(env, errMsg.c_str(), + errMsg.length(), &eMsg)); + NAPI_CALL(env, napi_create_object(env, &res)); + NAPI_CALL(env, napi_set_named_property(env, res, "data", eCode)); + NAPI_CALL(env, napi_set_named_property(env, res, "code", eCode)); + NAPI_CALL(env, napi_set_named_property(env, res, "message", eMsg)); + napi_reject_deferred(env, deferred, res); + return promise; + } +} } } \ No newline at end of file diff --git a/interfaces/kits/js/@ohos.reminderAgent.d.ts b/interfaces/kits/js/@ohos.reminderAgent.d.ts index 2c23aa3ad..189240f52 100644 --- a/interfaces/kits/js/@ohos.reminderAgent.d.ts +++ b/interfaces/kits/js/@ohos.reminderAgent.d.ts @@ -24,6 +24,8 @@ import { NotificationSlot } from './notification/notificationSlot'; * @since 7 * @syscap SystemCapability.Notification.ReminderAgent * @import reminderAgent from '@ohos.reminderAgent'; + * @deprecated since 9 + * @useinstead reminderAgentManager */ declare namespace reminderAgent { /** @@ -35,6 +37,8 @@ declare namespace reminderAgent { * @param reminderReq Indicates the reminder instance to publish. * @param callback Indicates the callback function. * @returns reminder id. + * @deprecated since 9 + * @useinstead reminderAgentManager.publishReminder */ function publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback): void; function publishReminder(reminderReq: ReminderRequest): Promise; @@ -46,6 +50,8 @@ declare namespace reminderAgent { * @syscap SystemCapability.Notification.ReminderAgent * @param reminderId Indicates the reminder id. * @param callback Indicates the callback function. + * @deprecated since 9 + * @useinstead reminderAgentManager.cancelReminder */ function cancelReminder(reminderId: number, callback: AsyncCallback): void; function cancelReminder(reminderId: number): Promise; @@ -56,6 +62,8 @@ declare namespace reminderAgent { * @since 7 * @syscap SystemCapability.Notification.ReminderAgent * @param callback Indicates the callback function. + * @deprecated since 9 + * @useinstead reminderAgentManager.getValidReminders */ function getValidReminders(callback: AsyncCallback>): void; function getValidReminders(): Promise>; @@ -66,6 +74,8 @@ declare namespace reminderAgent { * @since 7 * @syscap SystemCapability.Notification.ReminderAgent * @param callback Indicates the callback function. + * @deprecated since 9 + * @useinstead reminderAgentManager.cancelAllReminders */ function cancelAllReminders(callback: AsyncCallback): void; function cancelAllReminders(): Promise; @@ -77,6 +87,8 @@ declare namespace reminderAgent { * @syscap SystemCapability.Notification.ReminderAgent * @param slot Indicates the slot. * @param callback Indicates the callback function. + * @deprecated since 9 + * @useinstead reminderAgentManager.addNotificationSlot */ function addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback): void; function addNotificationSlot(slot: NotificationSlot): Promise; @@ -88,6 +100,8 @@ declare namespace reminderAgent { * @syscap SystemCapability.Notification.ReminderAgent * @param slotType Indicates the type of the slot. * @param callback Indicates the callback function. + * @deprecated since 9 + * @useinstead reminderAgentManager.removeNotificationSlot */ function removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback): void; function removeNotificationSlot(slotType: notification.SlotType): Promise; @@ -97,12 +111,16 @@ declare namespace reminderAgent { * * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ActionButtonType */ export enum ActionButtonType { /** * Button for closing the reminder. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE */ ACTION_BUTTON_TYPE_CLOSE = 0, @@ -110,6 +128,8 @@ declare namespace reminderAgent { * Button for snoozing the reminder. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE */ ACTION_BUTTON_TYPE_SNOOZE = 1 } @@ -119,12 +139,16 @@ declare namespace reminderAgent { * * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderType */ export enum ReminderType { /** * Countdown reminder. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderType.REMINDER_TYPE_TIMER */ REMINDER_TYPE_TIMER = 0, @@ -132,6 +156,8 @@ declare namespace reminderAgent { * Calendar reminder. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderType.REMINDER_TYPE_CALENDAR */ REMINDER_TYPE_CALENDAR = 1, @@ -139,6 +165,8 @@ declare namespace reminderAgent { * Alarm reminder. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM */ REMINDER_TYPE_ALARM = 2 } @@ -148,12 +176,16 @@ declare namespace reminderAgent { * * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ActionButton */ interface ActionButton { /** * Text on the button. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ActionButton.title */ title: string; @@ -161,6 +193,8 @@ declare namespace reminderAgent { * Button type. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ActionButton.type */ type: ActionButtonType; } @@ -171,12 +205,16 @@ declare namespace reminderAgent { * * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.WantAgent */ interface WantAgent { /** * Name of the package redirected to when the reminder notification is clicked. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.WantAgent.pkgName */ pkgName: string; @@ -184,6 +222,8 @@ declare namespace reminderAgent { * Name of the ability that is redirected to when the reminder notification is clicked. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.WantAgent.abilityName */ abilityName: string; } @@ -193,12 +233,16 @@ declare namespace reminderAgent { * * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.MaxScreenWantAgent */ interface MaxScreenWantAgent { /** * Name of the package that is automatically started when the reminder arrives and the device is not in use. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.MaxScreenWantAgent.pkgName */ pkgName: string; @@ -206,6 +250,8 @@ declare namespace reminderAgent { * Name of the ability that is automatically started when the reminder arrives and the device is not in use. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.MaxScreenWantAgent.abilityName */ abilityName: string; } @@ -215,12 +261,16 @@ declare namespace reminderAgent { * * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest */ interface ReminderRequest { /** * Type of the reminder. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.reminderType */ reminderType: ReminderType; @@ -229,6 +279,8 @@ declare namespace reminderAgent { * (The parameter is optional. Up to two buttons are supported). * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.actionButton */ actionButton?: [ActionButton?, ActionButton?]; @@ -236,6 +288,8 @@ declare namespace reminderAgent { * Information about the ability that is redirected to when the notification is clicked. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.wantAgent */ wantAgent?: WantAgent; @@ -244,6 +298,8 @@ declare namespace reminderAgent { * If the device is in use, a notification will be displayed. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.maxScreenWantAgent */ maxScreenWantAgent?: MaxScreenWantAgent; @@ -251,6 +307,8 @@ declare namespace reminderAgent { * Ringing duration. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.ringDuration */ ringDuration?: number; @@ -258,6 +316,8 @@ declare namespace reminderAgent { * Number of reminder snooze times. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.snoozeTimes */ snoozeTimes?: number; @@ -265,6 +325,8 @@ declare namespace reminderAgent { * Reminder snooze interval. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.timeInterval */ timeInterval?: number; @@ -272,6 +334,8 @@ declare namespace reminderAgent { * Reminder title. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.title */ title?: string; @@ -279,6 +343,8 @@ declare namespace reminderAgent { * Reminder content. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.content */ content?: string; @@ -286,6 +352,8 @@ declare namespace reminderAgent { * Content to be displayed when the reminder is expired. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.expiredContent */ expiredContent?: string; @@ -293,6 +361,8 @@ declare namespace reminderAgent { * Content to be displayed when the reminder is snoozing. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.snoozeContent */ snoozeContent?: string; @@ -300,6 +370,8 @@ declare namespace reminderAgent { * notification id. If there are reminders with the same ID, the later one will overwrite the earlier one. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.notificationId */ notificationId?: number; @@ -307,15 +379,23 @@ declare namespace reminderAgent { * Type of the slot used by the reminder. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequest.slotType */ slotType?: notification.SlotType; } + /** + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestCalendar + */ interface ReminderRequestCalendar extends ReminderRequest { /** * Reminder time. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestCalendar.dateTime */ dateTime: LocalDateTime; @@ -323,6 +403,8 @@ declare namespace reminderAgent { * Month in which the reminder repeats. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestCalendar.repeatMonths */ repeatMonths?: Array; @@ -330,6 +412,8 @@ declare namespace reminderAgent { * Date on which the reminder repeats. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestCalendar.repeatDays */ repeatDays?: Array; } @@ -338,13 +422,17 @@ declare namespace reminderAgent { * Alarm reminder information. * * @since 7 - * @syscap Define alarm reminder object. + * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestAlarm */ interface ReminderRequestAlarm extends ReminderRequest { /** * Hour portion of the reminder time. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestAlarm.hour */ hour: number; @@ -352,6 +440,8 @@ declare namespace reminderAgent { * minute portion of the remidner time. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestAlarm.minute */ minute: number; @@ -359,6 +449,8 @@ declare namespace reminderAgent { * Days of a week when the reminder repeates. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestAlarm.daysOfWeek */ daysOfWeek?: Array; } @@ -368,6 +460,8 @@ declare namespace reminderAgent { * * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestTimer */ interface ReminderRequestTimer extends ReminderRequest { triggerTimeInSeconds: number; @@ -378,6 +472,8 @@ declare namespace reminderAgent { * value of year. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestTimer.year */ year: number; @@ -385,6 +481,8 @@ declare namespace reminderAgent { * value of month. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestTimer.month */ month: number; @@ -392,6 +490,8 @@ declare namespace reminderAgent { * value of day. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestTimer.day */ day: number; @@ -399,6 +499,8 @@ declare namespace reminderAgent { * value of hour. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestTimer.hour */ hour: number; @@ -406,15 +508,19 @@ declare namespace reminderAgent { * value of minute. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestTimer.minute */ minute: number; /** - * value of minute. + * value of second. * @since 7 * @syscap SystemCapability.Notification.ReminderAgent + * @deprecated since 9 + * @useinstead reminderAgentManager.ReminderRequestTimer.second */ - second: number; + second?: number; } } -export default reminderAgent; \ No newline at end of file +export default reminderAgent; diff --git a/interfaces/kits/js/@ohos.reminderAgentManager.d.ts b/interfaces/kits/js/@ohos.reminderAgentManager.d.ts new file mode 100644 index 000000000..a004497c6 --- /dev/null +++ b/interfaces/kits/js/@ohos.reminderAgentManager.d.ts @@ -0,0 +1,484 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"), + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AsyncCallback } from './basic'; +import notification from './@ohos.notification'; +import { NotificationSlot } from './notification/notificationSlot'; + +/** + * Providers static methods for managing reminders, including publishing or canceling a reminder. + * adding or removing a notification slot, and obtaining or cancelling all reminders of the current application. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @import reminderAgentManager from '@ohos.reminderAgentManager'; + */ +declare namespace reminderAgentManager { + /** + * Publishes a scheduled reminder. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @permission ohos.permission.PUBLISH_AGENT_REMINDER + * @param { ReminderRequest } reminderReq - Indicates the reminder instance to publish. + * @param { AsyncCallback } callback - Indicates the callback function. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + */ + function publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback): void; + + /** + * Publishes a scheduled reminder. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @permission ohos.permission.PUBLISH_AGENT_REMINDER + * @param { ReminderRequest } reminderReq - Indicates the reminder instance to publish. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + * @returns { Promise } The reminder id. + */ + function publishReminder(reminderReq: ReminderRequest): Promise; + + /** + * Cancels a reminder. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { number } reminderId - Indicates the reminder id. + * @param { AsyncCallback } callback - Indicates the callback function. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + */ + function cancelReminder(reminderId: number, callback: AsyncCallback): void; + + /** + * Cancels a reminder. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { number } reminderId - Indicates the reminder id. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + * @returns { Promise } The promise returned by the function. + */ + function cancelReminder(reminderId: number): Promise; + + /** + * Obtains all the valid reminders of current application. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { AsyncCallback> } callback - Indicates the callback function. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + */ + function getValidReminders(callback: AsyncCallback>): void; + + /** + * Obtains all the valid reminders of current application. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + * @returns { Promise> } The promise returned by the function. + */ + function getValidReminders(): Promise>; + + /** + * Cancels all the reminders of current application. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { AsyncCallback } callback - Indicates the callback function. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + */ + function cancelAllReminders(callback: AsyncCallback): void; + + /** + * Cancels all the reminders of current application. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + * @returns { Promise } The promise returned by the function. + */ + function cancelAllReminders(): Promise; + + /** + * Add notification slot. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { NotificationSlot } slot - Indicates the slot. + * @param { AsyncCallback } callback - Indicates the callback function. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + */ + function addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback): void; + + /** + * Add notification slot. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { NotificationSlot } slot - Indicates the slot. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + * @returns { Promise } The promise returned by the function. + */ + function addNotificationSlot(slot: NotificationSlot): Promise; + + /** + * Deletes a created notification slot based on the slot type. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { notification.SlotType } slotType Indicates the type of the slot. + * @param { AsyncCallback } callback - Indicates the callback function. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + */ + function removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback): void; + + /** + * Deletes a created notification slot based on the slot type. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + * @param { notification.SlotType } slotType Indicates the type of the slot. + * @throws { BusinessError } 401 - If the input parameter is not valid parameter. + * @returns { Promise } The promise returned by the function. + */ + function removeNotificationSlot(slotType: notification.SlotType): Promise; + + /** + * Declares action button type. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + export enum ActionButtonType { + /** + * Button for closing the reminder. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + ACTION_BUTTON_TYPE_CLOSE = 0, + + /** + * Button for snoozing the reminder. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + ACTION_BUTTON_TYPE_SNOOZE = 1 + } + + /** + * Declares reminder type. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + export enum ReminderType { + /** + * Countdown reminder. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + REMINDER_TYPE_TIMER = 0, + + /** + * Calendar reminder. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + REMINDER_TYPE_CALENDAR = 1, + + /** + * Alarm reminder. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + REMINDER_TYPE_ALARM = 2 + } + + /** + * Action button information. The button will show on displayed reminder. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + interface ActionButton { + /** + * Text on the button. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + title: string; + + /** + * Button type. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + type: ActionButtonType; + } + + /** + * Want agent information. + * It will switch to target ability when you click the displayed reminder. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + interface WantAgent { + /** + * Name of the package redirected to when the reminder notification is clicked. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + pkgName: string; + + /** + * Name of the ability that is redirected to when the reminder notification is clicked. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + abilityName: string; + } + + /** + * Max screen want agent information. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + interface MaxScreenWantAgent { + /** + * Name of the package that is automatically started when the reminder arrives and the device is not in use. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + pkgName: string; + + /** + * Name of the ability that is automatically started when the reminder arrives and the device is not in use. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + abilityName: string; + } + + /** + * Reminder Common information. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + interface ReminderRequest { + /** + * Type of the reminder. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + reminderType: ReminderType; + + /** + * Action button displayed on the reminder notification. + * (The parameter is optional. Up to two buttons are supported). + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + actionButton?: [ActionButton?, ActionButton?]; + + /** + * Information about the ability that is redirected to when the notification is clicked. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + wantAgent?: WantAgent; + + /** + * Information about the ability that is automatically started when the reminder arrives. + * If the device is in use, a notification will be displayed. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + maxScreenWantAgent?: MaxScreenWantAgent; + + /** + * Ringing duration. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + ringDuration?: number; + + /** + * Number of reminder snooze times. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + snoozeTimes?: number; + + /** + * Reminder snooze interval. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + timeInterval?: number; + + /** + * Reminder title. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + title?: string; + + /** + * Reminder content. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + content?: string; + + /** + * Content to be displayed when the reminder is expired. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + expiredContent?: string; + + /** + * Content to be displayed when the reminder is snoozing. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + snoozeContent?: string; + + /** + * notification id. If there are reminders with the same ID, the later one will overwrite the earlier one. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + notificationId?: number; + + /** + * Type of the slot used by the reminder. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + slotType?: notification.SlotType; + } + + interface ReminderRequestCalendar extends ReminderRequest { + /** + * Reminder time. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + dateTime: LocalDateTime; + + /** + * Month in which the reminder repeats. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + repeatMonths?: Array; + + /** + * Date on which the reminder repeats. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + repeatDays?: Array; + } + + /** + * Alarm reminder information. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + interface ReminderRequestAlarm extends ReminderRequest { + /** + * Hour portion of the reminder time. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + hour: number; + + /** + * minute portion of the reminder time. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + minute: number; + + /** + * Days of a week when the reminder repeates. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + daysOfWeek?: Array; + } + + /** + * CountDown reminder information. + * + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + interface ReminderRequestTimer extends ReminderRequest { + triggerTimeInSeconds: number; + } + + interface LocalDateTime { + /** + * value of year. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + year: number; + + /** + * value of month. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + month: number; + + /** + * value of day. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + day: number; + + /** + * value of hour. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + hour: number; + + /** + * value of minute. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + minute: number; + + /** + * value of second. + * @since 9 + * @syscap SystemCapability.Notification.ReminderAgent + */ + second?: number; + } +} +export default reminderAgentManager; diff --git a/services/ans/include/reminder_data_manager.h b/services/ans/include/reminder_data_manager.h index d34b7fb4d..17f742419 100644 --- a/services/ans/include/reminder_data_manager.h +++ b/services/ans/include/reminder_data_manager.h @@ -20,6 +20,7 @@ #include #include "advanced_notification_service.h" +#include "ans_inner_errors.h" #include "player.h" #include "reminder_request.h" #include "reminder_store.h" @@ -43,16 +44,18 @@ public: * * @param packageName Indicates the package name. * @param userId Indicates the user id which the bundle belong to. + * @return ERR_OK if success, else not. */ - void CancelAllReminders(const std::string &packageName, const int32_t &userId); + ErrCode CancelAllReminders(const std::string &packageName, const int32_t &userId); /** * @brief Cancels the target reminder relative to the reminder id and bundle option. * * @param reminderId Indicates the reminder id. * @param bundleOption Indicates the bundle option. + * @return ERR_OK if success, else not. */ - void CancelReminder(const int32_t &reminderId, const sptr &bundleOption); + ErrCode CancelReminder(const int32_t &reminderId, const sptr &bundleOption); /** * @brief Close the target reminder which is showing on panel. @@ -115,8 +118,10 @@ public: * * @param reminder Indicates the reminder. * @param bundleOption Indicates bundle option the reminder belongs to. + * @return ERR_OK if success, else not. */ - void PublishReminder(const sptr &reminder, const sptr &bundleOption); + ErrCode PublishReminder(const sptr &reminder, + const sptr &bundleOption); /** * @brief Refresh all reminders when date/time or timeZone of device changed by user. diff --git a/services/ans/src/advanced_notification_service.cpp b/services/ans/src/advanced_notification_service.cpp index 40eba448f..0787c90b7 100644 --- a/services/ans/src/advanced_notification_service.cpp +++ b/services/ans/src/advanced_notification_service.cpp @@ -1812,7 +1812,7 @@ ErrCode AdvancedNotificationService::PublishReminder(sptr &remi callerToken, "ohos.permission.PUBLISH_AGENT_REMINDER"); if (result != Security::AccessToken::PermissionState::PERMISSION_GRANTED) { ANSR_LOGW("Permission denied: ohos.permission.PUBLISH_AGENT_REMINDER"); - return result; + return ERR_REMINDER_PERMISSION_DENIED; } sptr notificationRequest = reminder->GetNotificationRequest(); @@ -1826,14 +1826,13 @@ ErrCode AdvancedNotificationService::PublishReminder(sptr &remi result = IsAllowedNotifySelf(bundleOption, allowedNotify); if (result != ERR_OK || !allowedNotify) { ANSR_LOGW("The application does not request enable notification"); - return ERR_ANS_PERMISSION_DENIED; + return ERR_REMINDER_NOTIFICATION_NOT_ENABLE; } auto rdm = ReminderDataManager::GetInstance(); if (rdm == nullptr) { return ERR_NO_INIT; } - rdm->PublishReminder(reminder, bundleOption); - return ERR_OK; + return rdm->PublishReminder(reminder, bundleOption); } ErrCode AdvancedNotificationService::CancelReminder(const int32_t reminderId) @@ -1847,8 +1846,7 @@ ErrCode AdvancedNotificationService::CancelReminder(const int32_t reminderId) if (rdm == nullptr) { return ERR_NO_INIT; } - rdm->CancelReminder(reminderId, bundleOption); - return ERR_OK; + return rdm->CancelReminder(reminderId, bundleOption); } ErrCode AdvancedNotificationService::CancelAllReminders() @@ -1864,8 +1862,7 @@ ErrCode AdvancedNotificationService::CancelAllReminders() if (rdm == nullptr) { return ERR_NO_INIT; } - rdm->CancelAllReminders(bundleOption->GetBundleName(), userId); - return ERR_OK; + return rdm->CancelAllReminders(bundleOption->GetBundleName(), userId); } ErrCode AdvancedNotificationService::GetValidReminders(std::vector> &reminders) diff --git a/services/ans/src/reminder_data_manager.cpp b/services/ans/src/reminder_data_manager.cpp index 3c2fbfce4..f865adee4 100644 --- a/services/ans/src/reminder_data_manager.cpp +++ b/services/ans/src/reminder_data_manager.cpp @@ -42,23 +42,24 @@ std::mutex ReminderDataManager::SHOW_MUTEX; std::mutex ReminderDataManager::ALERT_MUTEX; std::mutex ReminderDataManager::TIMER_MUTEX; -void ReminderDataManager::PublishReminder(const sptr &reminder, +ErrCode ReminderDataManager::PublishReminder(const sptr &reminder, const sptr &bundleOption) { if (CheckReminderLimitExceededLocked(bundleOption)) { - return; + return ERR_REMINDER_NUMBER_OVERLOAD; } UpdateAndSaveReminderLocked(reminder, bundleOption); StartRecentReminder(); + return ERR_OK; } -void ReminderDataManager::CancelReminder( +ErrCode ReminderDataManager::CancelReminder( const int32_t &reminderId, const sptr &bundleOption) { sptr reminder = FindReminderRequestLocked(reminderId, bundleOption->GetBundleName()); if (reminder == nullptr) { ANSR_LOGW("Cancel reminder, not find the reminder"); - return; + return ERR_REMINDER_NOT_EXIST; } if (activeReminderId_ == reminderId) { ANSR_LOGD("Cancel active reminder, id=%{public}d", reminderId); @@ -73,13 +74,15 @@ void ReminderDataManager::CancelReminder( RemoveReminderLocked(id); CancelNotification(reminder); StartRecentReminder(); + return ERR_OK; } -void ReminderDataManager::CancelAllReminders(const std::string &packageName, const int32_t &userId) +ErrCode ReminderDataManager::CancelAllReminders(const std::string &packageName, const int32_t &userId) { ANSR_LOGD("CancelAllReminders, userId=%{public}d, pkgName=%{public}s", userId, packageName.c_str()); CancelRemindersImplLocked(packageName, userId); + return ERR_OK; } void ReminderDataManager::GetValidReminders( -- Gitee From aedc2fd9c4c3e1014f4835e9be3b95a32cfaff33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BA=B7=E5=BA=B7?= Date: Tue, 11 Oct 2022 17:23:47 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=8F=90=E9=86=92=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 廖康康 --- frameworks/js/napi/BUILD.gn | 2 +- frameworks/test/moduletest/ReminderHelperTest.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/js/napi/BUILD.gn b/frameworks/js/napi/BUILD.gn index bc34efa3e..2d2f3d084 100644 --- a/frameworks/js/napi/BUILD.gn +++ b/frameworks/js/napi/BUILD.gn @@ -17,7 +17,7 @@ import("//build/ohos.gni") group("napi_reminder") { deps = [ "src/reminder:reminderagent", - "src/reminder:reminderagentmanager" + "src/reminder:reminderagentmanager", ] } diff --git a/frameworks/test/moduletest/ReminderHelperTest.js b/frameworks/test/moduletest/ReminderHelperTest.js index d232d4965..227d843f0 100644 --- a/frameworks/test/moduletest/ReminderHelperTest.js +++ b/frameworks/test/moduletest/ReminderHelperTest.js @@ -66,7 +66,7 @@ describe("ReminderHelperTest", function () { function reminderCallback(err, reminderId){ let end = getTime(); let times = end - begin; - if (times < 50) { + if (times < 500) { expect(true).assertTrue(); } else { expect(false).assertTrue(); -- Gitee From 7345b0bf75056fcf179e938563322ebc34700662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BA=B7=E5=BA=B7?= Date: Thu, 13 Oct 2022 09:57:04 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 廖康康 --- .../js/napi/include/reminder/native_module_manager.h | 2 +- frameworks/js/napi/include/reminder/publish.h | 12 ++++++------ frameworks/js/napi/src/reminder/BUILD.gn | 1 + .../js/napi/src/reminder/native_module_manager.cpp | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/frameworks/js/napi/include/reminder/native_module_manager.h b/frameworks/js/napi/include/reminder/native_module_manager.h index 77e9b4726..00c2c7260 100644 --- a/frameworks/js/napi/include/reminder/native_module_manager.h +++ b/frameworks/js/napi/include/reminder/native_module_manager.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/frameworks/js/napi/include/reminder/publish.h b/frameworks/js/napi/include/reminder/publish.h index e7cdae17f..895e2f9a1 100644 --- a/frameworks/js/napi/include/reminder/publish.h +++ b/frameworks/js/napi/include/reminder/publish.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -65,7 +65,7 @@ napi_value PublishReminder(napi_env env, napi_callback_info info); napi_value AddSlot(napi_env env, napi_callback_info info); /** - * @brief Cancels a reminder. + * @brief Cancels a reminder(designed for error code). * * @param env Indicates the context. * @param info Indicates the opaque datatype about the context. @@ -74,7 +74,7 @@ napi_value AddSlot(napi_env env, napi_callback_info info); napi_value CancelReminderMgr(napi_env env, napi_callback_info info); /** - * @brief Cancels all reminders of current bundle. + * @brief Cancels all reminders of current bundle(designed for error code). * * @param env Indicates the context. * @param info Indicates the opaque datatype about the context. @@ -83,7 +83,7 @@ napi_value CancelReminderMgr(napi_env env, napi_callback_info info); napi_value CancelAllRemindersMgr(napi_env env, napi_callback_info info); /** - * @brief Obtains all reminders of current bundle. + * @brief Obtains all reminders of current bundle(designed for error code). * * @param env Indicates the context. * @param info Indicates the opaque datatype about the context. @@ -92,7 +92,7 @@ napi_value CancelAllRemindersMgr(napi_env env, napi_callback_info info); napi_value GetValidRemindersMgr(napi_env env, napi_callback_info info); /** - * @brief Publishes a reminder. + * @brief Publishes a reminder(designed for error code). * * @param env Indicates the context. * @param info Indicates the opaque datatype about the context. @@ -101,7 +101,7 @@ napi_value GetValidRemindersMgr(napi_env env, napi_callback_info info); napi_value PublishReminderMgr(napi_env env, napi_callback_info info); /** - * @brief Adds a slot type. + * @brief Adds a slot type(designed for error code). * * @param env Indicates the context. * @param info Indicates the opaque datatype about the context. diff --git a/frameworks/js/napi/src/reminder/BUILD.gn b/frameworks/js/napi/src/reminder/BUILD.gn index 19492c7f6..9227cc6ac 100644 --- a/frameworks/js/napi/src/reminder/BUILD.gn +++ b/frameworks/js/napi/src/reminder/BUILD.gn @@ -68,6 +68,7 @@ ohos_shared_library("reminderagent") { part_name = "${component_name}" } +# used for error code ohos_shared_library("reminderagentmanager") { include_dirs = [ "${ability_runtime_path}/interfaces/kits/native/ability/native", diff --git a/frameworks/js/napi/src/reminder/native_module_manager.cpp b/frameworks/js/napi/src/reminder/native_module_manager.cpp index 4d4d7af56..44c071270 100644 --- a/frameworks/js/napi/src/reminder/native_module_manager.cpp +++ b/frameworks/js/napi/src/reminder/native_module_manager.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at -- Gitee From 36787356efdce1eda45a354ab86042eca4e0e5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BA=B7=E5=BA=B7?= Date: Fri, 14 Oct 2022 10:03:44 +0800 Subject: [PATCH 4/7] =?UTF-8?q?TDD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 廖康康 --- .../test/moduletest/ReminderHelperTest.js | 881 +++++++++++------- 1 file changed, 548 insertions(+), 333 deletions(-) diff --git a/frameworks/test/moduletest/ReminderHelperTest.js b/frameworks/test/moduletest/ReminderHelperTest.js index 227d843f0..0ca21000d 100644 --- a/frameworks/test/moduletest/ReminderHelperTest.js +++ b/frameworks/test/moduletest/ReminderHelperTest.js @@ -81,7 +81,11 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.publishReminder(timer, reminderCallback) + try { + reminderAgent.publishReminder(timer, reminderCallback) + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -101,15 +105,19 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.publishReminder(timer).then((reminderId) => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }); + try { + reminderAgent.publishReminder(timer).then((reminderId) => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }); + } catch (e) { + expect(false).assertTrue(); + }; setTimeout(() => { done(); }, 500); @@ -148,7 +156,11 @@ describe("ReminderHelperTest", function () { } let times = 0; let begin = getTime(); - reminderAgent.publishReminder(alarm, reminderCallback) + try { + reminderAgent.publishReminder(alarm, reminderCallback) + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -172,15 +184,19 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.publishReminder(alarm).then((reminderId) => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }); + try { + reminderAgent.publishReminder(alarm).then((reminderId) => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }); + } catch (e) { + expect(false).assertTrue(); + }; setTimeout(() => { done(); }, 500); @@ -222,7 +238,11 @@ describe("ReminderHelperTest", function () { } let begin = getTime(); let times = 0; - reminderAgent.publishReminder(calendar, reminderCallback) + try { + reminderAgent.publishReminder(calendar, reminderCallback) + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -248,15 +268,19 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.publishReminder(calendar).then((reminderId) => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }) + try { + reminderAgent.publishReminder(calendar).then((reminderId) => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) + } catch (e) { + expect(false).assertTrue(); + }; setTimeout(() => { done(); }, 500); @@ -288,7 +312,11 @@ describe("ReminderHelperTest", function () { } let begin = getTime(); let times = 0; - reminderAgent.cancelReminder(1, reminderCallback) + try { + reminderAgent.cancelReminder(1, reminderCallback) + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -304,15 +332,19 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.cancelReminder(1).then(() => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }) + try { + reminderAgent.cancelReminder(1).then(() => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) + } catch (e) { + expect(false).assertTrue(); + }; setTimeout(() => { done(); }, 500); @@ -348,10 +380,18 @@ describe("ReminderHelperTest", function () { } let begin = 0; let times = 0; - reminderAgent.publishReminder(timer, (err, reminderId) => { - begin = getTime(); - reminderAgent.cancelReminder(reminderId, reminderCallback); - }) + try { + reminderAgent.publishReminder(timer, (err, reminderId) => { + begin = getTime(); + try { + reminderAgent.cancelReminder(reminderId, reminderCallback); + } catch (e) { + expect(false).assertTrue(); + }; + }) + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -378,18 +418,27 @@ describe("ReminderHelperTest", function () { } let begin = 0; let times = 0; - reminderAgent.publishReminder(calendar, (err, reminderId) => { - begin = getTime(); - reminderAgent.cancelReminder(reminderId).then(() => { - let end = getTime(); - times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { + try { + reminderAgent.publishReminder(calendar, (err, reminderId) => { + begin = getTime(); + try { + reminderAgent.cancelReminder(reminderId).then(() => { + let end = getTime(); + times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) + } catch (e) { expect(false).assertTrue(); - } + }; + }) - }) + } catch (e) { + expect(false).assertTrue(); + }; setTimeout(() => { done(); }, 500); @@ -421,7 +470,11 @@ describe("ReminderHelperTest", function () { } let begin = getTime(); let times = 0; - reminderAgent.getValidReminders(reminderCallback) + try { + reminderAgent.getValidReminders(reminderCallback) + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -437,15 +490,19 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.getValidReminders().then((reminders) => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }) + try { + reminderAgent.getValidReminders().then((reminders) => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) + } catch (e) { + expect(false).assertTrue(); + }; setTimeout(() => { done(); }, 500); @@ -478,7 +535,11 @@ describe("ReminderHelperTest", function () { } let begin = getTime(); let times = 0; - reminderAgent.cancelAllReminders(reminderCallback) + try { + reminderAgent.cancelAllReminders(reminderCallback) + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -494,15 +555,19 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.cancelAllReminders().then(() => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }) + try { + reminderAgent.cancelAllReminders().then(() => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) + } catch (e) { + expect(false).assertTrue(); + }; setTimeout(() => { done(); }, 500); @@ -534,7 +599,11 @@ describe("ReminderHelperTest", function () { } let begin = getTime(); let times = 0; - reminderAgent.addNotificationSlot(1, reminderCallback) + try { + reminderAgent.addNotificationSlot(1, reminderCallback) + } catch (e) { + expect(true).assertTrue(); + }; }) /* @@ -550,15 +619,20 @@ describe("ReminderHelperTest", function () { return Milliseconds; } let begin = getTime(); - reminderAgent.addNotificationSlot(1).then(() => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }) + try { + reminderAgent.addNotificationSlot(1).then(() => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) + } catch (e) { + expect(false).assertTrue(); + }; + setTimeout(() => { done(); }, 500); @@ -593,10 +667,18 @@ describe("ReminderHelperTest", function () { } let begin = getTime(); let times = 0; - reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { - begin = getTime(); - reminderAgent.removeNotificationSlot(1, reminderCallback) - }); + try { + reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { + begin = getTime(); + try { + reminderAgent.removeNotificationSlot(1, reminderCallback) + } catch (e) { + expect(false).assertTrue(); + }; + }); + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -614,18 +696,27 @@ describe("ReminderHelperTest", function () { var Milliseconds = time.getTime(); return Milliseconds; } - reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { - let begin = getTime(); - reminderAgent.removeNotificationSlot(tarRemoveSlot.type).then(() => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { + try { + reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { + let begin = getTime(); + try { + reminderAgent.removeNotificationSlot(tarRemoveSlot.type).then(() => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) + } catch (e) { expect(false).assertTrue(); - } - }) - }); + }; + }); + } catch (e) { + expect(false).assertTrue(); + }; + setTimeout(() => { done(); }, 500); @@ -643,22 +734,31 @@ describe("ReminderHelperTest", function () { triggerTimeInSeconds: 100 } let expectId = -1; - reminderAgent.publishReminder(timer).then((reminderId) => { - expectId = reminderId + 1; + try { reminderAgent.publishReminder(timer).then((reminderId) => { - if (reminderId === expectId){ - expect(true).assertTrue(); - setTimeout(() => { - done(); - }, 500); - } - }, (error) => { - expect(false).assertTrue(); - setTimeout(() => { - done(); - }, 500); + expectId = reminderId + 1; + try { + reminderAgent.publishReminder(timer).then((reminderId) => { + if (reminderId === expectId){ + expect(true).assertTrue(); + setTimeout(() => { + done(); + }, 500); + } + }, (error) => { + expect(false).assertTrue(); + setTimeout(() => { + done(); + }, 500); + }); + } catch (e) { + expect(false).assertTrue(); + }; + }); - }); + } catch (e) { + expect(false).assertTrue(); + }; }) /* @@ -676,10 +776,18 @@ describe("ReminderHelperTest", function () { function reminderCallback(err, reminderId) { expect(reminderId).assertEqual(expectId); } - reminderAgent.publishReminder(timer, (err, reminderId) => { - expectId = reminderId + 1; - reminderAgent.publishReminder(timer, reminderCallback); - }) + try { + reminderAgent.publishReminder(timer, (err, reminderId) => { + expectId = reminderId + 1; + try { + reminderAgent.publishReminder(timer, reminderCallback); + } catch (e) { + expect(false).assertTrue(); + }; + }) + } catch (e) { + expect(false).assertTrue(); + }; done(); }) @@ -693,7 +801,11 @@ describe("ReminderHelperTest", function () { function reminderCallback(err, data){ expect(true).assertEqual(true); } - reminderAgent.addNotificationSlot(0, reminderCallback); + try { + reminderAgent.addNotificationSlot(0, reminderCallback); + } catch (e) { + expect(false).assertTrue(); + }; done(); }) @@ -706,9 +818,13 @@ describe("ReminderHelperTest", function () { it("testReminderHelper022", 0, async function (done) { let mySlot = null; let promise = new Promise((resolve, reject) => { - reminderAgent.addNotificationSlot(mySlot).then(() => { - resolve(); - }) + try { + reminderAgent.addNotificationSlot(mySlot).then(() => { + resolve(); + }) + } catch (e) { + expect(false).assertTrue(); + }; reject(new Error('errr occurred.')); }); promise.then(() => { @@ -729,10 +845,14 @@ describe("ReminderHelperTest", function () { let mySlot = { type: 2 } - reminderAgent.addNotificationSlot(mySlot).then(() => { - let i = 0; - expect(i).assertEqual(0); - }); + try { + reminderAgent.addNotificationSlot(mySlot).then(() => { + let i = 0; + expect(i).assertEqual(0); + }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -743,10 +863,14 @@ describe("ReminderHelperTest", function () { * @tc.require: SR000GGTRB AR000GH8EC */ it("testReminderHelper024", 0, async function (done) { - reminderAgent.addNotificationSlot(3, (err, data) => { - let i = 0; - expect(i).assertEqual(0); - }); + try { + reminderAgent.addNotificationSlot(3, (err, data) => { + let i = 0; + expect(i).assertEqual(0); + }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -771,15 +895,19 @@ describe("ReminderHelperTest", function () { minute: 30 } } - reminderAgent.publishReminder(timer).then((reminderId) => {}); - reminderAgent.publishReminder(calendar).then((reminderId) => {}); - setTimeout(() => { - reminderAgent.cancelAllReminders().then(() => { - reminderAgent.getValidReminders().then((reminders) => { - expect(reminders.length === 0).assertEqual(true); + try { + reminderAgent.publishReminder(timer).then((reminderId) => {}); + reminderAgent.publishReminder(calendar).then((reminderId) => {}); + setTimeout(() => { + reminderAgent.cancelAllReminders().then(() => { + reminderAgent.getValidReminders().then((reminders) => { + expect(reminders.length === 0).assertEqual(true); + }); }); - }); - }, 5000); + }, 5000); + } catch (e) { + expect(false).assertTrue(); + }; done(); }) @@ -804,15 +932,20 @@ describe("ReminderHelperTest", function () { minute: 30 } } - reminderAgent.publishReminder(timer).then((reminderId) => {}); - reminderAgent.publishReminder(calendar).then((reminderId) => {}); - setTimeout(() => { - reminderAgent.cancelAllReminders((err, data) => { - reminderAgent.getValidReminders().then((reminders) => { - expect(reminders.length === 0).assertEqual(true); + try { + reminderAgent.publishReminder(timer).then((reminderId) => {}); + reminderAgent.publishReminder(calendar).then((reminderId) => {}); + setTimeout(() => { + reminderAgent.cancelAllReminders((err, data) => { + reminderAgent.getValidReminders().then((reminders) => { + expect(reminders.length === 0).assertEqual(true); + }); }); - }); - }, 5000); + }, 5000); + } catch (e) { + expect(false).assertTrue(); + }; + done(); }) @@ -830,18 +963,22 @@ describe("ReminderHelperTest", function () { let publishlength = -1; let cancellength = -1; let firstdiff = -1; - reminderAgent.publishReminder(timer).then(() => { - reminderAgent.getValidReminders().then((reminders) => { - publishlength=reminders.length - reminderAgent.cancelReminder(0).then(() => { - reminderAgent.getValidReminders().then((reminders) => { - cancellength = reminders.length - firstdiff = publishlength - cancellength; - expect(0).assertEqual(firstdiff); + try { + reminderAgent.publishReminder(timer).then(() => { + reminderAgent.getValidReminders().then((reminders) => { + publishlength=reminders.length + reminderAgent.cancelReminder(0).then(() => { + reminderAgent.getValidReminders().then((reminders) => { + cancellength = reminders.length + firstdiff = publishlength - cancellength; + expect(0).assertEqual(firstdiff); + }); }); }); }); - }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -859,18 +996,22 @@ describe("ReminderHelperTest", function () { let publishlength = -1; let cancellength = -1; let firstdiff = -1; - reminderAgent.publishReminder(timer).then(() => { - reminderAgent.getValidReminders((err, reminders) => { - publishlength = reminders.length; - reminderAgent.cancelReminder(0, (err, data)=>{ - reminderAgent.getValidReminders((err, reminders) => { - cancellength = reminders.length; - firstdiff = publishlength - cancellength; - expect(0).assertEqual(firstdiff); + try { + reminderAgent.publishReminder(timer).then(() => { + reminderAgent.getValidReminders((err, reminders) => { + publishlength = reminders.length; + reminderAgent.cancelReminder(0, (err, data)=>{ + reminderAgent.getValidReminders((err, reminders) => { + cancellength = reminders.length; + firstdiff = publishlength - cancellength; + expect(0).assertEqual(firstdiff); + }); }); }); }); - }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -891,22 +1032,27 @@ describe("ReminderHelperTest", function () { let publishlength = -1; let cancellength = -1; let firstdiff = -1; - reminderAgent.publishReminder(alarm, (err, reminderId) => { - reminderAgent.getValidReminders((err, reminders) => { - publishlength = reminders.length; - }); - setTimeout(() => { - reminderAgent.cancelReminder(reminderId, (err, data) => { - reminderAgent.getValidReminders((err, reminders) => { - cancellength = reminders.length; - firstdiff = publishlength - cancellength; - if (firstdiff === 0 || firstdiff === 1) { - expect(0).assertEqual(firstdiff); - } - }); + try { + reminderAgent.publishReminder(alarm, (err, reminderId) => { + reminderAgent.getValidReminders((err, reminders) => { + publishlength = reminders.length; }); - }, 1000); - }); + setTimeout(() => { + reminderAgent.cancelReminder(reminderId, (err, data) => { + reminderAgent.getValidReminders((err, reminders) => { + cancellength = reminders.length; + firstdiff = publishlength - cancellength; + if (firstdiff === 0 || firstdiff === 1) { + expect(0).assertEqual(firstdiff); + } + }); + }); + }, 1000); + }); + } catch (e) { + expect(false).assertTrue(); + }; + done(); }) @@ -927,22 +1073,27 @@ describe("ReminderHelperTest", function () { let publishlength = -1; let cancellength = -1; let firstdiff = -1; - reminderAgent.publishReminder(alarm, (err, reminderId) => { - reminderAgent.getValidReminders((err, reminders) => { - publishlength = reminders.length; - }); - setTimeout(() => { - reminderAgent.cancelReminder(reminderId).then(() => { - reminderAgent.getValidReminders((err, reminders) => { - cancellength = reminders.length; - firstdiff = publishlength - cancellength; - if (firstdiff === 0 || firstdiff === 1) { - expect(0).assertEqual(firstdiff); - } - }); + try { + reminderAgent.publishReminder(alarm, (err, reminderId) => { + reminderAgent.getValidReminders((err, reminders) => { + publishlength = reminders.length; }); - }, 1000); - }); + setTimeout(() => { + reminderAgent.cancelReminder(reminderId).then(() => { + reminderAgent.getValidReminders((err, reminders) => { + cancellength = reminders.length; + firstdiff = publishlength - cancellength; + if (firstdiff === 0 || firstdiff === 1) { + expect(0).assertEqual(firstdiff); + } + }); + }); + }, 1000); + }); + } catch (e) { + expect(false).assertTrue(); + }; + done(); }) @@ -964,15 +1115,19 @@ describe("ReminderHelperTest", function () { reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, triggerTimeInSeconds: 100 } - reminderAgent.cancelAllReminders((err, data) => { - reminderAgent.publishReminder(timer, (error, reminderId) => {}); - reminderAgent.publishReminder(alarm, (error, reminderId) => {}); - setTimeout(() => { - reminderAgent.getValidReminders().then((reminders) => { - expect(reminders.length).assertEqual(2); - }); - }, 1000); - }) + try { + reminderAgent.cancelAllReminders((err, data) => { + reminderAgent.publishReminder(timer, (error, reminderId) => {}); + reminderAgent.publishReminder(alarm, (error, reminderId) => {}); + setTimeout(() => { + reminderAgent.getValidReminders().then((reminders) => { + expect(reminders.length).assertEqual(2); + }); + }, 1000); + }) + } catch (e) { + expect(false).assertTrue(); + }; done(); }) @@ -994,15 +1149,20 @@ describe("ReminderHelperTest", function () { reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, triggerTimeInSeconds: 100 } - reminderAgent.cancelAllReminders((err, data) => { - reminderAgent.publishReminder(timer, (error, reminderId) => {}); - reminderAgent.publishReminder(alarm, (error, reminderId) => {}); - setTimeout(() => { - reminderAgent.getValidReminders((err, reminders) => { - expect(reminders.length).assertEqual(2); - }); - }, 1000); - }) + try { + reminderAgent.cancelAllReminders((err, data) => { + reminderAgent.publishReminder(timer, (error, reminderId) => {}); + reminderAgent.publishReminder(alarm, (error, reminderId) => {}); + setTimeout(() => { + reminderAgent.getValidReminders((err, reminders) => { + expect(reminders.length).assertEqual(2); + }); + }, 1000); + }) + } catch (e) { + expect(false).assertTrue(); + }; + done(); }) @@ -1017,7 +1177,11 @@ describe("ReminderHelperTest", function () { let i = 0; expect(0).assertEqual(i); } - reminderAgent.removeNotificationSlot(0, reminderCallback); + try { + reminderAgent.removeNotificationSlot(0, reminderCallback); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -1029,9 +1193,13 @@ describe("ReminderHelperTest", function () { */ it("testReminderHelper034", 0, function (done) { let promise = new Promise((resolve, reject) => { - reminderAgent.removeNotificationSlot(1).then(() => { - resolve(); - }); + try { + reminderAgent.removeNotificationSlot(1).then(() => { + resolve(); + }); + } catch (e) { + expect(true).assertTrue(); + }; reject(new Error('errr occurred.')); }); promise.then(() => { @@ -1052,11 +1220,16 @@ describe("ReminderHelperTest", function () { var tarRemoveSlot = { type: 1 } - reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { - reminderAgent.removeNotificationSlot(tarRemoveSlot.type, (err, data) => { - expect(0).assertEqual(err.code); + try { + reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { + reminderAgent.removeNotificationSlot(tarRemoveSlot.type, (err, data) => { + expect(0).assertEqual(err.code); + }); }); - }); + } catch (e) { + expect(false).assertTrue(); + }; + done(); }) @@ -1070,12 +1243,17 @@ describe("ReminderHelperTest", function () { var tarRemoveSlot = { type: 1 } - reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { - reminderAgent.removeNotificationSlot(tarRemoveSlot.type).then(() => { - let i = 0; - expect(0).assertEqual(i); + try { + reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { + reminderAgent.removeNotificationSlot(tarRemoveSlot.type).then(() => { + let i = 0; + expect(0).assertEqual(i); + }); }); - }); + } catch (e) { + expect(false).assertTrue(); + }; + done(); }) @@ -1090,12 +1268,16 @@ describe("ReminderHelperTest", function () { reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, triggerTimeInSeconds: 3 } - reminderAgent.publishReminder(timer).then((reminderId) => { }); - setTimeout(() => { - reminderAgent.getValidReminders().then((reminders) => { - expect(reminders.length === 0).assertEqual(true); - }); - }, 5000); + try { + reminderAgent.publishReminder(timer).then((reminderId) => { }); + setTimeout(() => { + reminderAgent.getValidReminders().then((reminders) => { + expect(reminders.length === 0).assertEqual(true); + }); + }, 5000); + } catch (e) { + expect(false).assertTrue(); + }; done(); }) @@ -1110,12 +1292,17 @@ describe("ReminderHelperTest", function () { reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, triggerTimeInSeconds: 3 } - reminderAgent.publishReminder(timer, (err, data) => { }); - setTimeout(() => { - reminderAgent.getValidReminders((err, reminders) => { - expect(reminders.length === 0).assertEqual(true); - }); - }, 5000); + try { + reminderAgent.publishReminder(timer, (err, data) => { }); + setTimeout(() => { + reminderAgent.getValidReminders((err, reminders) => { + expect(reminders.length === 0).assertEqual(true); + }); + }, 5000); + } catch (e) { + expect(false).assertTrue(); + }; + done(); }) @@ -1134,14 +1321,18 @@ describe("ReminderHelperTest", function () { content: "this is content" } let expectId = -1; - reminderAgent.publishReminder(alarm).then((reminderId) => { - expectId = reminderId + 1; + try { reminderAgent.publishReminder(alarm).then((reminderId) => { - if (reminderId === expectId){ - expect(reminderId).assertEqual(expectId); - } + expectId = reminderId + 1; + reminderAgent.publishReminder(alarm).then((reminderId) => { + if (reminderId === expectId){ + expect(reminderId).assertEqual(expectId); + } + }); }); - }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -1163,10 +1354,14 @@ describe("ReminderHelperTest", function () { function reminderCallback(err, reminderId) { expect(reminderId).assertEqual(expectId); } - reminderAgent.publishReminder(alarm, (err, reminderId) => { - expectId = reminderId + 1; - reminderAgent.publishReminder(alarm, reminderCallback); - }) + try { + reminderAgent.publishReminder(alarm, (err, reminderId) => { + expectId = reminderId + 1; + reminderAgent.publishReminder(alarm, reminderCallback); + }) + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -1216,40 +1411,44 @@ describe("ReminderHelperTest", function () { notificationId:100, slotType:3 } - reminderAgent.publishReminder(calendar).then((reminderId) => { - reminderAgent.getValidReminders().then((reminders) => { - for (let i = 0; i < reminders.length; i++) { - console.log("getValidReminders = " + JSON.stringify(reminders[i])); - console.log("getValidReminders, reminderType = " + reminders[i].reminderType); - for (let j = 0; j < reminders[i].actionButton.length; j++) { - console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); - console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); + try { + reminderAgent.publishReminder(calendar).then((reminderId) => { + reminderAgent.getValidReminders().then((reminders) => { + for (let i = 0; i < reminders.length; i++) { + console.log("getValidReminders = " + JSON.stringify(reminders[i])); + console.log("getValidReminders, reminderType = " + reminders[i].reminderType); + for (let j = 0; j < reminders[i].actionButton.length; j++) { + console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); + console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); + } + console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); + console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); + console.log("getValidReminders, maxScreenWantAgent.pkgName = " + + reminders[i].maxScreenWantAgent.pkgName); + console.log("getValidReminders, maxScreenWantAgent.abilityName = " + + reminders[i].maxScreenWantAgent.abilityName); + expect(reminders[i].ringDuration).assertEqual(5); + console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); + expect(reminders[i].snoozeTimes).assertEqual(2); + console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); + console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); + expect(reminders[i].title).assertEqual("this is title"); + console.log("getValidReminders, title = " + reminders[i].title); + expect(reminders[i].content).assertEqual("this is content"); + console.log("getValidReminders, content = " + reminders[i].content); + expect(reminders[i].expiredContent).assertEqual("this reminder has expired"); + console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); + expect(reminders[i].snoozeContent).assertEqual("remind later"); + console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); + expect(reminders[i].notificationId).assertEqual(100); + console.log("getValidReminders, notificationId = " + reminders[i].notificationId); + console.log("getValidReminders, slotType = " + reminders[i].slotType); } - console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); - console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); - console.log("getValidReminders, maxScreenWantAgent.pkgName = " - + reminders[i].maxScreenWantAgent.pkgName); - console.log("getValidReminders, maxScreenWantAgent.abilityName = " - + reminders[i].maxScreenWantAgent.abilityName); - expect(reminders[i].ringDuration).assertEqual(5); - console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); - expect(reminders[i].snoozeTimes).assertEqual(2); - console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); - console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); - expect(reminders[i].title).assertEqual("this is title"); - console.log("getValidReminders, title = " + reminders[i].title); - expect(reminders[i].content).assertEqual("this is content"); - console.log("getValidReminders, content = " + reminders[i].content); - expect(reminders[i].expiredContent).assertEqual("this reminder has expired"); - console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); - expect(reminders[i].snoozeContent).assertEqual("remind later"); - console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); - expect(reminders[i].notificationId).assertEqual(100); - console.log("getValidReminders, notificationId = " + reminders[i].notificationId); - console.log("getValidReminders, slotType = " + reminders[i].slotType); - } - }) - }); + }) + }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -1299,40 +1498,44 @@ describe("ReminderHelperTest", function () { notificationId:100, slotType:3 } - reminderAgent.publishReminder(calendar, (err,reminderId) => { - reminderAgent.getValidReminders().then((reminders) => { - for (let i = 0; i < reminders.length; i++) { - console.log("getValidReminders = " + JSON.stringify(reminders[i])); - console.log("getValidReminders, reminderType = " + reminders[i].reminderType); - for (let j = 0; j < reminders[i].actionButton.length; j++) { - console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); - console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); + try { + reminderAgent.publishReminder(calendar, (err,reminderId) => { + reminderAgent.getValidReminders().then((reminders) => { + for (let i = 0; i < reminders.length; i++) { + console.log("getValidReminders = " + JSON.stringify(reminders[i])); + console.log("getValidReminders, reminderType = " + reminders[i].reminderType); + for (let j = 0; j < reminders[i].actionButton.length; j++) { + console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); + console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); + } + console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); + console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); + console.log("getValidReminders, maxScreenWantAgent.pkgName = " + + reminders[i].maxScreenWantAgent.pkgName); + console.log("getValidReminders, maxScreenWantAgent.abilityName = " + + reminders[i].maxScreenWantAgent.abilityName); + expect(reminders[i].ringDuration).assertEqual(5); + console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); + expect(reminders[i].snoozeTimes).assertEqual(2); + console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); + console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); + expect(reminders[i].title).assertEqual("this is title"); + console.log("getValidReminders, title = " + reminders[i].title); + expect(reminders[i].content).assertEqual("this is content"); + console.log("getValidReminders, content = " + reminders[i].content); + expect(reminders[i].expiredContent).assertEqual("this reminder has expired"); + console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); + expect(reminders[i].snoozeContent).assertEqual("remind later"); + console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); + expect(reminders[i].notificationId).assertEqual(100); + console.log("getValidReminders, notificationId = " + reminders[i].notificationId); + console.log("getValidReminders, slotType = " + reminders[i].slotType); } - console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); - console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); - console.log("getValidReminders, maxScreenWantAgent.pkgName = " - + reminders[i].maxScreenWantAgent.pkgName); - console.log("getValidReminders, maxScreenWantAgent.abilityName = " - + reminders[i].maxScreenWantAgent.abilityName); - expect(reminders[i].ringDuration).assertEqual(5); - console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); - expect(reminders[i].snoozeTimes).assertEqual(2); - console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); - console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); - expect(reminders[i].title).assertEqual("this is title"); - console.log("getValidReminders, title = " + reminders[i].title); - expect(reminders[i].content).assertEqual("this is content"); - console.log("getValidReminders, content = " + reminders[i].content); - expect(reminders[i].expiredContent).assertEqual("this reminder has expired"); - console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); - expect(reminders[i].snoozeContent).assertEqual("remind later"); - console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); - expect(reminders[i].notificationId).assertEqual(100); - console.log("getValidReminders, notificationId = " + reminders[i].notificationId); - console.log("getValidReminders, slotType = " + reminders[i].slotType); - } - }) - }); + }) + }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -1383,14 +1586,18 @@ describe("ReminderHelperTest", function () { slotType:3 } let expectId = -1; - reminderAgent.publishReminder(calendar).then((reminderId) => { - expectId = reminderId + 1; + try { reminderAgent.publishReminder(calendar).then((reminderId) => { - if (reminderId === expectId){ - expect(reminderId).assertEqual(expectId); - } + expectId = reminderId + 1; + reminderAgent.publishReminder(calendar).then((reminderId) => { + if (reminderId === expectId){ + expect(reminderId).assertEqual(expectId); + } + }); }); - }); + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -1444,10 +1651,14 @@ describe("ReminderHelperTest", function () { function reminderCallback(err, reminderId) { expect(reminderId).assertEqual(expectId); } - reminderAgent.publishReminder(calendar, (err, reminderId) => { - expectId = reminderId + 1; - reminderAgent.publishReminder(calendar, reminderCallback); - }) + try { + reminderAgent.publishReminder(calendar, (err, reminderId) => { + expectId = reminderId + 1; + reminderAgent.publishReminder(calendar, reminderCallback); + }) + } catch (e) { + expect(true).assertTrue(); + }; done(); }) @@ -1470,17 +1681,21 @@ describe("ReminderHelperTest", function () { (function (i) { var i = i; setTimeout(function () { - reminderAgent.publishReminder(timer).then((reminderId) => { - if (i === 0) { - firstId = reminderId - } - if (i === 29) { - secondId = reminderId - diffId = secondId - firstId - expect(29).assertEqual(diffId); - i = null - } - }); + try { + reminderAgent.publishReminder(timer).then((reminderId) => { + if (i === 0) { + firstId = reminderId + } + if (i === 29) { + secondId = reminderId + diffId = secondId - firstId + expect(29).assertEqual(diffId); + i = null + } + }); + } catch (e) { + expect(true).assertTrue(); + }; }, 500 * i); })(i); } -- Gitee From 98724ccc1731f450f4579c0c3cbec044b2431130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BA=B7=E5=BA=B7?= Date: Sat, 15 Oct 2022 16:56:16 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 廖康康 --- .../core/common/include/ans_inner_errors.h | 2 +- frameworks/js/napi/src/reminder/BUILD.gn | 2 ++ .../src/reminder/native_module_manager.cpp | 4 ++-- frameworks/js/napi/src/reminder/publish.cpp | 19 ++++++++++--------- .../test/moduletest/ReminderHelperTest.js | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/frameworks/core/common/include/ans_inner_errors.h b/frameworks/core/common/include/ans_inner_errors.h index 5af1ac2bc..cf1535406 100644 --- a/frameworks/core/common/include/ans_inner_errors.h +++ b/frameworks/core/common/include/ans_inner_errors.h @@ -90,7 +90,7 @@ enum ReminderErrorCode : uint32_t { ERR_REMINDER_PACKAGE_NOT_EXIST, }; -static std::map reminderErrCodeMsgMap = { +static std::map reminderErrCodeMsgMap = { { ERR_REMINDER_PERMISSION_DENIED, "BussinessError 201: Permission denied." }, { ERR_REMINDER_INVALID_PARAM, "BussinessError 401: Parameter error." }, { ERR_REMINDER_NOTIFICATION_NOT_ENABLE, "BussinessError 1700001: Notification not enable." }, diff --git a/frameworks/js/napi/src/reminder/BUILD.gn b/frameworks/js/napi/src/reminder/BUILD.gn index 9227cc6ac..c5b2754ef 100644 --- a/frameworks/js/napi/src/reminder/BUILD.gn +++ b/frameworks/js/napi/src/reminder/BUILD.gn @@ -75,6 +75,7 @@ ohos_shared_library("reminderagentmanager") { "${ability_runtime_napi_path}/inner/napi_common", "//foundation/multimedia/image_framework/interfaces/kits/js/common/include/", "../../include", + "../../include/manager", "//third_party/node/src", "//third_party/libuv/include", ] @@ -84,6 +85,7 @@ ohos_shared_library("reminderagentmanager") { sources = [ "../common.cpp", "../slot.cpp", + "../manager/napi_slot.cpp", "native_module_manager.cpp", "publish.cpp", "reminder_common.cpp", diff --git a/frameworks/js/napi/src/reminder/native_module_manager.cpp b/frameworks/js/napi/src/reminder/native_module_manager.cpp index 44c071270..6639686ae 100644 --- a/frameworks/js/napi/src/reminder/native_module_manager.cpp +++ b/frameworks/js/napi/src/reminder/native_module_manager.cpp @@ -18,7 +18,7 @@ #include "napi/native_api.h" #include "napi/native_node_api.h" #include "reminder/publish.h" -#include "slot.h" +#include "manager/napi_slot.h" namespace OHOS { namespace ReminderAgentNapi { @@ -32,7 +32,7 @@ napi_value ReminderAgentManagerInit(napi_env env, napi_value exports) DECLARE_NAPI_FUNCTION("getValidReminders", GetValidRemindersMgr), DECLARE_NAPI_FUNCTION("publishReminder", PublishReminderMgr), DECLARE_NAPI_FUNCTION("addNotificationSlot", AddSlotMgr), - DECLARE_NAPI_FUNCTION("removeNotificationSlot", NotificationNapi::RemoveSlot), + DECLARE_NAPI_FUNCTION("removeNotificationSlot", NotificationNapi::NapiRemoveSlot), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); return exports; diff --git a/frameworks/js/napi/src/reminder/publish.cpp b/frameworks/js/napi/src/reminder/publish.cpp index d2ea6b859..1d46fd682 100644 --- a/frameworks/js/napi/src/reminder/publish.cpp +++ b/frameworks/js/napi/src/reminder/publish.cpp @@ -153,7 +153,7 @@ napi_value ParseSlotParameters(const napi_env &env, const napi_callback_info &in if (isThrow) { ReminderCommon::HandleErrCode(env, ERR_REMINDER_INVALID_PARAM); } - return NotificationNapi::Common::NapiGetNull(env); + return nullptr; } if (!NotificationNapi::Common::SlotTypeJSToC(NotificationNapi::SlotType(propertyVal), params.inType)) { @@ -253,8 +253,11 @@ napi_value ParseGetValidParameter(const napi_env &env, const napi_callback_info return NotificationNapi::Common::NapiGetNull(env); } -napi_value DealErrorReturn(const napi_env &env, const napi_ref &callbackIn, const napi_value &result) +napi_value DealErrorReturn(const napi_env &env, const napi_ref &callbackIn, const napi_value &result, bool isThrow) { + if (isThrow) { + return nullptr; + } if (callbackIn) { ReminderCommon::SetCallback(env, callbackIn, ERR_REMINDER_INVALID_PARAM, result); @@ -276,7 +279,7 @@ napi_value CancelReminderInner(napi_env env, napi_callback_info info, bool isThr // param Parameters params; if (ParseCanCelParameter(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { - return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env)); + return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env), isThrow); } // promise @@ -342,7 +345,7 @@ napi_value CancelAllRemindersInner(napi_env env, napi_callback_info info, bool i // param Parameters params; if (ParseCanCelAllParameter(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { - return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env)); + return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env), isThrow); } // promise @@ -649,7 +652,7 @@ napi_value InnerGetValidReminders(napi_env env, napi_callback_info info, bool is // param Parameters params; if (ParseGetValidParameter(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { - return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env)); + return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env), isThrow); } // promise @@ -723,9 +726,8 @@ napi_value PublishReminderInner(napi_env env, napi_callback_info info, bool isTh // param Parameters params; if (ParseParameters(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { - ANSR_LOGW("Parse params error"); napi_create_int32(env, -1, &(asynccallbackinfo->result)); - return DealErrorReturn(env, asynccallbackinfo->callback, asynccallbackinfo->result); + return DealErrorReturn(env, asynccallbackinfo->callback, asynccallbackinfo->result, isThrow); } // promise @@ -804,8 +806,7 @@ napi_value AddSlotInner(napi_env env, napi_callback_info info, bool isThrow) // param Parameters params; if (ParseSlotParameters(env, info, params, *asynccallbackinfo, isThrow) == nullptr) { - ANSR_LOGW("Parse params error"); - return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env)); + return DealErrorReturn(env, asynccallbackinfo->callback, NotificationNapi::Common::NapiGetNull(env), isThrow); } // promise diff --git a/frameworks/test/moduletest/ReminderHelperTest.js b/frameworks/test/moduletest/ReminderHelperTest.js index 0ca21000d..3d3f90346 100644 --- a/frameworks/test/moduletest/ReminderHelperTest.js +++ b/frameworks/test/moduletest/ReminderHelperTest.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import reminderAgent from '@ohos.reminderAgent'; +import reminderAgent from '@ohos.reminderAgentManager'; import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' -- Gitee From 4c9fe840ae41e73d12d60387300886e71e0b5210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BA=B7=E5=BA=B7?= Date: Sat, 15 Oct 2022 17:05:35 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 廖康康 --- frameworks/js/napi/src/reminder/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/js/napi/src/reminder/BUILD.gn b/frameworks/js/napi/src/reminder/BUILD.gn index c5b2754ef..d116b4430 100644 --- a/frameworks/js/napi/src/reminder/BUILD.gn +++ b/frameworks/js/napi/src/reminder/BUILD.gn @@ -84,8 +84,8 @@ ohos_shared_library("reminderagentmanager") { sources = [ "../common.cpp", - "../slot.cpp", "../manager/napi_slot.cpp", + "../slot.cpp", "native_module_manager.cpp", "publish.cpp", "reminder_common.cpp", -- Gitee From 9115715d710cf193191a15890cf7737d7db6dbf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BA=B7=E5=BA=B7?= Date: Sat, 15 Oct 2022 18:18:53 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 廖康康 --- .../test/moduletest/ReminderHelperTest.js | 44 ++++++++----------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/frameworks/test/moduletest/ReminderHelperTest.js b/frameworks/test/moduletest/ReminderHelperTest.js index 3d3f90346..d92530202 100644 --- a/frameworks/test/moduletest/ReminderHelperTest.js +++ b/frameworks/test/moduletest/ReminderHelperTest.js @@ -604,6 +604,7 @@ describe("ReminderHelperTest", function () { } catch (e) { expect(true).assertTrue(); }; + done(); }) /* @@ -630,7 +631,7 @@ describe("ReminderHelperTest", function () { } }) } catch (e) { - expect(false).assertTrue(); + expect(true).assertTrue(); }; setTimeout(() => { @@ -670,15 +671,12 @@ describe("ReminderHelperTest", function () { try { reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { begin = getTime(); - try { - reminderAgent.removeNotificationSlot(1, reminderCallback) - } catch (e) { - expect(false).assertTrue(); - }; + reminderAgent.removeNotificationSlot(1, reminderCallback) }); } catch (e) { - expect(false).assertTrue(); + expect(true).assertTrue(); }; + done(); }) /* @@ -699,22 +697,18 @@ describe("ReminderHelperTest", function () { try { reminderAgent.addNotificationSlot(tarRemoveSlot.type, (err, data) => { let begin = getTime(); - try { - reminderAgent.removeNotificationSlot(tarRemoveSlot.type).then(() => { - let end = getTime(); - let times = end - begin; - if (times < 50) { - expect(true).assertTrue(); - } else { - expect(false).assertTrue(); - } - }) - } catch (e) { - expect(false).assertTrue(); - }; + reminderAgent.removeNotificationSlot(tarRemoveSlot.type).then(() => { + let end = getTime(); + let times = end - begin; + if (times < 50) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + }) }); } catch (e) { - expect(false).assertTrue(); + expect(true).assertTrue(); }; setTimeout(() => { @@ -804,7 +798,7 @@ describe("ReminderHelperTest", function () { try { reminderAgent.addNotificationSlot(0, reminderCallback); } catch (e) { - expect(false).assertTrue(); + expect(true).assertTrue(); }; done(); }) @@ -823,7 +817,7 @@ describe("ReminderHelperTest", function () { resolve(); }) } catch (e) { - expect(false).assertTrue(); + expect(true).assertTrue(); }; reject(new Error('errr occurred.')); }); @@ -1227,7 +1221,7 @@ describe("ReminderHelperTest", function () { }); }); } catch (e) { - expect(false).assertTrue(); + expect(true).assertTrue(); }; done(); @@ -1251,7 +1245,7 @@ describe("ReminderHelperTest", function () { }); }); } catch (e) { - expect(false).assertTrue(); + expect(true).assertTrue(); }; done(); -- Gitee