From 5d7c1f6346a327f9fd16395fd9e04c9f99c586a2 Mon Sep 17 00:00:00 2001 From: fangjinliang Date: Tue, 18 Jan 2022 18:38:56 +0800 Subject: [PATCH] global ability Signed-off-by: fangjinliang --- .vscode/settings.json | 5 ++ frameworks/wantagent/BUILD.gn | 2 + frameworks/wantagent/src/pending_want.cpp | 82 +++++++------------ .../wantagent/src/want_agent_helper.cpp | 51 ++++++++---- .../pending_want_test/pending_want_test.cpp | 19 ++--- .../wantagent/include/pending_want.h | 35 ++++---- .../wantagent/include/want_agent_helper.h | 27 ++++-- interfaces/kits/napi/wantagent/BUILD.gn | 2 + .../kits/napi/wantagent/napi_want_agent.cpp | 24 +----- .../kits/napi/wantagent/napi_want_agent.h | 2 +- .../src/notificationfuzztestmanager.cpp | 3 +- 11 files changed, 125 insertions(+), 127 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..d8cb3260a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "string": "cpp" + } +} \ No newline at end of file diff --git a/frameworks/wantagent/BUILD.gn b/frameworks/wantagent/BUILD.gn index 7121bed12..854bdcd64 100644 --- a/frameworks/wantagent/BUILD.gn +++ b/frameworks/wantagent/BUILD.gn @@ -32,6 +32,7 @@ config("wantagent_innerkits_public_config") { "//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core/include/appmgr", "//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core/include/bundlemgr", "//foundation/appexecfwk/standard/interfaces/innerkits/libeventhandler/include", + "//foundation/appexecfwk/standard/kits/appkit/native/ability_runtime/context", "//foundation/appexecfwk/standard/kits/appkit/native/app/include", "//third_party/icu/icu4c/source/common", ] @@ -65,6 +66,7 @@ ohos_shared_library("wantagent_innerkits") { "//foundation/aafwk/standard/services/abilitymgr:abilityms", "//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_base:appexecfwk_base", "//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core:appexecfwk_core", + "//foundation/appexecfwk/standard/kits:app_context", "//foundation/appexecfwk/standard/kits:appkit_native", "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy", "//utils/native/base:utils", diff --git a/frameworks/wantagent/src/pending_want.cpp b/frameworks/wantagent/src/pending_want.cpp index 56e1e4c96..c1fdfae28 100644 --- a/frameworks/wantagent/src/pending_want.cpp +++ b/frameworks/wantagent/src/pending_want.cpp @@ -40,19 +40,15 @@ WantAgentConstant::OperationType PendingWant::GetType(const sptr PendingWant::GetAbility( - const std::shared_ptr &context, int requestCode, const std::shared_ptr &want, unsigned int flags) + const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags) { - return GetAbility(context, requestCode, want, flags, nullptr); + return GetAbility(bundleName, requestCode, want, flags, nullptr); } -std::shared_ptr PendingWant::GetAbility(const std::shared_ptr &context, int requestCode, +std::shared_ptr PendingWant::GetAbility(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags, const std::shared_ptr &options) { WANT_AGENT_LOGI("PendingWant::GetAbility begin."); - if (context == nullptr) { - WANT_AGENT_LOGE("PendingWant::GetAbility invalid input param."); - return nullptr; - } WantsInfo wantsInfo; wantsInfo.want = *want; @@ -64,7 +60,7 @@ std::shared_ptr PendingWant::GetAbility(const std::shared_ptrGetBundleName(); + wantSenderInfo.bundleName = bundleName; wantSenderInfo.flags = flags; wantSenderInfo.userId = 0; wantSenderInfo.requestCode = requestCode; @@ -74,23 +70,18 @@ std::shared_ptr PendingWant::GetAbility(const std::shared_ptr(target); } -std::shared_ptr PendingWant::GetAbilities(const std::shared_ptr &context, int requestCode, +std::shared_ptr PendingWant::GetAbilities(const std::string bundleName, int requestCode, std::vector> &wants, unsigned int flags) { - return GetAbilities(context, requestCode, wants, flags, nullptr); + return GetAbilities(bundleName, requestCode, wants, flags, nullptr); } -std::shared_ptr PendingWant::GetAbilities(const std::shared_ptr &context, int requestCode, +std::shared_ptr PendingWant::GetAbilities(const std::string bundleName, int requestCode, std::vector> &wants, unsigned int flags, const std::shared_ptr &options) { - if (context == nullptr) { - WANT_AGENT_LOGE("PendingWant::GetAbilities invalid input param."); - return nullptr; - } - WantSenderInfo wantSenderInfo; wantSenderInfo.type = (int32_t)WantAgentConstant::OperationType::START_ABILITIES; - wantSenderInfo.bundleName = context->GetBundleName(); + wantSenderInfo.bundleName = bundleName; wantSenderInfo.flags = flags; wantSenderInfo.userId = 0; wantSenderInfo.requestCode = requestCode; @@ -111,19 +102,14 @@ std::shared_ptr PendingWant::GetAbilities(const std::shared_ptr PendingWant::GetCommonEvent( - const std::shared_ptr &context, int requestCode, const std::shared_ptr &want, unsigned int flags) + const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags) { - return GetCommonEventAsUser(context, requestCode, want, flags, 0); + return GetCommonEventAsUser(bundleName, requestCode, want, flags, 0); } -std::shared_ptr PendingWant::GetCommonEventAsUser(const std::shared_ptr &context, int requestCode, +std::shared_ptr PendingWant::GetCommonEventAsUser(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags, int uid) { - if (context == nullptr) { - WANT_AGENT_LOGE("PendingWant::GetCommonEventAsUser invalid input param."); - return nullptr; - } - WantsInfo wantsInfo; if (want != nullptr) { wantsInfo.want = *want; @@ -133,7 +119,7 @@ std::shared_ptr PendingWant::GetCommonEventAsUser(const std::shared WantSenderInfo wantSenderInfo; wantSenderInfo.type = (int32_t)WantAgentConstant::OperationType::SEND_COMMON_EVENT; wantSenderInfo.allWants.push_back(wantsInfo); - wantSenderInfo.bundleName = context->GetBundleName(); + wantSenderInfo.bundleName = bundleName; wantSenderInfo.flags = flags; wantSenderInfo.userId = 0; wantSenderInfo.requestCode = requestCode; @@ -143,27 +129,22 @@ std::shared_ptr PendingWant::GetCommonEventAsUser(const std::shared } std::shared_ptr PendingWant::GetService( - const std::shared_ptr &context, int requestCode, const std::shared_ptr &want, unsigned int flags) + const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags) { - return BuildServicePendingWant(context, requestCode, want, flags, WantAgentConstant::OperationType::START_SERVICE); + return BuildServicePendingWant(bundleName, requestCode, want, flags, WantAgentConstant::OperationType::START_SERVICE); } std::shared_ptr PendingWant::GetForegroundService( - const std::shared_ptr &context, int requestCode, const std::shared_ptr &want, unsigned int flags) + const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags) { return BuildServicePendingWant( - context, requestCode, want, flags, WantAgentConstant::OperationType::START_FOREGROUND_SERVICE); + bundleName, requestCode, want, flags, WantAgentConstant::OperationType::START_FOREGROUND_SERVICE); } -std::shared_ptr PendingWant::BuildServicePendingWant(const std::shared_ptr &context, +std::shared_ptr PendingWant::BuildServicePendingWant(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags, WantAgentConstant::OperationType serviceKind) { - if (context == nullptr) { - WANT_AGENT_LOGE("PendingWant::BuildServicePendingWant invalid input param."); - return nullptr; - } - WantsInfo wantsInfo; if (want != nullptr) { wantsInfo.want = *want; @@ -173,7 +154,7 @@ std::shared_ptr PendingWant::BuildServicePendingWant(const std::sha WantSenderInfo wantSenderInfo; wantSenderInfo.type = (int32_t)serviceKind; wantSenderInfo.allWants.push_back(wantsInfo); - wantSenderInfo.bundleName = context->GetBundleName(); + wantSenderInfo.bundleName = bundleName; wantSenderInfo.flags = flags; wantSenderInfo.userId = 0; wantSenderInfo.requestCode = requestCode; @@ -189,59 +170,54 @@ void PendingWant::Cancel(const sptr &target) void PendingWant::Send(const sptr &target) { - Send(nullptr, 0, nullptr, nullptr, "", nullptr, target); + Send(0, nullptr, nullptr, "", nullptr, target); } void PendingWant::Send(int resultCode, const sptr &target) { - Send(nullptr, resultCode, nullptr, nullptr, "", nullptr, target); + Send(resultCode, nullptr, nullptr, "", nullptr, target); } void PendingWant::Send(const std::shared_ptr &context, int resultCode, const std::shared_ptr &want, const sptr &target) { - Send(context, resultCode, want, nullptr, "", nullptr, target); + Send(resultCode, want, nullptr, "", nullptr, target); } void PendingWant::Send( int resultCode, const sptr &onCompleted, const sptr &target) { - Send(nullptr, resultCode, nullptr, onCompleted, "", nullptr, target); + Send(resultCode, nullptr, onCompleted, "", nullptr, target); } void PendingWant::Send(const std::shared_ptr &context, int resultCode, const std::shared_ptr &want, const sptr &onCompleted, const sptr &target) { - Send(context, resultCode, want, onCompleted, "", nullptr, target); + Send(resultCode, want, onCompleted, "", nullptr, target); } void PendingWant::Send(const std::shared_ptr &context, int resultCode, const std::shared_ptr &want, const sptr &onCompleted, const std::string &requiredPermission, const sptr &target) { - Send(context, resultCode, want, onCompleted, requiredPermission, nullptr, target); + Send(resultCode, want, onCompleted, requiredPermission, nullptr, target); } -void PendingWant::Send(const std::shared_ptr &context, int resultCode, const std::shared_ptr &want, +void PendingWant::Send(int resultCode, const std::shared_ptr &want, const sptr &onCompleted, const std::string &requiredPermission, const std::shared_ptr &options, const sptr &target) { HILOG_INFO("%{public}s:begin.", __func__); - if (SendAndReturnResult(context, resultCode, want, onCompleted, requiredPermission, options, target) != 0) { + if (SendAndReturnResult(resultCode, want, onCompleted, requiredPermission, options, target) != 0) { WANT_AGENT_LOGE("PendingWant::SendAndReturnResult failed."); } } -int PendingWant::SendAndReturnResult(const std::shared_ptr &context, int resultCode, - const std::shared_ptr &want, const sptr &onCompleted, - const std::string &requiredPermission, const std::shared_ptr &options, - const sptr &target) +int PendingWant::SendAndReturnResult(int resultCode, const std::shared_ptr &want, + const sptr &onCompleted, const std::string &requiredPermission, + const std::shared_ptr &options, const sptr &target) { HILOG_INFO("%{public}s:begin.", __func__); - if (context == nullptr) { - WANT_AGENT_LOGE("PendingWant::SendAndReturnResult invalid input param."); - return 1; - } SenderInfo senderInfo; senderInfo.resolvedType = want != nullptr ? want->GetType() : ""; diff --git a/frameworks/wantagent/src/want_agent_helper.cpp b/frameworks/wantagent/src/want_agent_helper.cpp index ba702512b..baacbe036 100644 --- a/frameworks/wantagent/src/want_agent_helper.cpp +++ b/frameworks/wantagent/src/want_agent_helper.cpp @@ -62,15 +62,8 @@ unsigned int WantAgentHelper::FlagsTransformer(const std::vector WantAgentHelper::GetWantAgent( - const std::shared_ptr &context, const WantAgentInfo ¶msInfo) +std::shared_ptr WantAgentHelper::GetWantAgent(std::string bundleName, const WantAgentInfo ¶msInfo) { - WANT_AGENT_LOGI("WantAgentHelper::GetWantAgent begin."); - if (context == nullptr) { - WANT_AGENT_LOGE("WantAgentHelper::GetWantAgent invalid input param."); - return nullptr; - } - std::vector> wants = paramsInfo.GetWants(); if (wants.empty()) { WANT_AGENT_LOGE("WantAgentHelper::GetWantAgent invalid input param."); @@ -94,19 +87,19 @@ std::shared_ptr WantAgentHelper::GetWantAgent( WantAgentConstant::OperationType operationType = paramsInfo.GetOperationType(); switch (operationType) { case WantAgentConstant::OperationType::START_ABILITY: - pendingWant = PendingWant::GetAbility(context, requestCode, wants[0], flags, extraInfo); + pendingWant = PendingWant::GetAbility(bundleName, requestCode, wants[0], flags, extraInfo); break; case WantAgentConstant::OperationType::START_ABILITIES: - pendingWant = PendingWant::GetAbilities(context, requestCode, wants, flags, extraInfo); + pendingWant = PendingWant::GetAbilities(bundleName, requestCode, wants, flags, extraInfo); break; case WantAgentConstant::OperationType::START_SERVICE: - pendingWant = PendingWant::GetService(context, requestCode, wants[0], flags); + pendingWant = PendingWant::GetService(bundleName, requestCode, wants[0], flags); break; case WantAgentConstant::OperationType::START_FOREGROUND_SERVICE: - pendingWant = PendingWant::GetForegroundService(context, requestCode, wants[0], flags); + pendingWant = PendingWant::GetForegroundService(bundleName, requestCode, wants[0], flags); break; case WantAgentConstant::OperationType::SEND_COMMON_EVENT: - pendingWant = PendingWant::GetCommonEvent(context, requestCode, wants[0], flags); + pendingWant = PendingWant::GetCommonEvent(bundleName, requestCode, wants[0], flags); break; default: WANT_AGENT_LOGE("WantAgentHelper::GetWantAgent operation type is error."); @@ -123,6 +116,32 @@ std::shared_ptr WantAgentHelper::GetWantAgent( return agent; } +std::shared_ptr WantAgentHelper::GetWantAgent( + const std::shared_ptr &context, const WantAgentInfo ¶msInfo) +{ + WANT_AGENT_LOGI("WantAgentHelper::GetWantAgent begin."); + if (context == nullptr) { + WANT_AGENT_LOGE("WantAgentHelper::GetWantAgent invalid input param."); + return nullptr; + } + + std::string bundleName = context->GetBundleName(); + return GetWantAgent(bundleName, paramsInfo); +} + +std::shared_ptr WantAgentHelper::GetWantAgent( + const std::shared_ptr &context, const WantAgentInfo ¶msInfo) +{ + WANT_AGENT_LOGI("WantAgentHelper::GetWantAgent begin."); + if (context == nullptr) { + WANT_AGENT_LOGE("WantAgentHelper::GetWantAgent invalid input param."); + return nullptr; + } + + std::string bundleName = context->GetBundleName(); + return GetWantAgent(bundleName, paramsInfo); +} + std::shared_ptr WantAgentHelper::GetWantAgent(const WantAgentInfo ¶msInfo) { std::vector> wants = paramsInfo.GetWants(); @@ -174,7 +193,7 @@ WantAgentConstant::OperationType WantAgentHelper::GetType(const std::shared_ptr< return agent->GetPendingWant()->GetType(agent->GetPendingWant()->GetTarget()); } -void WantAgentHelper::TriggerWantAgent(const std::shared_ptr &context, const std::shared_ptr &agent, +void WantAgentHelper::TriggerWantAgent(const std::shared_ptr &agent, const std::shared_ptr &callback, const TriggerInfo ¶msInfo) { HILOG_INFO("%{public}s:begin.", __func__); @@ -190,10 +209,10 @@ void WantAgentHelper::TriggerWantAgent(const std::shared_ptr &context, dispatcher = new (std::nothrow) CompletedDispatcher(pendingWant, callback, nullptr); } - Send(context, pendingWant, type, dispatcher, paramsInfo); + Send(pendingWant, type, dispatcher, paramsInfo); } -void WantAgentHelper::Send(const std::shared_ptr &context, const std::shared_ptr &pendingWant, +void WantAgentHelper::Send(const std::shared_ptr &pendingWant, WantAgentConstant::OperationType type, const sptr &callBack, const TriggerInfo ¶msInfo) { HILOG_INFO("%{public}s:begin.", __func__); diff --git a/frameworks/wantagent/test/unittest/pending_want_test/pending_want_test.cpp b/frameworks/wantagent/test/unittest/pending_want_test/pending_want_test.cpp index 196a3e363..bacafb10d 100644 --- a/frameworks/wantagent/test/unittest/pending_want_test/pending_want_test.cpp +++ b/frameworks/wantagent/test/unittest/pending_want_test/pending_want_test.cpp @@ -166,7 +166,7 @@ HWTEST_F(PendingWantTest, PendingWant_0400, Function | MediumTest | Level1) want->SetElement(element); unsigned int flags = 1; flags |= FLAG_NO_CREATE; - std::shared_ptr pendingWant = PendingWant::GetAbility(nullptr, requestCode, want, flags); + std::shared_ptr pendingWant = PendingWant::GetAbility("", requestCode, want, flags); EXPECT_EQ(pendingWant, nullptr); } @@ -184,7 +184,7 @@ HWTEST_F(PendingWantTest, PendingWant_0500, Function | MediumTest | Level1) want->SetElement(element); unsigned int flags = 1; flags |= FLAG_NO_CREATE; - std::shared_ptr pendingWant = PendingWant::GetAbility(context, requestCode, want, flags); + std::shared_ptr pendingWant = PendingWant::GetAbility("bundleName", requestCode, want, flags); EXPECT_NE(pendingWant, nullptr); } @@ -206,7 +206,7 @@ HWTEST_F(PendingWantTest, PendingWant_0600, Function | MediumTest | Level1) wParams->SetParam(key, Boolean::Box(value)); unsigned int flags = 1; flags |= FLAG_NO_CREATE; - std::shared_ptr pendingWant = PendingWant::GetAbility(context, requestCode, want, flags, wParams); + std::shared_ptr pendingWant = PendingWant::GetAbility("bundleName", requestCode, want, flags, wParams); EXPECT_NE(pendingWant, nullptr); } @@ -316,7 +316,7 @@ HWTEST_F(PendingWantTest, PendingWant_1100, Function | MediumTest | Level1) want->SetElement(element); unsigned int flags = 1; flags |= FLAG_NO_CREATE; - std::shared_ptr pendingWant = PendingWant::GetCommonEventAsUser(context, requestCode, want, flags, 0); + std::shared_ptr pendingWant = PendingWant::GetCommonEventAsUser("bundleName", requestCode, want, flags, 0); EXPECT_NE(pendingWant, nullptr); } @@ -332,7 +332,7 @@ HWTEST_F(PendingWantTest, PendingWant_1200, Function | MediumTest | Level1) std::shared_ptr want; unsigned int flags = 1; flags |= FLAG_NO_CREATE; - std::shared_ptr pendingWant = PendingWant::GetCommonEventAsUser(context, requestCode, want, flags, 0); + std::shared_ptr pendingWant = PendingWant::GetCommonEventAsUser("bundleName", requestCode, want, flags, 0); EXPECT_NE(pendingWant, nullptr); } @@ -348,7 +348,7 @@ HWTEST_F(PendingWantTest, PendingWant_1300, Function | MediumTest | Level1) std::shared_ptr want; unsigned int flags = 1; flags |= FLAG_NO_CREATE; - std::shared_ptr pendingWant = PendingWant::GetService(context, requestCode, want, flags); + std::shared_ptr pendingWant = PendingWant::GetService("bundleName", requestCode, want, flags); EXPECT_NE(pendingWant, nullptr); } @@ -381,7 +381,7 @@ HWTEST_F(PendingWantTest, PendingWant_1500, Function | MediumTest | Level1) std::shared_ptr want; unsigned int flags = 1; flags |= FLAG_NO_CREATE; - std::shared_ptr pendingWant = PendingWant::GetForegroundService(context, requestCode, want, flags); + std::shared_ptr pendingWant = PendingWant::GetForegroundService("bundleName", requestCode, want, flags); EXPECT_NE(pendingWant, nullptr); } @@ -474,7 +474,6 @@ HWTEST_F(PendingWantTest, PendingWant_2000, Function | MediumTest | Level1) HWTEST_F(PendingWantTest, PendingWant_2100, Function | MediumTest | Level1) { PendingWant pendingWant(nullptr); - std::shared_ptr context = std::make_shared(); int requestCode = 10; std::shared_ptr want = std::make_shared(); ElementName element("device", "bundleName", "abilityName"); @@ -487,7 +486,7 @@ HWTEST_F(PendingWantTest, PendingWant_2100, Function | MediumTest | Level1) flags |= FLAG_NO_CREATE; AbilityManagerClient::GetInstance()->Connect(); EXPECT_EQ(INNER_ERR, - pendingWant.SendAndReturnResult(context, requestCode, want, nullptr, "Permission", nullptr, nullptr)); + pendingWant.SendAndReturnResult(requestCode, want, nullptr, "Permission", nullptr, nullptr)); } /* @@ -509,7 +508,7 @@ HWTEST_F(PendingWantTest, PendingWant_2200, Function | MediumTest | Level1) unsigned int flags = 1; flags |= FLAG_NO_CREATE; AbilityManagerClient::GetInstance()->Connect(); - EXPECT_EQ(1, pendingWant.SendAndReturnResult(nullptr, requestCode, want, nullptr, "Permission", nullptr, nullptr)); + EXPECT_EQ(1, pendingWant.SendAndReturnResult(requestCode, want, nullptr, "Permission", nullptr, nullptr)); } /* diff --git a/interfaces/innerkits/wantagent/include/pending_want.h b/interfaces/innerkits/wantagent/include/pending_want.h index 1db00b773..371dff020 100644 --- a/interfaces/innerkits/wantagent/include/pending_want.h +++ b/interfaces/innerkits/wantagent/include/pending_want.h @@ -26,8 +26,9 @@ #include "event_handler.h" #include "want.h" #include "want_agent_constant.h" -#include "want_receiver_stub.h" #include "want_params.h" +#include "want_receiver_stub.h" +#include "want_sender_stub.h" namespace OHOS::Notification::WantAgent { class PendingWant final : public std::enable_shared_from_this, public Parcelable { @@ -53,7 +54,7 @@ public: * parameters. May return null only if FLAG_NO_CREATE has been * supplied. */ - static std::shared_ptr GetAbility(const std::shared_ptr &context, int requestCode, + static std::shared_ptr GetAbility(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags); /** @@ -72,7 +73,7 @@ public: * parameters. May return null only if FLAG_NO_CREATE has been * supplied. */ - static std::shared_ptr GetAbility(const std::shared_ptr &context, int requestCode, + static std::shared_ptr GetAbility(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags, const std::shared_ptr &options); @@ -93,7 +94,7 @@ public: * parameters. May return null only if FLAG_NO_CREATE has been * supplied. */ - static std::shared_ptr GetAbilities(const std::shared_ptr &context, + static std::shared_ptr GetAbilities(const std::string bundleName, int requestCode, std::vector> &wants, unsigned int flags); /** @@ -114,7 +115,7 @@ public: * parameters. May return null only if FLAG_NO_CREATE has been * supplied. */ - static std::shared_ptr GetAbilities(const std::shared_ptr &context, + static std::shared_ptr GetAbilities(const std::string bundleName, int requestCode, std::vector> &wants, unsigned int flags, const std::shared_ptr &options); @@ -133,14 +134,14 @@ public: * parameters. May return null only if FLAG_NO_CREATE has been * supplied. */ - static std::shared_ptr GetCommonEvent(const std::shared_ptr &context, + static std::shared_ptr GetCommonEvent(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags); /** * Note that current user will be interpreted at the time the * common event is sent, not when the pending want is created. */ - static std::shared_ptr GetCommonEventAsUser(const std::shared_ptr &context, + static std::shared_ptr GetCommonEventAsUser(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags, int uid); /** @@ -158,7 +159,7 @@ public: * parameters. May return null only if FLAG_NO_CREATE has been * supplied. */ - static std::shared_ptr GetService(const std::shared_ptr &context, int requestCode, + static std::shared_ptr GetService(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags); /** @@ -176,7 +177,7 @@ public: * parameters. May return null only if FLAG_NO_CREATE has been * supplied. */ - static std::shared_ptr GetForegroundService(const std::shared_ptr &context, + static std::shared_ptr GetForegroundService(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags); /** @@ -217,15 +218,13 @@ public: const std::shared_ptr &want, const sptr &onCompleted, const std::string &requiredPermission, const sptr &target); - void Send(const std::shared_ptr &context, int resultCode, - const std::shared_ptr &want, const sptr &onCompleted, - const std::string &requiredPermission, const std::shared_ptr &options, - const sptr &target); + void Send(int resultCode, const std::shared_ptr &want, + const sptr &onCompleted, const std::string &requiredPermission, + const std::shared_ptr &options, const sptr &target); - int SendAndReturnResult(const std::shared_ptr &context, int resultCode, - const std::shared_ptr &want, const sptr &onCompleted, - const std::string &requiredPermission, const std::shared_ptr &options, - const sptr &target); + int SendAndReturnResult(int resultCode, const std::shared_ptr &want, + const sptr &onCompleted, const std::string &requiredPermission, + const std::shared_ptr &options, const sptr &target); std::string GetBundleName(const sptr &target); @@ -267,7 +266,7 @@ private: std::weak_ptr outerInstance_; }; - static std::shared_ptr BuildServicePendingWant(const std::shared_ptr &context, + static std::shared_ptr BuildServicePendingWant(const std::string bundleName, int requestCode, const std::shared_ptr &want, unsigned int flags, WantAgentConstant::OperationType serviceKind); }; diff --git a/interfaces/innerkits/wantagent/include/want_agent_helper.h b/interfaces/innerkits/wantagent/include/want_agent_helper.h index 7f3027fcf..bff97b593 100644 --- a/interfaces/innerkits/wantagent/include/want_agent_helper.h +++ b/interfaces/innerkits/wantagent/include/want_agent_helper.h @@ -56,6 +56,19 @@ public: static std::shared_ptr GetWantAgent( const std::shared_ptr &context, const WantAgentInfo ¶msInfo); + /** + * Obtains an WantAgent object. + * The WantAgent class does not have any constructor, and you can only use this method to create an + * WantAgent object. + * + * @param context Indicates the context of the caller. This parameter cannot be null. + * @param paramsInfo Indicates the WantAgentInfo object that contains parameters of the + * WantAgent object to create. + * @return Returns the created WantAgent object. + */ + static std::shared_ptr GetWantAgent( + const std::shared_ptr &context, const WantAgentInfo ¶msInfo); + /** * Obtains an WantAgent object. * @@ -91,8 +104,8 @@ public: * the current process. * @param paramsInfo Indicates the TriggerInfo object that contains triggering parameters. */ - static void TriggerWantAgent(const std::shared_ptr &context, - const std::shared_ptr &agent, const std::shared_ptr &callback, + static void TriggerWantAgent(const std::shared_ptr &agent, + const std::shared_ptr &callback, const TriggerInfo ¶msInfo); /** @@ -168,11 +181,15 @@ private: virtual ~WantAgentHelper() = default; private: - static void Send(const std::shared_ptr &context, - const std::shared_ptr &pendingWant, WantAgentConstant::OperationType type, - const sptr &callBack, const TriggerInfo ¶msInfo); + static void Send(const std::shared_ptr &pendingWant, + WantAgentConstant::OperationType type, + const sptr &callBack, + const TriggerInfo ¶msInfo); static unsigned int FlagsTransformer(const std::vector &flags); + + std::shared_ptr GetWantAgent(std::string bundleName, const WantAgentInfo ¶msInfo); + }; } // namespace OHOS::Notification::WantAgent #endif // BASE_NOTIFICATION_ANS_STANDARD_KITS_NATIVE_WANTAGENT_INCLUDE_WANT_AGENT_HELPER_H \ No newline at end of file diff --git a/interfaces/kits/napi/wantagent/BUILD.gn b/interfaces/kits/napi/wantagent/BUILD.gn index 8e9f83c18..a528acf7a 100644 --- a/interfaces/kits/napi/wantagent/BUILD.gn +++ b/interfaces/kits/napi/wantagent/BUILD.gn @@ -23,6 +23,7 @@ ohos_shared_library("wantagent") { "//foundation/aafwk/standard/interfaces/innerkits/want/include", "//foundation/aafwk/standard/interfaces/kits/napi/aafwk/context", "//third_party/libuv/include", + "//foundation/appexecfwk/standard/kits/appkit/native/ability_runtime/context", "//foundation/aafwk/standard/frameworks/kits/ability/native/include", "//foundation/aafwk/standard/interfaces/innerkits/want/include/ohos/aafwk/content", "//foundation/aafwk/standard/interfaces/innerkits/ability_manager/include", @@ -43,6 +44,7 @@ ohos_shared_library("wantagent") { "//foundation/aafwk/standard/interfaces/innerkits/base:base", "//foundation/aafwk/standard/interfaces/kits/napi/aafwk/inner/napi_common:napi_common", "//foundation/ace/napi:ace_napi", + "//foundation/appexecfwk/standard/kits:app_context", "//foundation/appexecfwk/standard/kits:appkit_native", "//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk", "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy", diff --git a/interfaces/kits/napi/wantagent/napi_want_agent.cpp b/interfaces/kits/napi/wantagent/napi_want_agent.cpp index 8239cca49..c530972e4 100644 --- a/interfaces/kits/napi/wantagent/napi_want_agent.cpp +++ b/interfaces/kits/napi/wantagent/napi_want_agent.cpp @@ -790,8 +790,7 @@ auto NAPI_TriggerWrapExecuteCallBack = [](napi_env env, void *data) { AsyncTriggerCallbackInfo *asyncCallbackInfo = static_cast(data); asyncCallbackInfo->triggerObj->SetCallbackInfo(env, asyncCallbackInfo->callback[0]); asyncCallbackInfo->triggerObj->SetWantAgentInstance(asyncCallbackInfo->wantAgent); - WantAgentHelper::TriggerWantAgent(asyncCallbackInfo->context, - asyncCallbackInfo->wantAgent, + WantAgentHelper::TriggerWantAgent(asyncCallbackInfo->wantAgent, asyncCallbackInfo->triggerObj, asyncCallbackInfo->triggerInfo); }; @@ -892,15 +891,6 @@ napi_value NAPI_Trigger(napi_env env, napi_callback_info info) return NapiGetNull(env); } - // Get context - napi_value global = nullptr; - NAPI_CALL(env, napi_get_global(env, &global)); - napi_value abilityObj = nullptr; - NAPI_CALL(env, napi_get_named_property(env, global, "ability", &abilityObj)); - Ability *ability = nullptr; - NAPI_CALL(env, napi_get_value_external(env, abilityObj, (void **)&ability)); - std::shared_ptr context = ability->GetContext(); - bool callBackMode = false; if (argc >= NUMBER_OF_PARAMETERS_THREE) { napi_valuetype valuetype; @@ -924,7 +914,6 @@ napi_value NAPI_Trigger(napi_env env, napi_callback_info info) return NapiGetNull(env); } asyncCallbackInfo->wantAgent = std::make_shared(*pWantAgent); - asyncCallbackInfo->context = context; asyncCallbackInfo->triggerInfo = triggerInfo; asyncCallbackInfo->triggerObj = nullptr; if (callBackMode) { @@ -1296,15 +1285,6 @@ napi_value NAPI_GetWantAgent(napi_env env, napi_callback_info info) return NapiGetNull(env); } - // Get context - napi_value global = 0; - NAPI_CALL(env, napi_get_global(env, &global)); - napi_value abilityObj = 0; - NAPI_CALL(env, napi_get_named_property(env, global, "ability", &abilityObj)); - Ability *ability = nullptr; - NAPI_CALL(env, napi_get_value_external(env, abilityObj, (void **)&ability)); - std::shared_ptr context = ability->GetContext(); - bool callBackMode = false; if (argc >= NUMBER_OF_PARAMETERS_TWO) { napi_valuetype valuetype; @@ -1327,7 +1307,7 @@ napi_value NAPI_GetWantAgent(napi_env env, napi_callback_info info) asyncCallbackInfo->requestCode = requestCode; asyncCallbackInfo->wantAgentFlags = wantAgentFlags; asyncCallbackInfo->extraInfo.reset(new (std::nothrow) AAFwk::WantParams(extraInfo)); - asyncCallbackInfo->context = context; + asyncCallbackInfo->context = OHOS::AbilityRuntime::Context::GetApplicationContext(); if (callBackMode) { napi_create_reference(env, argv[1], 1, &asyncCallbackInfo->callback[0]); diff --git a/interfaces/kits/napi/wantagent/napi_want_agent.h b/interfaces/kits/napi/wantagent/napi_want_agent.h index 6a33753c7..ee19aa4bf 100644 --- a/interfaces/kits/napi/wantagent/napi_want_agent.h +++ b/interfaces/kits/napi/wantagent/napi_want_agent.h @@ -60,7 +60,7 @@ struct AsyncGetWantAgentCallbackInfo { int32_t requestCode = -1; std::vector wantAgentFlags; std::shared_ptr extraInfo; - std::shared_ptr context; + std::shared_ptr context; std::shared_ptr wantAgent; }; diff --git a/test/resource/notificationfuzztest/src/notificationfuzztestmanager.cpp b/test/resource/notificationfuzztest/src/notificationfuzztestmanager.cpp index 45eba385c..698cb6b7a 100644 --- a/test/resource/notificationfuzztest/src/notificationfuzztestmanager.cpp +++ b/test/resource/notificationfuzztest/src/notificationfuzztestmanager.cpp @@ -526,11 +526,10 @@ void NotificationFuzzTestManager::RegisterWantAgentHelper() }); callFunctionMap_.emplace("WantAgentHelperTriggerWantAgent", []() { - const std::shared_ptr context; const std::shared_ptr agent = GetParamWantAgent(); const std::shared_ptr callback = GetParamCompletedCallback(); OHOS::Notification::WantAgent::TriggerInfo paramsInfo(*GetParamTriggerInfo()); - OHOS::Notification::WantAgent::WantAgentHelper::TriggerWantAgent(context, agent, callback, paramsInfo); + OHOS::Notification::WantAgent::WantAgentHelper::TriggerWantAgent(agent, callback, paramsInfo); }); callFunctionMap_.emplace("WantAgentHelperCancel", []() { -- Gitee