mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 12:43:16 -04:00
:wantagent add context
Signed-off-by: zhuhan <zhuhan10@huawei.com> Change-Id: Ied9eae23e54ce290d29ba4348ac6568638331370
This commit is contained in:
@@ -39,6 +39,7 @@ enum {
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_START_ABILITY_WAITTING = 16000017,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NOT_SUPPORT_CROSS_APP_START = 16000018,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_CANNOT_MATCH_ANY_COMPONENT = 16000019,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NOT_ABILITY_CONTEXT = 16000020,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_INTERNAL_ERROR = 16000050,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NETWORK_ERROR = 16000051,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_FREE_INSTALL_NOT_SUPPORT = 16000052,
|
||||
|
||||
@@ -86,7 +86,8 @@ void CJWantAgent::OnTrigger(CJTriggerInfo cjTriggerInfo, std::function<void(CJCo
|
||||
return;
|
||||
}
|
||||
TAG_LOGD(AAFwkTag::WANTAGENT, "called");
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, triggerObj, triggerInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, triggerObj, triggerInfo, completedData, nullptr);
|
||||
}
|
||||
|
||||
int32_t CJWantAgent::UnWrapTriggerInfoParam(CJTriggerInfo cjTriggerInfo, std::function<void(CJCompleteData)> callback,
|
||||
|
||||
@@ -31,11 +31,14 @@ ohos_shared_library("wantagent") {
|
||||
deps = [
|
||||
"${ability_runtime_innerkits_path}/ability_manager:ability_start_options",
|
||||
"${ability_runtime_innerkits_path}/error_utils:ability_runtime_error_util",
|
||||
"${ability_runtime_innerkits_path}/napi_base_context:napi_base_context",
|
||||
"${ability_runtime_innerkits_path}/runtime:runtime",
|
||||
"${ability_runtime_innerkits_path}/wantagent:wantagent_innerkits",
|
||||
"${ability_runtime_napi_path}/inner/napi_common:napi_common",
|
||||
"${ability_runtime_napi_path}/inner/napi_wantagent_common:napi_wantagent_common",
|
||||
"${ability_runtime_native_path}/ability:ability_context_native",
|
||||
"${ability_runtime_native_path}/ability/native:abilitykit_native",
|
||||
"${ability_runtime_native_path}/ability/native:extensionkit_native",
|
||||
"${ability_runtime_native_path}/appkit:app_context",
|
||||
]
|
||||
|
||||
|
||||
@@ -32,11 +32,14 @@ ohos_shared_library("wantagent_napi") {
|
||||
deps = [
|
||||
"${ability_runtime_innerkits_path}/ability_manager:ability_start_options",
|
||||
"${ability_runtime_innerkits_path}/error_utils:ability_runtime_error_util",
|
||||
"${ability_runtime_innerkits_path}/napi_base_context:napi_base_context",
|
||||
"${ability_runtime_innerkits_path}/runtime:runtime",
|
||||
"${ability_runtime_innerkits_path}/wantagent:wantagent_innerkits",
|
||||
"${ability_runtime_napi_path}/inner/napi_common:napi_common",
|
||||
"${ability_runtime_napi_path}/inner/napi_wantagent_common:napi_wantagent_common",
|
||||
"${ability_runtime_native_path}/ability:ability_context_native",
|
||||
"${ability_runtime_native_path}/ability/native:abilitykit_native",
|
||||
"${ability_runtime_native_path}/ability/native:extensionkit_native",
|
||||
"${ability_runtime_native_path}/appkit:app_context",
|
||||
]
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ napi_value JsNapiWantAgentInit(napi_env env, napi_value exportObj)
|
||||
BindNativeFunction(env, exportObj, "getUid", moduleName, JsWantAgent::GetUid);
|
||||
BindNativeFunction(env, exportObj, "cancel", moduleName, JsWantAgent::Cancel);
|
||||
BindNativeFunction(env, exportObj, "trigger", moduleName, JsWantAgent::NapiTrigger);
|
||||
BindNativeFunction(env, exportObj, "triggerAsync", moduleName, JsWantAgent::NapiTriggerAsync);
|
||||
BindNativeFunction(env, exportObj, "getWant", moduleName, JsWantAgent::NapiGetWant);
|
||||
BindNativeFunction(env, exportObj, "getWantAgent", moduleName, JsWantAgent::NapiGetWantAgent);
|
||||
BindNativeFunction(env, exportObj, "getOperationType", moduleName, JsWantAgent::NapiGetOperationType);
|
||||
|
||||
@@ -21,8 +21,10 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include "ability_runtime_error_util.h"
|
||||
#include "extension_context.h"
|
||||
#include "hilog_tag_wrapper.h"
|
||||
#include "ipc_skeleton.h"
|
||||
#include "napi_base_context.h"
|
||||
#include "napi_common.h"
|
||||
#include "napi_common_want_agent.h"
|
||||
#include "start_options.h"
|
||||
@@ -295,6 +297,12 @@ napi_value JsWantAgent::NapiTrigger(napi_env env, napi_callback_info info)
|
||||
return (me != nullptr) ? me->OnNapiTrigger(env, info) : nullptr;
|
||||
};
|
||||
|
||||
napi_value JsWantAgent::NapiTriggerAsync(napi_env env, napi_callback_info info)
|
||||
{
|
||||
JsWantAgent* me = CheckParamsAndGetThis<JsWantAgent>(env, info);
|
||||
return (me != nullptr) ? me->OnNapiTriggerAsync(env, info) : nullptr;
|
||||
};
|
||||
|
||||
napi_value JsWantAgent::NapiGetWantAgent(napi_env env, napi_callback_info info)
|
||||
{
|
||||
JsWantAgent* me = CheckParamsAndGetThis<JsWantAgent>(env, info);
|
||||
@@ -712,7 +720,8 @@ napi_value JsWantAgent::OnTrigger(napi_env env, napi_callback_info info)
|
||||
|
||||
auto execute = [wantAgent, triggerObj, triggerInfo] () {
|
||||
TAG_LOGD(AAFwkTag::WANTAGENT, "called");
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, triggerObj, triggerInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, triggerObj, triggerInfo, completedData, nullptr);
|
||||
};
|
||||
napi_value result = nullptr;
|
||||
NapiAsyncTask::ScheduleHighQos("JsWantAgent::OnTrigger",
|
||||
@@ -1156,7 +1165,8 @@ napi_value JsWantAgent::OnNapiTrigger(napi_env env, napi_callback_info info)
|
||||
}
|
||||
auto execute = [wantAgent, triggerObj, triggerInfo] () {
|
||||
TAG_LOGD(AAFwkTag::WANTAGENT, "called");
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, triggerObj, triggerInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, triggerObj, triggerInfo, completedData, nullptr);
|
||||
};
|
||||
napi_value result = nullptr;
|
||||
NapiAsyncTask::ScheduleHighQos("JsWantAgent::OnNapiTrigger",
|
||||
@@ -1165,6 +1175,100 @@ napi_value JsWantAgent::OnNapiTrigger(napi_env env, napi_callback_info info)
|
||||
return CreateJsNull(env);
|
||||
}
|
||||
|
||||
napi_value JsWantAgent::OnNapiTriggerAsync(napi_env env, napi_callback_info info)
|
||||
{
|
||||
size_t argc = ARGS_MAX_COUNT;
|
||||
napi_value argv[ARGS_MAX_COUNT] = {nullptr};
|
||||
napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
|
||||
if (argc < ARGC_THREE) {
|
||||
ThrowTooFewParametersError(env);
|
||||
return CreateJsUndefined(env);
|
||||
}
|
||||
|
||||
bool stageMode = false;
|
||||
napi_status status = OHOS::AbilityRuntime::IsStageContext(env, argv[ARGC_TWO], stageMode);
|
||||
if (status != napi_ok || !stageMode) {
|
||||
ThrowInvalidParamError(env, "Parse param context failed, must be a context of stageMode.");
|
||||
return CreateJsUndefined(env);
|
||||
}
|
||||
|
||||
auto context = OHOS::AbilityRuntime::GetStageModeContext(env, argv[ARGC_TWO]);
|
||||
if (context == nullptr) {
|
||||
ThrowInvalidParamError(env, "Parse param context failed, must not be nullptr.");
|
||||
return CreateJsUndefined(env);
|
||||
}
|
||||
|
||||
auto inputContextPtr = ConvertToContext(context);
|
||||
if (inputContextPtr == nullptr) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "the context is not ability context");
|
||||
AbilityRuntimeErrorUtil::Throw(env, ERR_ABILITY_RUNTIME_EXTERNAL_NOT_ABILITY_CONTEXT);
|
||||
return CreateJsUndefined(env);
|
||||
}
|
||||
|
||||
std::shared_ptr<WantAgent> wantAgent = nullptr;
|
||||
TriggerInfo triggerInfo;
|
||||
auto triggerObj = std::make_shared<TriggerCompleteCallBack>();
|
||||
int32_t errCode = UnWrapTriggerInfoParam(env, info, wantAgent, triggerInfo, triggerObj);
|
||||
if (errCode != NO_ERROR) {
|
||||
ThrowInvalidParamError(env, "Parameter error!");
|
||||
return CreateJsUndefined(env);
|
||||
}
|
||||
auto retCode = std::make_shared<int32_t>(NO_ERROR);
|
||||
if (!CheckCallerIsSystemApp()) {
|
||||
AbilityRuntimeErrorUtil::Throw(env, ERR_ABILITY_RUNTIME_NOT_SYSTEM_APP);
|
||||
return CreateJsUndefined(env);
|
||||
}
|
||||
std::shared_ptr<CompletedDispatcher> data = std::make_shared<CompletedDispatcher>();
|
||||
auto execute = [wantAgent, triggerObj, triggerInfo, inputContextPtr, data, retCode] () {
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
*retCode = WantAgentHelper::TriggerWantAgent(wantAgent, triggerObj, triggerInfo, completedData,
|
||||
inputContextPtr->GetToken());
|
||||
*data = *reinterpret_cast<CompletedDispatcher*>(completedData.GetRefPtr());
|
||||
};
|
||||
NapiAsyncTask::CompleteCallback complete = [retCode, data](napi_env env, NapiAsyncTask& task, int32_t status) {
|
||||
if (*retCode == NO_ERROR) {
|
||||
task.ResolveWithNoError(env, CreateJsCompletedData(env, *data));
|
||||
} else {
|
||||
task.Reject(env, CreateJsError(env, *retCode, AbilityRuntimeErrorUtil::GetErrMessage(*retCode)));
|
||||
}
|
||||
};
|
||||
napi_value result = nullptr;
|
||||
NapiAsyncTask::ScheduleHighQos("JsWantAgent::OnNapiTriggerAsync",
|
||||
env, CreateAsyncTaskWithLastParam(env, nullptr, std::move(execute), std::move(complete), &result));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
std::shared_ptr<AbilityRuntime::Context> JsWantAgent::ConvertToContext(std::shared_ptr<AbilityRuntime::Context> context)
|
||||
{
|
||||
auto uiAbilityContext = AbilityRuntime::Context::ConvertTo<AbilityRuntime::AbilityContext>(context);
|
||||
auto extensionContext = AbilityRuntime::Context::ConvertTo<AbilityRuntime::ExtensionContext>(context);
|
||||
if (uiAbilityContext == nullptr && extensionContext == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return OHOS::AbilityRuntime::Context::ConvertTo<AbilityRuntime::Context>(context);
|
||||
}
|
||||
|
||||
napi_value JsWantAgent::CreateJsCompletedData(napi_env env, const CompletedDispatcher &data)
|
||||
{
|
||||
napi_value objValue = nullptr;
|
||||
napi_create_object(env, &objValue);
|
||||
WantAgent *pWantAgent = new (std::nothrow) WantAgent(data.GetPendingWant());
|
||||
if (pWantAgent == nullptr) {
|
||||
TAG_LOGE(AAFwkTag::WANTAGENT, "null pWantAgent");
|
||||
return objValue;
|
||||
}
|
||||
|
||||
napi_value jsWantAgent = OHOS::AppExecFwk::WrapWantAgent(env, pWantAgent, nullptr);
|
||||
napi_set_named_property(env, objValue, "info", jsWantAgent);
|
||||
napi_set_named_property(env, objValue, "want", CreateJsWant(env, data.GetWant()));
|
||||
napi_set_named_property(env, objValue, "finalCode", CreateJsValue(env, data.GetResultCode()));
|
||||
napi_set_named_property(env, objValue, "finalData", CreateJsValue(env, data.GetResultData()));
|
||||
napi_set_named_property(env, objValue, "extraInfo", CreateJsWantParams(env, data.GetResultExtras()));
|
||||
return objValue;
|
||||
}
|
||||
|
||||
napi_value JsWantAgent::OnNapiGetWantAgent(napi_env env, napi_callback_info info)
|
||||
{
|
||||
size_t argc = ARGS_MAX_COUNT;
|
||||
|
||||
@@ -91,9 +91,11 @@ public:
|
||||
static napi_value GetWantAgent(napi_env env, napi_callback_info info);
|
||||
static napi_value NapiGetWant(napi_env env, napi_callback_info info);
|
||||
static napi_value NapiTrigger(napi_env env, napi_callback_info info);
|
||||
static napi_value NapiTriggerAsync(napi_env env, napi_callback_info info);
|
||||
static napi_value NapiGetWantAgent(napi_env env, napi_callback_info info);
|
||||
static napi_value NapiGetOperationType(napi_env env, napi_callback_info info);
|
||||
static napi_value NapiSetWantAgentMultithreading(napi_env env, napi_callback_info info);
|
||||
static napi_value CreateJsCompletedData(napi_env env, const CompletedDispatcher &data);
|
||||
|
||||
private:
|
||||
napi_value OnEqual(napi_env env, napi_callback_info info);
|
||||
@@ -106,9 +108,11 @@ private:
|
||||
napi_value OnGetWantAgent(napi_env env, napi_callback_info info);
|
||||
napi_value OnNapiGetWant(napi_env env, napi_callback_info info);
|
||||
napi_value OnNapiTrigger(napi_env env, napi_callback_info info);
|
||||
napi_value OnNapiTriggerAsync(napi_env env, napi_callback_info info);
|
||||
napi_value OnNapiGetWantAgent(napi_env env, napi_callback_info info);
|
||||
napi_value OnNapiGetOperationType(napi_env env, napi_callback_info info);
|
||||
napi_value OnNapiSetWantAgentMultithreading(napi_env env, napi_callback_info info);
|
||||
std::shared_ptr<AbilityRuntime::Context> ConvertToContext(std::shared_ptr<AbilityRuntime::Context> context);
|
||||
int32_t UnWrapTriggerInfoParam(napi_env env, napi_callback_info info,
|
||||
std::shared_ptr<WantAgent> &wantAgent, TriggerInfo &triggerInfo,
|
||||
std::shared_ptr<TriggerCompleteCallBack> &triggerObj);
|
||||
|
||||
@@ -37,6 +37,8 @@ const std::map<int32_t, std::string> ERROR_MSG_MAP = {
|
||||
"Incorrect ability type." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_NO_SUCH_ID,
|
||||
"The specified ID does not exist." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_NOT_ABILITY_CONTEXT,
|
||||
"The context is not ability context." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_VISIBILITY_VERIFICATION_FAILED,
|
||||
"Failed to start the invisible ability." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_CROSS_USER_OPERATION,
|
||||
|
||||
@@ -802,6 +802,11 @@ enum {
|
||||
* Result (2097334) for app selector not exists.
|
||||
*/
|
||||
ERR_APP_SELECTOR_NOT_EXISTS = 2097334,
|
||||
|
||||
/**
|
||||
* Result (2097335) for canceled wantagent.
|
||||
*/
|
||||
ERR_WANTAGENT_CANCELED = 2097335,
|
||||
|
||||
/**
|
||||
* Native error(3000000) for target bundle not exist.
|
||||
|
||||
@@ -862,7 +862,7 @@ public:
|
||||
virtual sptr<IWantSender> GetWantSender(
|
||||
const WantSenderInfo &wantSenderInfo, const sptr<IRemoteObject> &callerToken, int32_t uid = -1) = 0;
|
||||
|
||||
virtual int SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo) = 0;
|
||||
virtual int SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo) = 0;
|
||||
|
||||
virtual void CancelWantSender(const sptr<IWantSender> &sender) = 0;
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "parcel.h"
|
||||
|
||||
#include "iremote_object.h"
|
||||
#include "start_options.h"
|
||||
#include "want.h"
|
||||
|
||||
@@ -34,6 +35,7 @@ struct SenderInfo : public Parcelable {
|
||||
std::string resolvedType;
|
||||
std::string requiredPermission;
|
||||
Want want;
|
||||
sptr<IRemoteObject> callerToken = nullptr;
|
||||
|
||||
bool ReadFromParcel(Parcel &parcel);
|
||||
virtual bool Marshalling(Parcel &parcel) const override;
|
||||
|
||||
@@ -40,6 +40,7 @@ enum {
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_START_ABILITY_WAITTING = 16000017,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NOT_SUPPORT_CROSS_APP_START = 16000018,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_CANNOT_MATCH_ANY_COMPONENT = 16000019,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NOT_ABILITY_CONTEXT = 16000020,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_INTERNAL_ERROR = 16000050,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NETWORK_ERROR = 16000051,
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_FREE_INSTALL_NOT_SUPPORT = 16000052,
|
||||
|
||||
@@ -84,8 +84,8 @@ const std::map<int32_t, std::string> ERROR_MSG_MAP = {
|
||||
"Invalid wantagent object." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_WANTAGENT_NOT_FOUND,
|
||||
"The wantAgent object does not exist." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_WANTAGENT_CANCELED,
|
||||
"The wantAgent object has been canceled." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_NOT_ABILITY_CONTEXT,
|
||||
"The context is not ability context." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_NO_SUCH_URI_ABILITY,
|
||||
"Input error. The specified uri does not exist." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_FA_NOT_SUPPORT_OPERATION,
|
||||
@@ -150,6 +150,8 @@ const std::map<int32_t, std::string> ERROR_MSG_MAP = {
|
||||
"Restart too frequently. Try again at least 3s later." },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_NOT_SYSTEM_HSP,
|
||||
"The input bundleName and moduleName is not system HSP" },
|
||||
{ ERR_ABILITY_RUNTIME_EXTERNAL_WANTAGENT_CANCELED,
|
||||
"The WantAgent has been canceled." },
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -28,9 +28,12 @@ namespace OHOS::AbilityRuntime::WantAgent {
|
||||
class PendingWant;
|
||||
class CompletedDispatcher : public AAFwk::WantReceiverStub {
|
||||
public:
|
||||
CompletedDispatcher();
|
||||
CompletedDispatcher(const std::shared_ptr<PendingWant> &pendingWant,
|
||||
const std::shared_ptr<CompletedCallback> &callback, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
|
||||
virtual ~CompletedDispatcher() = default;
|
||||
|
||||
CompletedDispatcher &operator=(const CompletedDispatcher &other);
|
||||
|
||||
void Send(const int32_t resultCode) override;
|
||||
|
||||
@@ -38,9 +41,15 @@ public:
|
||||
const AAFwk::WantParams &extras, bool serialized, bool sticky, int sendingUser) override;
|
||||
|
||||
void Run();
|
||||
|
||||
int GetResultCode() const;
|
||||
std::string GetResultData() const;
|
||||
AAFwk::Want GetWant() const;
|
||||
AAFwk::WantParams GetResultExtras() const;
|
||||
std::shared_ptr<PendingWant> GetPendingWant() const;
|
||||
|
||||
private:
|
||||
const std::shared_ptr<PendingWant> pendingWant_;
|
||||
std::shared_ptr<PendingWant> pendingWant_;
|
||||
const std::shared_ptr<CompletedCallback> callback_;
|
||||
const std::shared_ptr<AppExecFwk::EventHandler> handler_;
|
||||
AAFwk::Want want_;
|
||||
|
||||
@@ -207,32 +207,25 @@ public:
|
||||
|
||||
ErrCode Cancel(const sptr<AAFwk::IWantSender> &target, uint32_t flags = 0);
|
||||
|
||||
void Send(const sptr<AAFwk::IWantSender> &target);
|
||||
|
||||
void Send(int resultCode, const sptr<AAFwk::IWantSender> &target);
|
||||
void Send(int resultCode, sptr<CompletedDispatcher> &onCompleted, const sptr<AAFwk::IWantSender> &target);
|
||||
|
||||
void Send(int resultCode,
|
||||
const std::shared_ptr<AAFwk::Want> &want, const sptr<AAFwk::IWantSender> &target);
|
||||
|
||||
void Send(int resultCode, const sptr<CompletedDispatcher> &onCompleted, const sptr<AAFwk::IWantSender> &target);
|
||||
|
||||
void Send(int resultCode,
|
||||
const std::shared_ptr<AAFwk::Want> &want, const sptr<CompletedDispatcher> &onCompleted,
|
||||
const std::shared_ptr<AAFwk::Want> &want, sptr<CompletedDispatcher> &onCompleted,
|
||||
const sptr<AAFwk::IWantSender> &target);
|
||||
|
||||
void Send(int resultCode,
|
||||
const std::shared_ptr<AAFwk::Want> &want, const sptr<CompletedDispatcher> &onCompleted,
|
||||
const std::shared_ptr<AAFwk::Want> &want, sptr<CompletedDispatcher> &onCompleted,
|
||||
const std::string &requiredPermission, const sptr<AAFwk::IWantSender> &target);
|
||||
|
||||
ErrCode Send(int resultCode, const std::shared_ptr<AAFwk::Want> &want,
|
||||
const sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
const std::shared_ptr<AAFwk::WantParams> &options, const std::shared_ptr<AAFwk::StartOptions> &startOptions,
|
||||
const sptr<AAFwk::IWantSender> &target);
|
||||
const sptr<AAFwk::IWantSender> &target, sptr<IRemoteObject> callerToken = nullptr);
|
||||
|
||||
int SendAndReturnResult(int resultCode, const std::shared_ptr<AAFwk::Want> &want,
|
||||
const sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
const std::shared_ptr<AAFwk::WantParams> &options, const std::shared_ptr<AAFwk::StartOptions> &startOptions,
|
||||
const sptr<AAFwk::IWantSender> &target);
|
||||
const sptr<AAFwk::IWantSender> &target, sptr<IRemoteObject> callerToken = nullptr);
|
||||
|
||||
ErrCode GetBundleName(const sptr<AAFwk::IWantSender> &target, std::string &bundleName);
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
ErrCode GetWantSender(const WantSenderInfo &wantSenderInfo, const sptr<IRemoteObject> &callerToken,
|
||||
sptr<IWantSender> &wantSender, int32_t uid = -1);
|
||||
|
||||
ErrCode SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo);
|
||||
ErrCode SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo);
|
||||
|
||||
ErrCode CancelWantSender(const sptr<IWantSender> &sender, uint32_t flags = 0);
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ public:
|
||||
*/
|
||||
static ErrCode TriggerWantAgent(std::shared_ptr<WantAgent> agent,
|
||||
const std::shared_ptr<CompletedCallback> &callback,
|
||||
const TriggerInfo ¶msInfo);
|
||||
const TriggerInfo ¶msInfo, sptr<CompletedDispatcher> &data, sptr<IRemoteObject> callerToken);
|
||||
|
||||
/**
|
||||
* Cancels an WantAgent.
|
||||
@@ -191,8 +191,9 @@ private:
|
||||
private:
|
||||
static ErrCode Send(const std::shared_ptr<PendingWant> &pendingWant,
|
||||
WantAgentConstant::OperationType type,
|
||||
const sptr<CompletedDispatcher> &callBack,
|
||||
const TriggerInfo ¶msInfo);
|
||||
sptr<CompletedDispatcher> &callBack,
|
||||
const TriggerInfo ¶msInfo,
|
||||
sptr<IRemoteObject> callerToken);
|
||||
|
||||
static unsigned int FlagsTransformer(const std::vector<WantAgentConstant::Flags> &flags);
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
#include "completed_dispatcher.h"
|
||||
|
||||
namespace OHOS::AbilityRuntime::WantAgent {
|
||||
CompletedDispatcher::CompletedDispatcher()
|
||||
{}
|
||||
|
||||
CompletedDispatcher::CompletedDispatcher(const std::shared_ptr<PendingWant> &pendingWant,
|
||||
const std::shared_ptr<CompletedCallback> &callback, const std::shared_ptr<AppExecFwk::EventHandler> &handler)
|
||||
: pendingWant_(pendingWant), callback_(callback), handler_(handler)
|
||||
@@ -24,6 +27,18 @@ CompletedDispatcher::CompletedDispatcher(const std::shared_ptr<PendingWant> &pen
|
||||
void CompletedDispatcher::Send(const int32_t resultCode)
|
||||
{}
|
||||
|
||||
CompletedDispatcher &CompletedDispatcher::operator=(const CompletedDispatcher &other)
|
||||
{
|
||||
if (this != &other) {
|
||||
pendingWant_ = other.pendingWant_;
|
||||
want_ = other.want_;
|
||||
resultCode_ = other.resultCode_;
|
||||
resultData_ = other.resultData_;
|
||||
resultExtras_ = other.resultExtras_;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
void CompletedDispatcher::PerformReceive(const AAFwk::Want &want, int resultCode, const std::string &data,
|
||||
const AAFwk::WantParams &extras, bool serialized, bool sticky, int sendingUser)
|
||||
{
|
||||
@@ -42,4 +57,29 @@ void CompletedDispatcher::Run()
|
||||
callback_->OnSendFinished(want_, resultCode_, resultData_, resultExtras_);
|
||||
}
|
||||
}
|
||||
|
||||
int CompletedDispatcher::GetResultCode() const
|
||||
{
|
||||
return resultCode_;
|
||||
}
|
||||
|
||||
std::string CompletedDispatcher::GetResultData() const
|
||||
{
|
||||
return resultData_;
|
||||
}
|
||||
|
||||
AAFwk::Want CompletedDispatcher::GetWant() const
|
||||
{
|
||||
return want_;
|
||||
}
|
||||
|
||||
AAFwk::WantParams CompletedDispatcher::GetResultExtras() const
|
||||
{
|
||||
return resultExtras_;
|
||||
}
|
||||
|
||||
std::shared_ptr<PendingWant> CompletedDispatcher::GetPendingWant() const
|
||||
{
|
||||
return pendingWant_;
|
||||
}
|
||||
} // namespace OHOS::AbilityRuntime::WantAgent
|
||||
|
||||
@@ -238,58 +238,40 @@ ErrCode PendingWant::Cancel(const sptr<AAFwk::IWantSender> &target, uint32_t fla
|
||||
return WantAgentClient::GetInstance().CancelWantSender(target, flags);
|
||||
}
|
||||
|
||||
void PendingWant::Send(const sptr<AAFwk::IWantSender> &target)
|
||||
{
|
||||
Send(0, nullptr, nullptr, "", nullptr, nullptr, target);
|
||||
}
|
||||
|
||||
void PendingWant::Send(int resultCode, const sptr<AAFwk::IWantSender> &target)
|
||||
{
|
||||
Send(resultCode, nullptr, nullptr, "", nullptr, nullptr, target);
|
||||
}
|
||||
|
||||
void PendingWant::Send(int resultCode, const std::shared_ptr<Want> &want,
|
||||
const sptr<AAFwk::IWantSender> &target)
|
||||
{
|
||||
Send(resultCode, want, nullptr, "", nullptr, nullptr, target);
|
||||
}
|
||||
|
||||
void PendingWant::Send(
|
||||
int resultCode, const sptr<CompletedDispatcher> &onCompleted, const sptr<AAFwk::IWantSender> &target)
|
||||
int resultCode, sptr<CompletedDispatcher> &onCompleted, const sptr<AAFwk::IWantSender> &target)
|
||||
{
|
||||
Send(resultCode, nullptr, onCompleted, "", nullptr, nullptr, target);
|
||||
Send(resultCode, nullptr, onCompleted, "", nullptr, nullptr, target, nullptr);
|
||||
}
|
||||
|
||||
void PendingWant::Send(int resultCode, const std::shared_ptr<Want> &want,
|
||||
const sptr<CompletedDispatcher> &onCompleted, const sptr<AAFwk::IWantSender> &target)
|
||||
sptr<CompletedDispatcher> &onCompleted, const sptr<AAFwk::IWantSender> &target)
|
||||
{
|
||||
Send(resultCode, want, onCompleted, "", nullptr, nullptr, target);
|
||||
Send(resultCode, want, onCompleted, "", nullptr, nullptr, target, nullptr);
|
||||
}
|
||||
|
||||
void PendingWant::Send(int resultCode, const std::shared_ptr<Want> &want,
|
||||
const sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
const sptr<AAFwk::IWantSender> &target)
|
||||
{
|
||||
Send(resultCode, want, onCompleted, requiredPermission, nullptr, nullptr, target);
|
||||
Send(resultCode, want, onCompleted, requiredPermission, nullptr, nullptr, target, nullptr);
|
||||
}
|
||||
|
||||
ErrCode PendingWant::Send(int resultCode, const std::shared_ptr<Want> &want,
|
||||
const sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
const std::shared_ptr<WantParams> &options, const std::shared_ptr<StartOptions> &startOptions,
|
||||
const sptr<AAFwk::IWantSender> &target)
|
||||
const sptr<AAFwk::IWantSender> &target, sptr<IRemoteObject> callerToken)
|
||||
{
|
||||
int result =
|
||||
SendAndReturnResult(resultCode, want, onCompleted, requiredPermission, options, startOptions, target);
|
||||
if (result != 0) {
|
||||
return ERR_ABILITY_RUNTIME_EXTERNAL_SERVICE_BUSY;
|
||||
}
|
||||
SendAndReturnResult(resultCode, want, onCompleted, requiredPermission, options,
|
||||
startOptions, target, callerToken);
|
||||
return result;
|
||||
}
|
||||
|
||||
int PendingWant::SendAndReturnResult(int resultCode, const std::shared_ptr<Want> &want,
|
||||
const sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
sptr<CompletedDispatcher> &onCompleted, const std::string &requiredPermission,
|
||||
const std::shared_ptr<WantParams> &options, const std::shared_ptr<StartOptions> &startOptions,
|
||||
const sptr<AAFwk::IWantSender> &target)
|
||||
const sptr<AAFwk::IWantSender> &target, sptr<IRemoteObject> callerToken)
|
||||
{
|
||||
TAG_LOGD(AAFwkTag::WANTAGENT, "call");
|
||||
SenderInfo senderInfo;
|
||||
@@ -306,7 +288,15 @@ int PendingWant::SendAndReturnResult(int resultCode, const std::shared_ptr<Want>
|
||||
senderInfo.requiredPermission = requiredPermission;
|
||||
senderInfo.code = resultCode;
|
||||
senderInfo.finishedReceiver = onCompleted;
|
||||
return WantAgentClient::GetInstance().SendWantSender(target, senderInfo);
|
||||
senderInfo.callerToken = callerToken;
|
||||
int res = WantAgentClient::GetInstance().SendWantSender(target, senderInfo);
|
||||
sptr<IRemoteObject> obj = senderInfo.finishedReceiver->AsObject();
|
||||
if (obj == nullptr) {
|
||||
TAG_LOGE(AAFwkTag::WANTAGENT, "finishedReceiver obj null");
|
||||
return res;
|
||||
}
|
||||
onCompleted = iface_cast<CompletedDispatcher>(obj);
|
||||
return res;
|
||||
}
|
||||
|
||||
ErrCode PendingWant::IsEquals(
|
||||
|
||||
@@ -80,7 +80,7 @@ ErrCode WantAgentClient::GetWantSender(
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
ErrCode WantAgentClient::SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo)
|
||||
ErrCode WantAgentClient::SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo)
|
||||
{
|
||||
CHECK_POINTER_AND_RETURN(target, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
|
||||
auto abms = GetAbilityManager();
|
||||
@@ -105,7 +105,19 @@ ErrCode WantAgentClient::SendWantSender(sptr<IWantSender> target, const SenderIn
|
||||
if (error != NO_ERROR) {
|
||||
return ERR_ABILITY_RUNTIME_EXTERNAL_SERVICE_TIMEOUT;
|
||||
}
|
||||
return reply.ReadInt32();
|
||||
std::unique_ptr<SenderInfo> completedDataReply(reply.ReadParcelable<SenderInfo>());
|
||||
if (!completedDataReply) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "readParcelableInfo fail");
|
||||
return INNER_ERR;
|
||||
}
|
||||
senderInfo = *completedDataReply;
|
||||
ErrCode res = reply.ReadInt32();
|
||||
if (res == ERR_WANTAGENT_CANCELED) {
|
||||
return ERR_ABILITY_RUNTIME_EXTERNAL_WANTAGENT_CANCELED;
|
||||
} else if (res == ERR_INVALID_VALUE) {
|
||||
return ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT;
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
ErrCode WantAgentClient::CancelWantSender(const sptr<IWantSender> &sender, uint32_t flags)
|
||||
|
||||
@@ -192,7 +192,8 @@ WantAgentConstant::OperationType WantAgentHelper::GetType(std::shared_ptr<WantAg
|
||||
}
|
||||
|
||||
ErrCode WantAgentHelper::TriggerWantAgent(std::shared_ptr<WantAgent> agent,
|
||||
const std::shared_ptr<CompletedCallback> &callback, const TriggerInfo ¶msInfo)
|
||||
const std::shared_ptr<CompletedCallback> &callback, const TriggerInfo ¶msInfo,
|
||||
sptr<CompletedDispatcher> &data, sptr<IRemoteObject> callerToken)
|
||||
{
|
||||
TAG_LOGD(AAFwkTag::WANTAGENT, "call");
|
||||
if (agent == nullptr) {
|
||||
@@ -203,13 +204,20 @@ ErrCode WantAgentHelper::TriggerWantAgent(std::shared_ptr<WantAgent> agent,
|
||||
WantAgentConstant::OperationType type = GetType(agent);
|
||||
sptr<CompletedDispatcher> dispatcher = nullptr;
|
||||
if (callback != nullptr) {
|
||||
dispatcher = new (std::nothrow) CompletedDispatcher(pendingWant, callback, nullptr);
|
||||
if (callerToken != nullptr) {
|
||||
dispatcher = new (std::nothrow) CompletedDispatcher(pendingWant, nullptr, nullptr);
|
||||
} else {
|
||||
dispatcher = new (std::nothrow) CompletedDispatcher(pendingWant, callback, nullptr);
|
||||
}
|
||||
}
|
||||
return Send(pendingWant, type, dispatcher, paramsInfo);
|
||||
int32_t res = Send(pendingWant, type, dispatcher, paramsInfo, callerToken);
|
||||
data = std::move(dispatcher);
|
||||
return res;
|
||||
}
|
||||
|
||||
ErrCode WantAgentHelper::Send(const std::shared_ptr<PendingWant> &pendingWant,
|
||||
WantAgentConstant::OperationType type, const sptr<CompletedDispatcher> &callBack, const TriggerInfo ¶msInfo)
|
||||
WantAgentConstant::OperationType type, sptr<CompletedDispatcher> &callBack, const TriggerInfo ¶msInfo,
|
||||
sptr<IRemoteObject> callerToken)
|
||||
{
|
||||
TAG_LOGD(AAFwkTag::WANTAGENT, "call");
|
||||
if (pendingWant == nullptr) {
|
||||
@@ -223,7 +231,8 @@ ErrCode WantAgentHelper::Send(const std::shared_ptr<PendingWant> &pendingWant,
|
||||
paramsInfo.GetPermission(),
|
||||
paramsInfo.GetExtraInfo(),
|
||||
paramsInfo.GetStartOptions(),
|
||||
pendingWant->GetTarget());
|
||||
pendingWant->GetTarget(),
|
||||
callerToken);
|
||||
}
|
||||
|
||||
ErrCode WantAgentHelper::Cancel(const std::shared_ptr<WantAgent> agent, uint32_t flags)
|
||||
|
||||
@@ -86,6 +86,9 @@ enum class AbilityErrorCode {
|
||||
|
||||
// implicit start can not match any component.
|
||||
ERROR_CODE_CANNOT_MATCH_ANY_COMPONENT = 16000019,
|
||||
|
||||
// the context is not ability context.
|
||||
ERR_ABILITY_RUNTIME_EXTERNAL_NOT_ABILITY_CONTEXT = 16000020,
|
||||
|
||||
// free install network abnormal.
|
||||
ERROR_CODE_NETWORK_ABNORMAL = 16000051,
|
||||
|
||||
@@ -674,7 +674,7 @@ public:
|
||||
virtual sptr<IWantSender> GetWantSender(
|
||||
const WantSenderInfo &wantSenderInfo, const sptr<IRemoteObject> &callerToken, int32_t uid = -1) override;
|
||||
|
||||
virtual int SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo) override;
|
||||
virtual int SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo) override;
|
||||
|
||||
virtual void CancelWantSender(const sptr<IWantSender> &sender) override;
|
||||
|
||||
|
||||
@@ -925,7 +925,7 @@ public:
|
||||
virtual sptr<IWantSender> GetWantSender(
|
||||
const WantSenderInfo &wantSenderInfo, const sptr<IRemoteObject> &callerToken, int32_t uid = -1) override;
|
||||
|
||||
virtual int SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo) override;
|
||||
virtual int SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo) override;
|
||||
|
||||
virtual void CancelWantSender(const sptr<IWantSender> &sender) override;
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ public:
|
||||
public:
|
||||
sptr<IWantSender> GetWantSender(int32_t callingUid, int32_t uid, const bool isSystemApp,
|
||||
const WantSenderInfo &wantSenderInfo, const sptr<IRemoteObject> &callerToken, int32_t appIndex = 0);
|
||||
int32_t SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo);
|
||||
int32_t SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo);
|
||||
void CancelWantSender(const bool isSystemAppCall, const sptr<IWantSender> &sender);
|
||||
|
||||
int32_t GetPendingWantUid(const sptr<IWantSender> &target);
|
||||
|
||||
@@ -31,7 +31,6 @@ namespace AAFwk {
|
||||
class PendingWantManager;
|
||||
class PendingWantRecord : public WantSenderStub {
|
||||
public:
|
||||
static const int START_CANCELED = -96;
|
||||
|
||||
PendingWantRecord();
|
||||
PendingWantRecord(const std::shared_ptr<PendingWantManager> &pendingWantManager, int32_t uid,
|
||||
|
||||
@@ -2116,7 +2116,7 @@ sptr<IWantSender> AbilityManagerProxy::GetWantSender(
|
||||
return wantSender;
|
||||
}
|
||||
|
||||
int AbilityManagerProxy::SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo)
|
||||
int AbilityManagerProxy::SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo)
|
||||
{
|
||||
MessageParcel data;
|
||||
MessageParcel reply;
|
||||
@@ -2137,6 +2137,12 @@ int AbilityManagerProxy::SendWantSender(sptr<IWantSender> target, const SenderIn
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "request error:%{public}d", error);
|
||||
return error;
|
||||
}
|
||||
std::unique_ptr<SenderInfo> completedDataReply(reply.ReadParcelable<SenderInfo>());
|
||||
if (!completedDataReply) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "readParcelableInfo fail");
|
||||
return INNER_ERR;
|
||||
}
|
||||
senderInfo = *completedDataReply;
|
||||
return reply.ReadInt32();
|
||||
}
|
||||
|
||||
|
||||
@@ -5320,7 +5320,7 @@ sptr<IWantSender> AbilityManagerService::GetWantSender(
|
||||
return pendingWantManager->GetWantSender(callerUid, appUid, isSystemApp, wantSenderInfo, callerToken, appIndex);
|
||||
}
|
||||
|
||||
int AbilityManagerService::SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo)
|
||||
int AbilityManagerService::SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo)
|
||||
{
|
||||
TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
|
||||
auto pendingWantManager = GetCurrentPendingWantManager();
|
||||
|
||||
@@ -1879,6 +1879,9 @@ int AbilityManagerStub::SendWantSenderInner(MessageParcel &data, MessageParcel &
|
||||
return ERR_INVALID_VALUE;
|
||||
}
|
||||
int32_t result = SendWantSender(wantSender, *senderInfo);
|
||||
if (!reply.WriteParcelable(senderInfo.get())) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "completedData write fail");
|
||||
}
|
||||
reply.WriteInt32(result);
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ sptr<IWantSender> PendingWantManager::GetWantSender(int32_t callingUid, int32_t
|
||||
if (wantSenderInfo.type != static_cast<int32_t>(OperationType::SEND_COMMON_EVENT) &&
|
||||
!isSystemApp && !AAFwk::PermissionVerification::GetInstance()->IsSACall()) {
|
||||
for (auto it = info.allWants.begin(); it != info.allWants.end();) {
|
||||
if (info.bundleName != it->want.GetBundle()) {
|
||||
if (info.bundleName != it->want.GetBundle()) {
|
||||
it = info.allWants.erase(it);
|
||||
} else {
|
||||
it->want.RemoveParam("ohos.extra.param.key.appCloneIndex");
|
||||
@@ -202,7 +202,7 @@ bool PendingWantManager::CheckPendingWantRecordByKey(
|
||||
return true;
|
||||
}
|
||||
|
||||
int32_t PendingWantManager::SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo)
|
||||
int32_t PendingWantManager::SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo)
|
||||
{
|
||||
SenderInfo info = senderInfo;
|
||||
|
||||
@@ -235,7 +235,7 @@ int32_t PendingWantManager::SendWantSender(sptr<IWantSender> target, const Sende
|
||||
}
|
||||
return ERR_INVALID_VALUE;
|
||||
}
|
||||
return record->SenderInner(info);
|
||||
return record->SenderInner(senderInfo);
|
||||
}
|
||||
|
||||
void PendingWantManager::CancelWantSender(const bool isSystemAppCall, const sptr<IWantSender> &sender)
|
||||
|
||||
@@ -72,7 +72,8 @@ int32_t PendingWantRecord::SenderInner(SenderInfo &senderInfo)
|
||||
WantParams wantParams = {};
|
||||
senderInfo.finishedReceiver->PerformReceive(want, senderInfo.code, "canceled", wantParams, false, false, 0);
|
||||
}
|
||||
return START_CANCELED;
|
||||
TAG_LOGE(AAFwkTag::WANTAGENT, "wantagent has been canceled");
|
||||
return ERR_WANTAGENT_CANCELED;
|
||||
}
|
||||
|
||||
auto pendingWantManager = pendingWantManager_.lock();
|
||||
@@ -92,11 +93,13 @@ int32_t PendingWantRecord::SenderInner(SenderInfo &senderInfo)
|
||||
bool sendFinish = (senderInfo.finishedReceiver != nullptr);
|
||||
int32_t res = ExecuteOperation(pendingWantManager, senderInfo, want);
|
||||
TAG_LOGI(AAFwkTag::WANTAGENT, "ExecuteOperation return %{public}d, sendFinish %{public}d", res, sendFinish);
|
||||
if (sendFinish && res != START_CANCELED) {
|
||||
if (sendFinish && res != ERR_WANTAGENT_CANCELED) {
|
||||
WantParams wantParams = {};
|
||||
senderInfo.finishedReceiver->PerformReceive(want, senderInfo.code, "", wantParams, false, false, 0);
|
||||
}
|
||||
|
||||
if (res != NO_ERROR) {
|
||||
return ERR_INVALID_VALUE;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -107,25 +110,25 @@ int32_t PendingWantRecord::ExecuteOperation(
|
||||
switch (key_->GetType()) {
|
||||
case static_cast<int32_t>(OperationType::START_ABILITY):
|
||||
res = pendingWantManager->PendingWantStartAbility(want, senderInfo.startOptions,
|
||||
callerToken_, -1, callerUid_, callerTokenId_);
|
||||
senderInfo.callerToken, -1, callerUid_, callerTokenId_);
|
||||
break;
|
||||
case static_cast<int32_t>(OperationType::START_ABILITIES): {
|
||||
std::vector<WantsInfo> allWantsInfos = key_->GetAllWantsInfos();
|
||||
allWantsInfos.back().want = want;
|
||||
res = pendingWantManager->PendingWantStartAbilitys(
|
||||
allWantsInfos, senderInfo.startOptions, callerToken_, -1, callerUid_, callerTokenId_);
|
||||
allWantsInfos, senderInfo.startOptions, senderInfo.callerToken, -1, callerUid_, callerTokenId_);
|
||||
break;
|
||||
}
|
||||
case static_cast<int32_t>(OperationType::START_SERVICE):
|
||||
case static_cast<int32_t>(OperationType::START_FOREGROUND_SERVICE):
|
||||
res = pendingWantManager->PendingWantStartAbility(want, nullptr, callerToken_,
|
||||
res = pendingWantManager->PendingWantStartAbility(want, nullptr, senderInfo.callerToken,
|
||||
-1, callerUid_, callerTokenId_);
|
||||
break;
|
||||
case static_cast<int32_t>(OperationType::SEND_COMMON_EVENT):
|
||||
res = pendingWantManager->PendingWantPublishCommonEvent(want, senderInfo, callerUid_, callerTokenId_);
|
||||
break;
|
||||
case static_cast<int32_t>(OperationType::START_SERVICE_EXTENSION):
|
||||
res = pendingWantManager->PendingWantStartServiceExtension(want, callerToken_);
|
||||
res = pendingWantManager->PendingWantStartServiceExtension(want, senderInfo.callerToken);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -48,6 +48,13 @@ bool SenderInfo::ReadFromParcel(Parcel &parcel)
|
||||
if (parcel.ReadBool()) {
|
||||
startOptions = parcel.ReadParcelable<StartOptions>();
|
||||
}
|
||||
if (parcel.ReadBool()) {
|
||||
callerToken = (static_cast<MessageParcel*>(&parcel))->ReadRemoteObject();
|
||||
if (callerToken == nullptr) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "null remote object");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -71,8 +78,6 @@ SenderInfo *SenderInfo::Unmarshalling(Parcel &parcel)
|
||||
|
||||
bool SenderInfo::Marshalling(Parcel &parcel) const
|
||||
{
|
||||
TAG_LOGD(AAFwkTag::ABILITYMGR, "call");
|
||||
|
||||
if (!parcel.WriteInt32(code)) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "write code failed");
|
||||
return false;
|
||||
@@ -113,6 +118,13 @@ bool SenderInfo::Marshalling(Parcel &parcel) const
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (callerToken) {
|
||||
if (!parcel.WriteBool(true) ||
|
||||
!(static_cast<MessageParcel*>(&parcel))->WriteRemoteObject(callerToken)) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "write callerToken failed");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} // namespace AAFwk
|
||||
|
||||
@@ -61,7 +61,8 @@ bool DoSomethingInterestingWithMyAPI(const char* data, size_t size)
|
||||
if (wantAgent) {
|
||||
// trigger want agent
|
||||
TriggerInfo triggerInfo(GET_BUNDLE_INFO_PERMISSION, extraInfo, want, resultCode);
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, nullptr, triggerInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, nullptr, triggerInfo, completedData, nullptr);
|
||||
}
|
||||
|
||||
if (params) {
|
||||
|
||||
+1
-1
@@ -122,7 +122,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
+2
-2
@@ -78,7 +78,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
@@ -258,7 +258,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -169,7 +169,7 @@ public:
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
int SendWantSender(sptr<IWantSender> target, const SenderInfo &senderInfo) override
|
||||
int SendWantSender(sptr<IWantSender> target, SenderInfo &senderInfo) override
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual int SendWantSender(const sptr<AAFwk::IWantSender>& target, const SenderInfo& senderInfo) override
|
||||
virtual int SendWantSender(sptr<AAFwk::IWantSender>& target, SenderInfo& senderInfo) override
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantBundleName, std::string(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -300,7 +300,8 @@ HWTEST_F(PandingWantManagerTest, pending_want_mgr_test_005, TestSize.Level1)
|
||||
TriggerInfo paramsInfo("", nullptr, abilityWant, 11);
|
||||
|
||||
EXPECT_CALL(*call, OnSendFinished(_, _, _, _)).Times(1);
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, callback, paramsInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, callback, paramsInfo, completedData, nullptr);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+1
-1
@@ -305,7 +305,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -305,7 +305,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
+1
-1
@@ -272,7 +272,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -317,7 +317,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -317,7 +317,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -317,7 +317,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -317,7 +317,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -317,7 +317,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -285,7 +285,7 @@ public:
|
||||
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
|
||||
MOCK_METHOD3(GetWantSender,
|
||||
sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken, int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -310,7 +310,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -281,7 +281,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -488,7 +488,7 @@ HWTEST_F(PendingWantManagerTest, PendingWantManagerTest_1400, TestSize.Level1)
|
||||
EXPECT_NE(pendingWantRecord, nullptr);
|
||||
SenderInfo info;
|
||||
info.finishedReceiver = new CancelReceiver();
|
||||
EXPECT_EQ(pendingManager_->SendWantSender(pendingWantRecord, info), -1);
|
||||
EXPECT_EQ(pendingManager_->SendWantSender(pendingWantRecord, info), ERR_INVALID_VALUE);
|
||||
EXPECT_TRUE(CancelReceiver::performReceiveCount == 100);
|
||||
CancelReceiver::performReceiveCount = 0;
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ HWTEST_F(PendingWantRecordTest, PendingWantRecordTest_0700, TestSize.Level1)
|
||||
EXPECT_NE(pendingWantRecord, nullptr);
|
||||
SenderInfo info;
|
||||
pendingWantRecord->canceled_ = true;
|
||||
EXPECT_EQ(pendingWantRecord->SenderInner(info), -96);
|
||||
EXPECT_EQ(pendingWantRecord->SenderInner(info), 2097335);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -489,8 +489,9 @@ HWTEST_F(PendingWantTest, PendingWant_2100, Function | MediumTest | Level1)
|
||||
unsigned int flags = 1;
|
||||
flags |= FLAG_NO_CREATE;
|
||||
AbilityManagerClient::GetInstance()->Connect();
|
||||
EXPECT_EQ(ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT,
|
||||
pendingWant.SendAndReturnResult(requestCode, want, nullptr, "Permission", nullptr, nullptr, nullptr));
|
||||
sptr<CompletedDispatcher> onCompleted;
|
||||
EXPECT_EQ(ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT, pendingWant.SendAndReturnResult(requestCode,
|
||||
want, onCompleted, "Permission", nullptr, nullptr, nullptr, nullptr));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -762,56 +763,6 @@ HWTEST_F(PendingWantTest, PendingWant_4300, Function | MediumTest | Level1)
|
||||
pendingWant->GetUid(nullptr, uid);
|
||||
}
|
||||
|
||||
/*
|
||||
* @tc.number : PendingWant_4400
|
||||
* @tc.name : PendingWant Send
|
||||
* @tc.desc : Send
|
||||
*/
|
||||
HWTEST_F(PendingWantTest, PendingWant_4400, Function | MediumTest | Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "PendingWant_4400 start";
|
||||
auto pendingWant = std::make_shared<PendingWant>(nullptr);
|
||||
sptr<AAFwk::IWantSender> target;
|
||||
pendingWant->Send(target);
|
||||
EXPECT_TRUE(pendingWant != nullptr);
|
||||
GTEST_LOG_(INFO) << "PendingWant_4400 end";
|
||||
}
|
||||
|
||||
/*
|
||||
* @tc.number : PendingWant_4500
|
||||
* @tc.name : PendingWant Send
|
||||
* @tc.desc : Send
|
||||
*/
|
||||
HWTEST_F(PendingWantTest, PendingWant_4500, Function | MediumTest | Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "PendingWant_4500 start";
|
||||
auto pendingWant = std::make_shared<PendingWant>(nullptr);
|
||||
int requestCode = 10;
|
||||
sptr<AAFwk::IWantSender> target;
|
||||
pendingWant->Send(requestCode, target);
|
||||
EXPECT_TRUE(pendingWant != nullptr);
|
||||
GTEST_LOG_(INFO) << "PendingWant_4500 end";
|
||||
}
|
||||
|
||||
/*
|
||||
* @tc.number : PendingWant_4600
|
||||
* @tc.name : PendingWant Send
|
||||
* @tc.desc : Send
|
||||
*/
|
||||
HWTEST_F(PendingWantTest, PendingWant_4600, Function | MediumTest | Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "PendingWant_4600 start";
|
||||
auto pendingWant = std::make_shared<PendingWant>(nullptr);
|
||||
int requestCode = 10;
|
||||
std::shared_ptr<Want> want = std::make_shared<Want>();
|
||||
ElementName element("device", "bundleName", "abilityName");
|
||||
want->SetElement(element);
|
||||
sptr<AAFwk::IWantSender> target;
|
||||
pendingWant->Send(requestCode, want, target);
|
||||
EXPECT_TRUE(pendingWant != nullptr);
|
||||
GTEST_LOG_(INFO) << "PendingWant_4600 end";
|
||||
}
|
||||
|
||||
/*
|
||||
* @tc.number : PendingWant_4700
|
||||
* @tc.name : PendingWant Send
|
||||
@@ -888,8 +839,9 @@ HWTEST_F(PendingWantTest, PendingWant_5000, Function | MediumTest | Level1)
|
||||
std::shared_ptr<WantParams> options;
|
||||
std::shared_ptr<StartOptions> startOptions = nullptr;
|
||||
sptr<AAFwk::IWantSender> target;
|
||||
auto result = pendingWant.Send(requestCode, want, onCompleted, requiredPermission, options, startOptions, target);
|
||||
EXPECT_EQ(result, ERR_ABILITY_RUNTIME_EXTERNAL_SERVICE_BUSY);
|
||||
auto result = pendingWant.Send(requestCode, want, onCompleted,
|
||||
requiredPermission, options, startOptions, target, nullptr);
|
||||
EXPECT_EQ(result, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
|
||||
GTEST_LOG_(INFO) << "PendingWant_5000 end";
|
||||
}
|
||||
|
||||
|
||||
@@ -281,7 +281,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -95,7 +95,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
@@ -1012,7 +1012,8 @@ HWTEST_F(WantAgentHelperTest, WantAgentHelper_4900, Function | MediumTest | Leve
|
||||
|
||||
std::shared_ptr<CompletedCallback> callback;
|
||||
TriggerInfo paramsInfo;
|
||||
WantAgentHelper::TriggerWantAgent(nullptr, callback, paramsInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(nullptr, callback, paramsInfo, completedData, nullptr);
|
||||
|
||||
GTEST_LOG_(INFO) << "WantAgentHelper::TriggerWantAgent end";
|
||||
}
|
||||
@@ -1028,7 +1029,8 @@ HWTEST_F(WantAgentHelperTest, WantAgentHelper_5000, Function | MediumTest | Leve
|
||||
|
||||
std::shared_ptr<WantAgent> wantAgent(nullptr);
|
||||
TriggerInfo paramsInfo;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, nullptr, paramsInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, nullptr, paramsInfo, completedData, nullptr);
|
||||
|
||||
GTEST_LOG_(INFO) << "WantAgentHelper::TriggerWantAgent end";
|
||||
}
|
||||
@@ -1045,7 +1047,8 @@ HWTEST_F(WantAgentHelperTest, WantAgentHelper_5100, Function | MediumTest | Leve
|
||||
std::shared_ptr<WantAgent> wantAgent(nullptr);
|
||||
std::shared_ptr<CompletedCallback> callback;
|
||||
TriggerInfo paramsInfo;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, callback, paramsInfo);
|
||||
sptr<CompletedDispatcher> completedData;
|
||||
WantAgentHelper::TriggerWantAgent(wantAgent, callback, paramsInfo, completedData, nullptr);
|
||||
|
||||
GTEST_LOG_(INFO) << "WantAgentHelper::TriggerWantAgent end";
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public:
|
||||
MOCK_METHOD3(
|
||||
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken,
|
||||
int32_t uid));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
|
||||
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, SenderInfo& senderInfo));
|
||||
MOCK_METHOD1(CancelWantSender, void(const sptr<IWantSender>& sender));
|
||||
MOCK_METHOD1(GetPendingWantUid, int(const sptr<IWantSender>& target));
|
||||
MOCK_METHOD1(GetPendingWantUserId, int(const sptr<IWantSender>& target));
|
||||
|
||||
Reference in New Issue
Block a user