diff --git a/frameworks/ans/src/notification_subscriber.cpp b/frameworks/ans/src/notification_subscriber.cpp index 911249298e03a17bb60c13b47ff0ea4c51a73534..13b7f2527bcf46cd819f871a080947f5d0209d9a 100644 --- a/frameworks/ans/src/notification_subscriber.cpp +++ b/frameworks/ans/src/notification_subscriber.cpp @@ -97,24 +97,6 @@ NotificationConstant::FlagStatus NotificationSubscriber::DowngradeReminder( } #endif -void NotificationSubscriber::ProcessRemoveExtendInfo(const std::string &deviceType, - std::shared_ptr ¬ification) const -{ - if (deviceType == NotificationConstant::PC_DEVICE_TYPE || - deviceType == NotificationConstant::PAD_DEVICE_TYPE) { - return; - } - sptr request = notification->GetNotificationRequestPoint(); - std::shared_ptr extendInfo = request->GetExtendInfo(); - if (extendInfo != nullptr) { - std::set keySet = extendInfo->KeySet(); - for (std::string key : keySet) { - extendInfo->Remove(key); - } - } - return; -} - const sptr NotificationSubscriber::GetImpl() const { return impl_; @@ -159,7 +141,6 @@ ErrCode NotificationSubscriber::SubscriberImpl::OnConsumed( return ERR_OK; } #endif - subscriber_.ProcessRemoveExtendInfo(subscriber_.GetDeviceType(), sharedNotification); subscriber_.OnConsumed( sharedNotification, std::make_shared(*notificationMap)); return ERR_OK; diff --git a/frameworks/core/src/listener/ans_subscriber_listener.cpp b/frameworks/core/src/listener/ans_subscriber_listener.cpp index 846b76f85196f9d82e64ee6eb626924dbfaab5fa..c3f08221bd46fd2a1c21c4b7c151a6849640f8a9 100644 --- a/frameworks/core/src/listener/ans_subscriber_listener.cpp +++ b/frameworks/core/src/listener/ans_subscriber_listener.cpp @@ -74,7 +74,6 @@ ErrCode SubscriberListener::OnConsumed( } #endif - subscriber->ProcessRemoveExtendInfo(subscriber->GetDeviceType(), sharedNotification); subscriber->OnConsumed( sharedNotification, std::make_shared(*notificationMap)); return ERR_OK; diff --git a/frameworks/js/napi/include/common.h b/frameworks/js/napi/include/common.h index 528ef6188b8c6b0a3596806fd368140262b03dc8..d383bd5279d9dde6e0d9867e288a5148806e483b 100644 --- a/frameworks/js/napi/include/common.h +++ b/frameworks/js/napi/include/common.h @@ -743,6 +743,17 @@ public: */ static napi_value GetNotificationExtraInfo( const napi_env &env, const napi_value &value, NotificationRequest &request); + + /** + * @brief Gets the extendInfo of NotificationRequest object from specified js object + * + * @param env Indicates the environment that the API is invoked under + * @param value Indicates a js object to be converted + * @param request Indicates a NotificationRequest object from specified js object + * @return Returns the null object if success, returns the null value otherwise + */ + static napi_value GetNotificationExtendInfo( + const napi_env &env, const napi_value &value, NotificationRequest &request); /** * @brief Gets the group name of NotificationRequest object from specified js object diff --git a/frameworks/js/napi/src/common_convert_request.cpp b/frameworks/js/napi/src/common_convert_request.cpp index 26a06dba431e6a427f18c1f397946b801e4653c5..edd51e499e8393360e0c994c9fae7aa55b4e1837 100644 --- a/frameworks/js/napi/src/common_convert_request.cpp +++ b/frameworks/js/napi/src/common_convert_request.cpp @@ -711,6 +711,10 @@ napi_value Common::GetNotificationRequestByCustom( if (GetNotificationExtraInfo(env, value, request) == nullptr) { return nullptr; } + // extendInfo?: {[key: string]: any} + if (GetNotificationExtendInfo(env, value, request) == nullptr) { + return nullptr; + } // removalWantAgent?: WantAgent if (GetNotificationRemovalWantAgent(env, value, request) == nullptr) { return nullptr; @@ -1212,6 +1216,36 @@ napi_value Common::GetNotificationExtraInfo(const napi_env &env, const napi_valu return NapiGetNull(env); } +napi_value Common::GetNotificationExtendInfo(const napi_env &env, const napi_value &value, NotificationRequest &request) +{ + ANS_LOGD("enter"); + + napi_valuetype valuetype = napi_undefined; + napi_value result = nullptr; + bool hasProperty = false; + + NAPI_CALL(env, napi_has_named_property(env, value, "extendInfo", &hasProperty)); + if (hasProperty) { + napi_get_named_property(env, value, "extendInfo", &result); + NAPI_CALL(env, napi_typeof(env, result, &valuetype)); + if (valuetype != napi_object) { + ANS_LOGE("Wrong argument type. Object expected."); + std::string msg = "Incorrect parameter types. The type of extendInfo must be object."; + Common::NapiThrow(env, ERROR_PARAM_INVALID, msg); + return nullptr; + } + AAFwk::WantParams wantParams; + if (!OHOS::AppExecFwk::UnwrapWantParams(env, result, wantParams)) { + return nullptr; + } + + std::shared_ptr extendInfo = std::make_shared(wantParams); + request.SetExtendInfo(extendInfo); + } + + return NapiGetNull(env); +} + napi_value Common::GetNotificationGroupName(const napi_env &env, const napi_value &value, NotificationRequest &request) { ANS_LOGD("enter"); diff --git a/interfaces/inner_api/notification_subscriber.h b/interfaces/inner_api/notification_subscriber.h index c4fac028c8c774999c888c2c583c16ed86af2c76..d5b63b61c5975674785cc51a71e11a803b6f263a 100644 --- a/interfaces/inner_api/notification_subscriber.h +++ b/interfaces/inner_api/notification_subscriber.h @@ -137,8 +137,6 @@ public: bool ProcessSyncDecision(const std::string &deviceType, std::shared_ptr ¬ification) const; #endif -void ProcessRemoveExtendInfo(const std::string &deviceType, std::shared_ptr ¬ification) const; - private: class SubscriberImpl final : public AnsSubscriberStub { public: