diff --git a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp index 430b99e1cf5fc275110c0e73d2053de71948d769..b0426012d64f1074e7ab56b3ba16343a3ee7f7b9 100644 --- a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp +++ b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -22,6 +22,7 @@ namespace OHOS { namespace AppExecFwk { +const std::string HIDE_FAILURE_TIP_DIALOG = "hideFailureTipDialog"; bool UnwrapOpenLinkOptions(napi_env env, napi_value param, AAFwk::OpenLinkOptions &openLinkOptions, AAFwk::Want &want) { @@ -49,6 +50,11 @@ bool UnwrapOpenLinkOptions(napi_env env, napi_value param, AAFwk::OpenLinkOption want.SetParam(APP_LINKING_ONLY, false); } + bool hideFailureTipDialog = false; + if (UnwrapBooleanByPropertyName(env, param, HIDE_FAILURE_TIP_DIALOG.c_str(), hideFailureTipDialog)) { + openLinkOptions.SetHideFailureTipDialog(hideFailureTipDialog); + } + return true; } } // namespace AppExecFwk diff --git a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h index 78c381a6c3de44335f8766b2e0ce03ebb7b5c232..b266d8470320c194804f56b2bf876cd712770817 100644 --- a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h +++ b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/frameworks/native/ability/ability_runtime/ability_context_impl.cpp b/frameworks/native/ability/ability_runtime/ability_context_impl.cpp index 39bc51ebfd04fe1ab7b7447aa72318507812a64b..292fa10700a5cb049763fa350d71691eeef70433 100644 --- a/frameworks/native/ability/ability_runtime/ability_context_impl.cpp +++ b/frameworks/native/ability/ability_runtime/ability_context_impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -1235,10 +1235,10 @@ bool AbilityContextImpl::GetRestoreEnabled() return restoreEnabled_.load(); } -ErrCode AbilityContextImpl::OpenLink(const AAFwk::Want& want, int requestCode) +ErrCode AbilityContextImpl::OpenLink(const AAFwk::Want &want, int requestCode, bool hideFailureTipDialog) { TAG_LOGD(AAFwkTag::CONTEXT, "called"); - return AAFwk::AbilityManagerClient::GetInstance()->OpenLink(want, token_, -1, requestCode); + return AAFwk::AbilityManagerClient::GetInstance()->OpenLink(want, token_, -1, requestCode, hideFailureTipDialog); } std::shared_ptr AbilityContextImpl::GetWant() diff --git a/frameworks/native/ability/native/ability_runtime/js_ability_context.cpp b/frameworks/native/ability/native/ability_runtime/js_ability_context.cpp index f273f8edd43439279851c2edb8e7bf912f220204..01b737800eeea76da2bb5a8c180d6c827c7077a2 100644 --- a/frameworks/native/ability/native/ability_runtime/js_ability_context.cpp +++ b/frameworks/native/ability/native/ability_runtime/js_ability_context.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -983,22 +983,23 @@ napi_value JsAbilityContext::OnOpenLink(napi_env env, NapiCallbackInfo& info) TAG_LOGD(AAFwkTag::CONTEXT, "completionHandler is used"); CreateOpenLinkTask(env, info.argv[INDEX_TWO], want, requestCode); } - return OnOpenLinkInner(env, want, requestCode, startTime, linkValue); + return OnOpenLinkInner(env, want, requestCode, startTime, linkValue, openLinkOptions.GetHideFailureTipDialog()); } -napi_value JsAbilityContext::OnOpenLinkInner(napi_env env, const AAFwk::Want& want, - int requestCode, const std::string& startTime, const std::string& url) +napi_value JsAbilityContext::OnOpenLinkInner(napi_env env, const AAFwk::Want &want, int requestCode, + const std::string &startTime, const std::string &url, bool hideFailureTipDialog) { auto innerErrCode = std::make_shared(ERR_OK); - NapiAsyncTask::ExecuteCallback execute = [weak = context_, want, innerErrCode, requestCode]() { - auto context = weak.lock(); - if (!context) { - TAG_LOGW(AAFwkTag::CONTEXT, "null context"); - *innerErrCode = static_cast(AbilityErrorCode::ERROR_CODE_INVALID_CONTEXT); - return; - } - *innerErrCode = context->OpenLink(want, requestCode); - }; + NapiAsyncTask::ExecuteCallback execute = + [weak = context_, want, innerErrCode, requestCode, hideFailureTipDialog]() { + auto context = weak.lock(); + if (!context) { + TAG_LOGW(AAFwkTag::CONTEXT, "null context"); + *innerErrCode = static_cast(AbilityErrorCode::ERROR_CODE_INVALID_CONTEXT); + return; + } + *innerErrCode = context->OpenLink(want, requestCode, hideFailureTipDialog); + }; napi_value result = nullptr; AddFreeInstallObserver(env, want, nullptr, &result, false, true); NapiAsyncTask::CompleteCallback complete = [innerErrCode, requestCode, startTime, url, weak = context_, diff --git a/frameworks/native/ability/native/js_service_extension_context.cpp b/frameworks/native/ability/native/js_service_extension_context.cpp index 163c4c3a3255a0a91f1e477c8fe304e58ed7d288..c7e1e8ecefed12c82676e155dfc786ef72a437d0 100644 --- a/frameworks/native/ability/native/js_service_extension_context.cpp +++ b/frameworks/native/ability/native/js_service_extension_context.cpp @@ -351,21 +351,21 @@ private: system_clock::now().time_since_epoch()).count()); want.SetParam(Want::PARAM_RESV_START_TIME, startTime); - return OnOpenLinkInner(env, want, startTime, linkValue); + return OnOpenLinkInner(env, want, startTime, linkValue, openLinkOptions.GetHideFailureTipDialog()); } napi_value OnOpenLinkInner(napi_env env, const AAFwk::Want& want, - const std::string& startTime, const std::string& url) + const std::string &startTime, const std::string &url, bool hideFailureTipDialog) { auto innerErrorCode = std::make_shared(ERR_OK); - NapiAsyncTask::ExecuteCallback execute = [weak = context_, want, innerErrorCode]() { + NapiAsyncTask::ExecuteCallback execute = [weak = context_, want, innerErrorCode, hideFailureTipDialog]() { auto context = weak.lock(); if (!context) { TAG_LOGW(AAFwkTag::SERVICE_EXT, "context released"); *innerErrorCode = static_cast(AbilityErrorCode::ERROR_CODE_INVALID_CONTEXT); return; } - *innerErrorCode = context->OpenLink(want, -1); + *innerErrorCode = context->OpenLink(want, -1, hideFailureTipDialog); }; NapiAsyncTask::CompleteCallback complete = [innerErrorCode, startTime, url, diff --git a/frameworks/native/ability/native/ui_extension_base/js_ui_extension_context.cpp b/frameworks/native/ability/native/ui_extension_base/js_ui_extension_context.cpp index bb48409d762b52901417d279bccaf0b837c29573..c5d9c98c211228b14edd6ff67d42155f44c0d706 100755 --- a/frameworks/native/ability/native/ui_extension_base/js_ui_extension_context.cpp +++ b/frameworks/native/ability/native/ui_extension_base/js_ui_extension_context.cpp @@ -365,22 +365,23 @@ napi_value JsUIExtensionContext::OnOpenLink(napi_env env, NapiCallbackInfo& info #ifdef SUPPORT_SCREEN InitDisplayId(want); #endif - return OnOpenLinkInner(env, want, requestCode, startTime, linkValue); + return OnOpenLinkInner(env, want, requestCode, startTime, linkValue, openLinkOptions.GetHideFailureTipDialog()); } napi_value JsUIExtensionContext::OnOpenLinkInner(napi_env env, const AAFwk::Want& want, - int requestCode, const std::string& startTime, const std::string& url) + int requestCode, const std::string &startTime, const std::string &url, bool hideFailureTipDialog) { auto innerErrorCode = std::make_shared(ERR_OK); - NapiAsyncTask::ExecuteCallback execute = [weak = context_, want, innerErrorCode, requestCode]() { - auto context = weak.lock(); - if (!context) { - TAG_LOGW(AAFwkTag::UI_EXT, "null context"); - *innerErrorCode = static_cast(AbilityErrorCode::ERROR_CODE_INVALID_CONTEXT); - return; - } - *innerErrorCode = context->OpenLink(want, requestCode); - }; + NapiAsyncTask::ExecuteCallback execute = + [weak = context_, want, innerErrorCode, requestCode, hideFailureTipDialog]() { + auto context = weak.lock(); + if (!context) { + TAG_LOGW(AAFwkTag::UI_EXT, "null context"); + *innerErrorCode = static_cast(AbilityErrorCode::ERROR_CODE_INVALID_CONTEXT); + return; + } + *innerErrorCode = context->OpenLink(want, requestCode, hideFailureTipDialog); + }; napi_value result = nullptr; AddFreeInstallObserver(env, want, nullptr, &result, false, true); diff --git a/frameworks/native/ability/native/ui_extension_base/ui_extension_context.cpp b/frameworks/native/ability/native/ui_extension_base/ui_extension_context.cpp index d8f1a0a551aaa154bf14ad5297eb3cfa69aeadfc..d33f0fc8895d0c6875bfa840951e06fdd0392255 100755 --- a/frameworks/native/ability/native/ui_extension_base/ui_extension_context.cpp +++ b/frameworks/native/ability/native/ui_extension_base/ui_extension_context.cpp @@ -333,10 +333,9 @@ ErrCode UIExtensionContext::AddFreeInstallObserver(const sptrOpenLink(want, token_, -1, requestCode); + return AAFwk::AbilityManagerClient::GetInstance()->OpenLink(want, token_, -1, requestCode, hideFailureTipDialog); } std::shared_ptr UIExtensionContext::GetResourceManager() const diff --git a/frameworks/native/appkit/ability_runtime/service_extension_context.cpp b/frameworks/native/appkit/ability_runtime/service_extension_context.cpp index ac3fff62cf82b310d158f71cd4d455b1456d9d4b..7fd75e93dbbb0270fbaeab2511c548934c4d6bb6 100644 --- a/frameworks/native/appkit/ability_runtime/service_extension_context.cpp +++ b/frameworks/native/appkit/ability_runtime/service_extension_context.cpp @@ -269,10 +269,10 @@ ErrCode ServiceExtensionContext::PreStartMission(const std::string& bundleName, return err; } -ErrCode ServiceExtensionContext::OpenLink(const AAFwk::Want& want, int requestCode) +ErrCode ServiceExtensionContext::OpenLink(const AAFwk::Want &want, int requestCode, bool hideFailureTipDialog) { TAG_LOGD(AAFwkTag::UI_EXT, "called"); - return AAFwk::AbilityManagerClient::GetInstance()->OpenLink(want, token_, -1, requestCode); + return AAFwk::AbilityManagerClient::GetInstance()->OpenLink(want, token_, -1, requestCode, hideFailureTipDialog); } ErrCode ServiceExtensionContext::OpenAtomicService(const AAFwk::Want &want, const AAFwk::StartOptions &options) diff --git a/interfaces/inner_api/ability_manager/include/ability_manager_client.h b/interfaces/inner_api/ability_manager/include/ability_manager_client.h index 60e6e80a8145c07cdc6d07e8519968e74412c9ca..b42b7abf479a9874c8f84b833bf13173fa176325 100644 --- a/interfaces/inner_api/ability_manager/include/ability_manager_client.h +++ b/interfaces/inner_api/ability_manager/include/ability_manager_client.h @@ -1678,7 +1678,8 @@ public: * @param requestCode Ability request code. * @return Returns ERR_OK on success, others on failure. */ - int32_t OpenLink(const Want& want, sptr callerToken, int32_t userId, int requestCode); + int32_t OpenLink(const Want &want, sptr callerToken, int32_t userId, int requestCode, + bool hideFailureTipDialog = false); /** * Terminate process by bundleName. diff --git a/interfaces/inner_api/ability_manager/include/ability_manager_interface.h b/interfaces/inner_api/ability_manager/include/ability_manager_interface.h index c04c88ea43ab51e130c205d27b365d65a3ec4de9..51466242483b68ff819a677618528114d251d8fd 100644 --- a/interfaces/inner_api/ability_manager/include/ability_manager_interface.h +++ b/interfaces/inner_api/ability_manager/include/ability_manager_interface.h @@ -1846,8 +1846,8 @@ public: * @param requestCode Ability request code. * @return Returns ERR_OK on success, others on failure. */ - virtual int32_t OpenLink(const Want& want, sptr callerToken, - int32_t userId = DEFAULT_INVAL_VALUE, int requestCode = DEFAULT_INVAL_VALUE) + virtual int32_t OpenLink(const Want &want, sptr callerToken, int32_t userId = DEFAULT_INVAL_VALUE, + int requestCode = DEFAULT_INVAL_VALUE, bool hideFailureTipDialog = false) { return 0; } diff --git a/interfaces/inner_api/ability_manager/include/open_link_options.h b/interfaces/inner_api/ability_manager/include/open_link_options.h index f01875662fcdfc18f0fd7c857d20a48cbe833d08..58c1af02f9aaa77d7d1e6a7083f39b7eb85773ff 100644 --- a/interfaces/inner_api/ability_manager/include/open_link_options.h +++ b/interfaces/inner_api/ability_manager/include/open_link_options.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -35,12 +35,15 @@ public: void SetAppLinkingOnly(bool appLinkingOnly); bool GetAppLinkingOnly() const; + void SetHideFailureTipDialog(bool hideFailureTipDialog); + bool GetHideFailureTipDialog() const; void SetParameters(WantParams parameters); WantParams GetParameters() const; bool WriteParameters(const WantParams ¶meters, Parcel &parcel) const; private: bool appLinkingOnly_ = false; + bool hideFailureTipDialog_ = false; WantParams parameters_; // no object in parcel static constexpr int VALUE_NULL = -1; diff --git a/interfaces/kits/native/ability/ability_runtime/ability_context.h b/interfaces/kits/native/ability/ability_runtime/ability_context.h index 1bc0b053dec44c07ec9e944136ed29da03c93cda..643cef9e0c9e61987645517819b7fd1a45ac3c4e 100644 --- a/interfaces/kits/native/ability/ability_runtime/ability_context.h +++ b/interfaces/kits/native/ability/ability_runtime/ability_context.h @@ -177,7 +177,7 @@ public: virtual ErrCode RequestModalUIExtension(const AAFwk::Want& want) = 0; - virtual ErrCode OpenLink(const AAFwk::Want& want, int requestCode) = 0; + virtual ErrCode OpenLink(const AAFwk::Want &want, int requestCode, bool hideFailureTipDialog = false) = 0; virtual ErrCode OpenAtomicService(AAFwk::Want& want, const AAFwk::StartOptions &options, int requestCode, RuntimeTask &&task) = 0; diff --git a/interfaces/kits/native/ability/ability_runtime/ability_context_impl.h b/interfaces/kits/native/ability/ability_runtime/ability_context_impl.h index 35bdfd8339a9d81ee005826b29feec727ed2e6e7..6ab186f25f780890e57b6e51f71fc56c653ab93f 100644 --- a/interfaces/kits/native/ability/ability_runtime/ability_context_impl.h +++ b/interfaces/kits/native/ability/ability_runtime/ability_context_impl.h @@ -239,7 +239,7 @@ public: ErrCode AddFreeInstallObserver(const sptr &observer) override; - ErrCode OpenLink(const AAFwk::Want& want, int requestCode) override; + ErrCode OpenLink(const AAFwk::Want &want, int requestCode, bool hideFailureTipDialog = false) override; ErrCode OpenAtomicService(AAFwk::Want& want, const AAFwk::StartOptions &options, int requestCode, RuntimeTask &&task) override; diff --git a/interfaces/kits/native/ability/native/ability_runtime/js_ability_context.h b/interfaces/kits/native/ability/native/ability_runtime/js_ability_context.h index b1e8c0b70fcdbe862641925c40ca96ac43aeadef..920224e2deeb85037ba43f92442dbf8b3bc57680 100644 --- a/interfaces/kits/native/ability/native/ability_runtime/js_ability_context.h +++ b/interfaces/kits/native/ability/native/ability_runtime/js_ability_context.h @@ -106,8 +106,8 @@ private: const std::weak_ptr& abilityContext, const std::shared_ptr &callback); napi_value OnStartAbility(napi_env env, NapiCallbackInfo& info, bool isStartRecent = false); napi_value OnOpenLink(napi_env env, NapiCallbackInfo& info); - napi_value OnOpenLinkInner(napi_env env, const AAFwk::Want& want, - int requestCode, const std::string& startTime, const std::string& url); + napi_value OnOpenLinkInner(napi_env env, const AAFwk::Want &want, int requestCode, const std::string &startTime, + const std::string &url, bool hideFailureTipDialog = false); napi_value OnStartAbilityAsCallerInner(napi_env env, NapiCallbackInfo& info, const AAFwk::Want &want, size_t unwrapArgc, const AAFwk::StartOptions &startOptions); napi_value OnStartAbilityAsCaller(napi_env env, NapiCallbackInfo& info); diff --git a/interfaces/kits/native/ability/native/ui_extension_base/js_ui_extension_context.h b/interfaces/kits/native/ability/native/ui_extension_base/js_ui_extension_context.h index 41e074b89ae3004d544a031d660abd39eaafa977..64331220b1808eb0fb4de52b64e166a3fe32aeac 100755 --- a/interfaces/kits/native/ability/native/ui_extension_base/js_ui_extension_context.h +++ b/interfaces/kits/native/ability/native/ui_extension_base/js_ui_extension_context.h @@ -100,7 +100,7 @@ private: AAFwk::Want &want, int &requestCode); napi_value OnOpenLink(napi_env env, NapiCallbackInfo& info); napi_value OnOpenLinkInner(napi_env env, const AAFwk::Want& want, - int requestCode, const std::string& startTime, const std::string& url); + int requestCode, const std::string &startTime, const std::string &url, bool hideFailureTipDialog = false); void UnWrapCompletionHandlerForAtomicService( napi_env env, napi_value param, AAFwk::StartOptions &options, const std::string &appId); #ifdef SUPPORT_SCREEN diff --git a/interfaces/kits/native/ability/native/ui_extension_base/ui_extension_context.h b/interfaces/kits/native/ability/native/ui_extension_base/ui_extension_context.h index 8dcd4477f0e355fb883bbabf90a1718b28adc286..207ab6eb850b6c5c6f89ff017b47ddea0ef3a726 100755 --- a/interfaces/kits/native/ability/native/ui_extension_base/ui_extension_context.h +++ b/interfaces/kits/native/ability/native/ui_extension_base/ui_extension_context.h @@ -176,7 +176,7 @@ public: Ace::UIContent* GetUIContent() override; #endif // SUPPORT_SCREEN - ErrCode OpenLink(const AAFwk::Want& want, int reuqestCode); + ErrCode OpenLink(const AAFwk::Want &want, int reuqestCode, bool hideFailureTipDialog = false); ErrCode OpenAtomicService(AAFwk::Want& want, const AAFwk::StartOptions &options, int requestCode, RuntimeTask &&task); diff --git a/interfaces/kits/native/appkit/ability_runtime/service_extension_context.h b/interfaces/kits/native/appkit/ability_runtime/service_extension_context.h index b43da9bde5e82ad772ce6075faff61d0f1963bea..08b2ec85ea2e019590f4815635cf83e498017920 100644 --- a/interfaces/kits/native/appkit/ability_runtime/service_extension_context.h +++ b/interfaces/kits/native/appkit/ability_runtime/service_extension_context.h @@ -171,7 +171,7 @@ public: using SelfType = ServiceExtensionContext; static const size_t CONTEXT_TYPE_ID; - ErrCode OpenLink(const AAFwk::Want& want, int reuqestCode); + ErrCode OpenLink(const AAFwk::Want &want, int reuqestCode, bool hideFailureTipDialog = false); ErrCode OpenAtomicService(const AAFwk::Want &want, const AAFwk::StartOptions &options); ErrCode AddCompletionHandlerForAtomicService(const std::string &requestId, OnAtomicRequestSuccess onRequestSucc, diff --git a/services/abilitymgr/include/ability_manager_proxy.h b/services/abilitymgr/include/ability_manager_proxy.h index 90aa5002ea4b2fc397d3db6430d780e1c1cdde08..67b79176a92a847180a7eb7d6ffdc337bbd29095 100644 --- a/services/abilitymgr/include/ability_manager_proxy.h +++ b/services/abilitymgr/include/ability_manager_proxy.h @@ -1537,8 +1537,8 @@ public: * @param requestCode Ability request code. * @return Returns ERR_OK on success, others on failure. */ - virtual int32_t OpenLink(const Want& want, sptr callerToken, - int32_t userId = DEFAULT_INVAL_VALUE, int requestCode = DEFAULT_INVAL_VALUE) override; + virtual int32_t OpenLink(const Want &want, sptr callerToken, int32_t userId = DEFAULT_INVAL_VALUE, + int requestCode = DEFAULT_INVAL_VALUE, bool hideFailureTipDialog = false) override; /** * Terminate the mission. diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 2a291424e2d6d2fb30893c35ae3f6aa9b1e0bae9..f966846db4ec445288dc69b18f0386eddcc0f74a 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -94,6 +94,7 @@ constexpr const char* KEY_SESSION_ID = "com.ohos.param.sessionId"; constexpr const char* KEY_REQUEST_ID = "com.ohos.param.requestId"; using OHOS::AppExecFwk::IAbilityController; struct StartAbilityInfo; +struct StartAbilityWrapParam; class WindowFocusChangedListener; class WindowVisibilityChangedListener; class PreloadManagerService; @@ -408,8 +409,8 @@ public: * @param requestCode Ability request code. * @return Returns ERR_OK on success, others on failure. */ - virtual int32_t OpenLink(const Want& want, sptr callerToken, - int32_t userId = DEFAULT_INVAL_VALUE, int32_t requestCode = DEFAULT_INVAL_VALUE) override; + virtual int32_t OpenLink(const Want &want, sptr callerToken, int32_t userId = DEFAULT_INVAL_VALUE, + int32_t requestCode = DEFAULT_INVAL_VALUE, bool hideFailureTipDialog = false) override; /** * Pop-up launch of full-screen atomic service. @@ -1066,19 +1067,9 @@ public: const int32_t &resultCode, const int32_t &uniqueId, WantParams &wantParam); int32_t StartAbilityByFreeInstall(const Want &want, sptr callerToken, int32_t userId, - int32_t requestCode); + int32_t requestCode, const AAFwk::OpenLinkOptions &opt = {}); - int StartAbilityWrap( - const Want &want, - const sptr &callerToken, - int requestCode, - bool isPendingWantCaller, - int32_t userId = DEFAULT_INVAL_VALUE, - bool isStartAsCaller = false, - uint32_t specifyTokenId = 0, - bool isForegroundToRestartApp = false, - bool isImplicit = false, - bool isUIAbilityOnly = false); + int StartAbilityWrap(const StartAbilityWrapParam &startAbilityWrapParam); int StartAbilityInner( const Want &want, @@ -1090,7 +1081,8 @@ public: uint32_t specifyTokenId = 0, bool isForegroundToRestartApp = false, bool isImplicit = false, - bool isUIAbilityOnly = false); + bool isUIAbilityOnly = false, + const AAFwk::OpenLinkOptions &opt = {}); int32_t StartExtensionAbilityInner( const Want &want, @@ -2783,7 +2775,8 @@ private: void CloseAssertDialog(const std::string &assertSessionId); int32_t OpenLinkFreeInstallAtomicService(Want &convertedWant, const Want &originalWant, - sptr callerToken, int32_t userId, int32_t requestCode, bool removeInsightIntentFlag); + sptr callerToken, int32_t userId, int32_t requestCode, bool removeInsightIntentFlag, + const AAFwk::OpenLinkOptions &opt = {}); void ReportPreventStartAbilityResult(const AppExecFwk::AbilityInfo &callerAbilityInfo, const AppExecFwk::AbilityInfo &abilityInfo); @@ -2803,10 +2796,10 @@ private: const std::vector ¶mMappings, std::string &uri, AAFwk::Want &want); int StartAbilityWithRemoveIntentFlag(const Want &want, const sptr &callerToken, - int32_t userId, int requestCode, bool removeInsightIntentFlag); + int32_t userId, int requestCode, bool removeInsightIntentFlag, const AAFwk::OpenLinkOptions &opt = {}); int32_t OpenLinkInner(const Want &want, sptr callerToken, int32_t userId, int requestCode, - bool removeInsightIntentFlag); + bool removeInsightIntentFlag, const AAFwk::OpenLinkOptions &opt = {}); int32_t KillProcessWithReasonInner(int32_t pid, const ExitReason &reason, bool isKillPrecedeStart); #ifdef BGTASKMGR_CONTINUOUS_TASK_ENABLE std::shared_ptr bgtaskObserver_; diff --git a/services/abilitymgr/include/ability_record.h b/services/abilitymgr/include/ability_record.h index 79b765ebba50246adbebed8b66a80c3bad361b11..721bf401e138660f96f1b2fc1658f7b0d4767639 100644 --- a/services/abilitymgr/include/ability_record.h +++ b/services/abilitymgr/include/ability_record.h @@ -39,6 +39,7 @@ #include "ipc_skeleton.h" #include "lifecycle_deal.h" #include "lifecycle_state_info.h" +#include "open_link_options.h" #include "session_info.h" #include "ui_extension_window_command.h" #include "uri.h" @@ -285,6 +286,7 @@ struct AbilityRequest { AppExecFwk::AbilityInfo abilityInfo; AppExecFwk::ApplicationInfo appInfo; StartOptions startOptions; + OpenLinkOptions openLinkOptions; std::pair IsContinuation() const { auto flags = want.GetFlags(); diff --git a/services/abilitymgr/include/utils/start_ability_utils.h b/services/abilitymgr/include/utils/start_ability_utils.h index 8129583fb41a2dfe54bc48d265eba65d2a69348f..a60a349ba795db34e448a0ca837b217c23402206 100644 --- a/services/abilitymgr/include/utils/start_ability_utils.h +++ b/services/abilitymgr/include/utils/start_ability_utils.h @@ -21,6 +21,7 @@ #include "ability_info.h" #include "extension_ability_info.h" +#include "open_link_options.h" #include "want.h" namespace OHOS { @@ -80,6 +81,20 @@ struct StartAbilityInfoWrap { ~StartAbilityInfoWrap(); void SetStartAbilityInfo(const AppExecFwk::AbilityInfo& abilityInfo); }; + +struct StartAbilityWrapParam { + Want want; + sptr callerToken; + int requestCode; + bool isPendingWantCaller; + int32_t userId = -1; + bool isStartAsCaller = false; + uint32_t specifyTokenId = 0; + bool isForegroundToRestartApp = false; + bool isImplicit = false; + bool isUIAbilityOnly = false; + AAFwk::OpenLinkOptions opt = {}; +}; } } #endif // OHOS_ABILITY_RUNTIME_START_ABILITY_UTILS_H \ No newline at end of file diff --git a/services/abilitymgr/src/ability_manager_client.cpp b/services/abilitymgr/src/ability_manager_client.cpp index e4149b294d189bc161089b437af22d1e793e1e44..0a9a15388a6986f294ef3db8563e80a9f36ddd1a 100644 --- a/services/abilitymgr/src/ability_manager_client.cpp +++ b/services/abilitymgr/src/ability_manager_client.cpp @@ -2099,12 +2099,12 @@ ErrCode AbilityManagerClient::PreStartMission(const std::string& bundleName, con return abms->PreStartMission(bundleName, moduleName, abilityName, startTime); } -ErrCode AbilityManagerClient::OpenLink(const Want& want, sptr callerToken, - int32_t userId, int requestCode) +ErrCode AbilityManagerClient::OpenLink(const Want &want, sptr callerToken, + int32_t userId, int requestCode, bool hideFailureTipDialog) { auto abms = GetAbilityManager(); CHECK_POINTER_RETURN_INVALID_VALUE(abms); - return abms->OpenLink(want, callerToken, userId, requestCode); + return abms->OpenLink(want, callerToken, userId, requestCode, hideFailureTipDialog); } ErrCode AbilityManagerClient::TerminateMission(int32_t missionId) diff --git a/services/abilitymgr/src/ability_manager_proxy.cpp b/services/abilitymgr/src/ability_manager_proxy.cpp index 8ab7a0ec36fb0271e9bc7d2162079b9b9957befd..4d4ac71708cdd6e990bc22b231dad425cf1544b9 100644 --- a/services/abilitymgr/src/ability_manager_proxy.cpp +++ b/services/abilitymgr/src/ability_manager_proxy.cpp @@ -5992,8 +5992,8 @@ int32_t AbilityManagerProxy::PreStartMission(const std::string& bundleName, cons return reply.ReadInt32(); } -ErrCode AbilityManagerProxy::OpenLink(const Want& want, sptr callerToken, - int32_t userId, int requestCode) +ErrCode AbilityManagerProxy::OpenLink(const Want &want, sptr callerToken, + int32_t userId, int requestCode, bool hideFailureTipDialog) { if (AppUtils::GetInstance().IsForbidStart()) { TAG_LOGW(AAFwkTag::ABILITYMGR, "forbid start: %{public}s", want.GetElement().GetBundleName().c_str()); @@ -6026,6 +6026,10 @@ ErrCode AbilityManagerProxy::OpenLink(const Want& want, sptr call TAG_LOGE(AAFwkTag::ABILITYMGR, "requestCode write fail"); return INNER_ERR; } + if (!data.WriteBool(hideFailureTipDialog)) { + TAG_LOGE(AAFwkTag::ABILITYMGR, "hideFailureTipDialog write failed."); + return INNER_ERR; + } auto error = SendRequest(AbilityManagerInterfaceCode::OPEN_LINK, data, reply, option); if (error != NO_ERROR) { TAG_LOGE(AAFwkTag::ABILITYMGR, "request error:%{public}d", error); diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index da29f8b836b117a1a7d275125e438efa832b421e..7db57d14240d06e9a341af4efaae650e620f7224 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -622,7 +622,8 @@ int AbilityManagerService::StartAbility(const Want &want, int32_t userId, int re #ifdef SUPPORT_SCREEN DmsUtil::GetInstance().UpdateFlagForCollaboration(want); #endif - int32_t ret = StartAbilityWrap(want, nullptr, requestCode, false, userId); + StartAbilityWrapParam startAbilityWrapParam = { want, nullptr, requestCode, false, userId }; + int32_t ret = StartAbilityWrap(startAbilityWrapParam); AAFWK::ContinueRadar::GetInstance().ClickIconStartAbility("StartAbilityWrap", want.GetFlags(), ret); if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "StartAbilityError:%{public}d", eventInfo.errCode); @@ -637,7 +638,7 @@ int AbilityManagerService::StartAbility(const Want &want, const sptr &callerToken, - int32_t userId, int requestCode, bool removeInsightIntentFlag) + int32_t userId, int requestCode, bool removeInsightIntentFlag, const AAFwk::OpenLinkOptions &opt) { if (AppUtils::GetInstance().IsForbidStart()) { TAG_LOGW(AAFwkTag::ABILITYMGR, "forbid start: %{public}s", want.GetElement().GetBundleName().c_str()); @@ -654,11 +655,11 @@ int AbilityManagerService::StartAbilityWithRemoveIntentFlag(const Want &want, co #ifdef SUPPORT_SCREEN DmsUtil::GetInstance().UpdateFlagForCollaboration(want); #endif - return StartAbilityByFreeInstall(want, callerToken, userId, requestCode); + return StartAbilityByFreeInstall(want, callerToken, userId, requestCode, opt); } int32_t AbilityManagerService::StartAbilityByFreeInstall(const Want &want, sptr callerToken, - int32_t userId, int32_t requestCode) + int32_t userId, int32_t requestCode, const AAFwk::OpenLinkOptions &opt) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); bool startWithAccount = want.GetBoolParam(START_ABILITY_TYPE, false); @@ -679,8 +680,9 @@ int32_t AbilityManagerService::StartAbilityByFreeInstall(const Want &want, sptr< TAG_LOGD(AAFwkTag::ABILITYMGR, "Start ability come, ability is %{public}s, userId is %{public}d", want.GetElement().GetAbilityName().c_str(), userId); - - int32_t ret = StartAbilityWrap(want, callerToken, requestCode, false, userId); + StartAbilityWrapParam startAbilityWrapParam = { + want, callerToken, requestCode, false, userId, false, 0, false, false, false, opt }; + int32_t ret = StartAbilityWrap(startAbilityWrapParam); if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "StartAbilityByFreeInstall error:%{public}d", ret); } @@ -722,7 +724,9 @@ int AbilityManagerService::StartAbilityWithSpecifyTokenIdInner(const Want &want, TAG_LOGI(AAFwkTag::ABILITYMGR, "start ability come, ability:%{public}s, userId:%{public}d, specifyTokenId:%{public}u", want.GetElement().GetAbilityName().c_str(), userId, specifyTokenId); - int32_t ret = StartAbilityWrap(want, callerToken, requestCode, isPendingWantCaller, userId, false, specifyTokenId); + StartAbilityWrapParam startAbilityWrapParam = { + want, callerToken, requestCode, isPendingWantCaller, userId, false, specifyTokenId }; + int32_t ret = StartAbilityWrap(startAbilityWrapParam); if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "startAbility with specified token error:%{public}d", ret); } @@ -877,8 +881,9 @@ int AbilityManagerService::StartAbilityOnlyUIAbility(const Want &want, const spt TAG_LOGI(AAFwkTag::ABILITYMGR, "start, ability: %{public}s, userId: %{public}d, specifyTokenId: %{public}u", want.GetElement().GetAbilityName().c_str(), DEFAULT_INVAL_VALUE, specifyTokenId); - - int32_t ret = StartAbilityWrap(want, callerToken, DEFAULT_INVAL_VALUE, false, DEFAULT_INVAL_VALUE, false, specifyTokenId, false, false, true); + StartAbilityWrapParam startAbilityWrapParam = { + want, callerToken, DEFAULT_INVAL_VALUE, false, DEFAULT_INVAL_VALUE, false, specifyTokenId, false, false, true }; + int32_t ret = StartAbilityWrap(startAbilityWrapParam); if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "StartAbilityOnlyUIAbility error:%{public}d", ret); } @@ -936,8 +941,9 @@ int AbilityManagerService::StartAbilityAsCallerDetails(const Want &want, const s callerPkg.c_str(), targetPkg.c_str()); AbilityUtil::AddAbilityJumpRuleToBms(callerPkg, targetPkg, GetUserId()); } - int32_t ret = StartAbilityWrap(newWant, callerToken, requestCode, false, userId, true, - 0, false, isImplicit, false); + StartAbilityWrapParam startAbilityWrapParam = { + newWant, callerToken, requestCode, false, userId, true, 0, false, isImplicit, false }; + int32_t ret = StartAbilityWrap(startAbilityWrapParam); if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "start ability as caller failed:%{public}d", ret); } @@ -1010,25 +1016,26 @@ bool AbilityManagerService::StartAbilityInChain(StartAbilityParams ¶ms, int return true; } -int AbilityManagerService::StartAbilityWrap(const Want &want, const sptr &callerToken, - int requestCode, bool isPendingWantCaller, int32_t userId, bool isStartAsCaller, uint32_t specifyToken, - bool isForegroundToRestartApp, bool isImplicit, bool isUIAbilityOnly) +int AbilityManagerService::StartAbilityWrap(const StartAbilityWrapParam &startAbilityWrapParam) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); - StartAbilityParams startParams(const_cast(want)); - startParams.callerToken = callerToken; - startParams.userId = userId; - startParams.requestCode = requestCode; - startParams.isStartAsCaller = isStartAsCaller; - startParams.SetValidUserId(GetValidUserId(userId)); + StartAbilityParams startParams(const_cast(startAbilityWrapParam.want)); + startParams.callerToken = startAbilityWrapParam.callerToken; + startParams.userId = startAbilityWrapParam.userId; + startParams.requestCode = startAbilityWrapParam.requestCode; + startParams.isStartAsCaller = startAbilityWrapParam.isStartAsCaller; + startParams.SetValidUserId(GetValidUserId(startAbilityWrapParam.userId)); int result = ERR_OK; if (StartAbilityInChain(startParams, result)) { return result; } - return StartAbilityInner(want, callerToken, requestCode, isPendingWantCaller, userId, isStartAsCaller, specifyToken, - isForegroundToRestartApp, isImplicit, isUIAbilityOnly); + return StartAbilityInner(startAbilityWrapParam.want, startAbilityWrapParam.callerToken, + startAbilityWrapParam.requestCode, startAbilityWrapParam.isPendingWantCaller, startAbilityWrapParam.userId, + startAbilityWrapParam.isStartAsCaller, startAbilityWrapParam.specifyTokenId, + startAbilityWrapParam.isForegroundToRestartApp, startAbilityWrapParam.isImplicit, + startAbilityWrapParam.isUIAbilityOnly, startAbilityWrapParam.opt); } void AbilityManagerService::SetReserveInfo(const std::string &linkString, AbilityRequest& abilityRequest) @@ -1169,7 +1176,7 @@ void AbilityManagerService::CheckExtensionRateLimit() int AbilityManagerService::StartAbilityInner(const Want &want, const sptr &callerToken, int requestCode, bool isPendingWantCaller, int32_t userId, bool isStartAsCaller, uint32_t specifyTokenId, - bool isForegroundToRestartApp, bool isImplicit, bool isUIAbilityOnly) + bool isForegroundToRestartApp, bool isImplicit, bool isUIAbilityOnly, const AAFwk::OpenLinkOptions &opt) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); if (!isStartAsCaller || isImplicit) { @@ -1282,6 +1289,7 @@ int AbilityManagerService::StartAbilityInner(const Want &want, const sptrGetUIExtensionSourceToken(callerToken); UpdateCallerInfoUtil::GetInstance().UpdateAsCallerSourceInfo(newWant, asCallerSourceToken, callerToken); - return StartAbilityWrap(newWant, callerToken, requestCode, false, userId, true); + StartAbilityWrapParam startAbilityWrapParam = { newWant, callerToken, requestCode, false, userId, true }; + return StartAbilityWrap(startAbilityWrapParam); } int AbilityManagerService::StartAbilityForResultAsCaller(const Want &want, const StartOptions &startOptions, @@ -12310,7 +12319,8 @@ int32_t AbilityManagerService::StartAbilityWithInsightIntent(const Want &want, i AbilityUtil::RemoveInstanceKey(const_cast(want)); EventInfo eventInfo = BuildEventInfo(want, userId); SendAbilityEvent(EventName::START_ABILITY, HiSysEventType::BEHAVIOR, eventInfo); - int32_t ret = StartAbilityWrap(want, nullptr, requestCode, false, userId); + StartAbilityWrapParam startAbilityWrapParam = { want, nullptr, requestCode, false, userId }; + int32_t ret = StartAbilityWrap(startAbilityWrapParam); if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "StartAbilityError:%{public}d", ret); } @@ -13069,7 +13079,9 @@ int32_t AbilityManagerService::RestartApp(const AAFwk::Want &want, bool isAppRec (const_cast(want)).SetParam(AAFwk::Want::PARAM_APP_CLONE_INDEX_KEY, processInfo.appCloneIndex); (const_cast(want)).SetParam(AAFwk::Want::APP_INSTANCE_KEY, processInfo.instanceKey); (const_cast(want)).RemoveParam(Want::CREATE_APP_INSTANCE_KEY); - result = StartAbilityWrap(want, nullptr, DEFAULT_INVAL_VALUE, false, DEFAULT_INVAL_VALUE, false, 0, true); + StartAbilityWrapParam startAbilityWrapParam = { + want, nullptr, DEFAULT_INVAL_VALUE, false, DEFAULT_INVAL_VALUE, false, 0, true }; + result = StartAbilityWrap(startAbilityWrapParam); if (result != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "startAbility error"); return result; @@ -14049,13 +14061,15 @@ ErrCode AbilityManagerService::IntentOpenLinkInner(const std::shared_ptr callerToken, - int32_t userId, int32_t requestCode) + int32_t userId, int32_t requestCode, bool hideFailureTipDialog) { - return OpenLinkInner(want, callerToken, userId, requestCode, true); + OpenLinkOptions openLinkOptions; + openLinkOptions.SetHideFailureTipDialog(hideFailureTipDialog); + return OpenLinkInner(want, callerToken, userId, requestCode, true, openLinkOptions); } ErrCode AbilityManagerService::OpenLinkInner(const Want& want, sptr callerToken, - int32_t userId, int32_t requestCode, bool removeInsightIntentFlag) + int32_t userId, int32_t requestCode, bool removeInsightIntentFlag, const AAFwk::OpenLinkOptions &opt) { if (AppUtils::GetInstance().IsForbidStart()) { TAG_LOGW(AAFwkTag::ABILITYMGR, "forbid start: %{public}s", want.GetElement().GetBundleName().c_str()); @@ -14067,33 +14081,33 @@ ErrCode AbilityManagerService::OpenLinkInner(const Want& want, sptr(want)); std::string callerBundleName; Want convertedWant = want; - if (!WantUtils::IsShortUrl(want) || - WantUtils::GetCallerBundleName(callerBundleName) != ERR_OK) { + TAG_LOGD(AAFwkTag::ABILITYMGR, "openLinkOptions hideFailureTipDialog: %{public}d", opt.GetHideFailureTipDialog()); + if (!WantUtils::IsShortUrl(want) || WantUtils::GetCallerBundleName(callerBundleName) != ERR_OK) { TAG_LOGI(AAFwkTag::ABILITYMGR, "start ability by default"); - int retCode = StartAbilityWithRemoveIntentFlag(want, callerToken, userId, requestCode, removeInsightIntentFlag); + int retCode = StartAbilityWithRemoveIntentFlag( + want, callerToken, userId, requestCode, removeInsightIntentFlag, opt); CHECK_RET_RETURN_RET(retCode, "startAbility failed"); return ERR_OPEN_LINK_START_ABILITY_DEFAULT_OK; } - TAG_LOGI(AAFwkTag::ABILITYMGR, "callerBundleName=%{public}s", callerBundleName.c_str()); convertedWant.SetParam(Want::PARAM_RESV_CALLER_BUNDLE_NAME, callerBundleName); uint32_t targetType = TARGET_TYPE_INIT; if (WantUtils::ConvertToExplicitWant(convertedWant, targetType) != ERR_OK) { TAG_LOGI(AAFwkTag::ABILITYMGR, "ConvertToExplicitWant fail. start ability by default"); - int retCode = StartAbilityWithRemoveIntentFlag(want, callerToken, userId, requestCode, removeInsightIntentFlag); + int retCode = StartAbilityWithRemoveIntentFlag(want, callerToken, userId, requestCode, + removeInsightIntentFlag, opt); CHECK_RET_RETURN_RET(retCode, "startAbility failed"); return ERR_OPEN_LINK_START_ABILITY_DEFAULT_OK; } - if (WantUtils::IsNormalApp(targetType)) { int retCode = StartAbilityWithRemoveIntentFlag(convertedWant, callerToken, userId, requestCode, - removeInsightIntentFlag); + removeInsightIntentFlag, opt); CHECK_RET_RETURN_RET(retCode, "startAbility failed"); return ERR_OPEN_LINK_START_ABILITY_DEFAULT_OK; } if (WantUtils::IsAtomicService(targetType)) { return OpenLinkFreeInstallAtomicService(convertedWant, want, callerToken, userId, requestCode, - removeInsightIntentFlag); + removeInsightIntentFlag, opt); } bool curAppLinkingOnlyFlag = convertedWant.GetBoolParam(APP_LINKING_ONLY, false); TAG_LOGD(AAFwkTag::ABILITYMGR, "openLink not specific app or atomicService. AppLinkingOnly: %{public}d", @@ -14102,19 +14116,19 @@ ErrCode AbilityManagerService::OpenLinkInner(const Want& want, sptr callerToken, int32_t userId, int32_t requestCode, - bool removeInsightIntentFlag) + bool removeInsightIntentFlag, const AAFwk::OpenLinkOptions &opt) { if (freeInstallManager_ == nullptr) { TAG_LOGI(AAFwkTag::ABILITYMGR, "freeInstallManager_ nullptr. start ability by default"); auto retCode = StartAbilityWithRemoveIntentFlag(originalWant, callerToken, userId, requestCode, - removeInsightIntentFlag); + removeInsightIntentFlag, opt); CHECK_RET_RETURN_RET(retCode, "startAbility failed"); return ERR_OPEN_LINK_START_ABILITY_DEFAULT_OK; } @@ -14133,7 +14147,7 @@ int32_t AbilityManagerService::OpenLinkFreeInstallAtomicService(Want &convertedW } TAG_LOGI(AAFwkTag::ABILITYMGR, "start ability by default"); retCode = StartAbilityWithRemoveIntentFlag(originalWant, callerToken, userId, requestCode, - removeInsightIntentFlag); + removeInsightIntentFlag, opt); CHECK_RET_RETURN_RET(retCode, "StartAbility failed"); return ERR_OPEN_LINK_START_ABILITY_DEFAULT_OK; } diff --git a/services/abilitymgr/src/ability_manager_stub.cpp b/services/abilitymgr/src/ability_manager_stub.cpp index e5d8a75a12ed859921d589b4c6a60b40b98aafc7..72bf2dabdb81ac60c7eb4e07fda589104e73f3c7 100644 --- a/services/abilitymgr/src/ability_manager_stub.cpp +++ b/services/abilitymgr/src/ability_manager_stub.cpp @@ -4356,8 +4356,8 @@ int32_t AbilityManagerStub::OpenLinkInner(MessageParcel &data, MessageParcel &re sptr callerToken = data.ReadRemoteObject(); int32_t userId = data.ReadInt32(); int requestCode = data.ReadInt32(); - - int32_t result = OpenLink(*want, callerToken, userId, requestCode); + bool hideFailureTipDialog = data.ReadBool(); + int32_t result = OpenLink(*want, callerToken, userId, requestCode, hideFailureTipDialog); if (result != NO_ERROR && result != ERR_OPEN_LINK_START_ABILITY_DEFAULT_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "openLink fail"); } diff --git a/services/abilitymgr/src/implicit_start_processor.cpp b/services/abilitymgr/src/implicit_start_processor.cpp index 64e0cd7c02e3568749ac6897fe13f5d87e72588b..45271a9d15583f6c75692f7853b8b6fc9e1d2e74 100644 --- a/services/abilitymgr/src/implicit_start_processor.cpp +++ b/services/abilitymgr/src/implicit_start_processor.cpp @@ -185,8 +185,12 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_ if (want.GetBoolParam("isCreateAppGallerySelector", false)) { want.RemoveParam("isCreateAppGallerySelector"); bool needGrantUriPermission = true; - DialogSessionManager::GetInstance().CreateImplicitSelectorModalDialog(request, want, userId, - dialogAppInfos, needGrantUriPermission); + TAG_LOGD(AAFwkTag::ABILITYMGR, "openLinkOptions hideFailureTipDialog: %{public}d", + request.openLinkOptions.GetHideFailureTipDialog()); + if (!request.openLinkOptions.GetHideFailureTipDialog()) { + DialogSessionManager::GetInstance().CreateImplicitSelectorModalDialog(request, want, userId, + dialogAppInfos, needGrantUriPermission); + } return ERR_IMPLICIT_START_ABILITY_FAIL; } TAG_LOGE(AAFwkTag::ABILITYMGR, "failed, show tips dialog"); @@ -782,8 +786,9 @@ int32_t ImplicitStartProcessor::ImplicitStartAbilityInner(const Want &targetWant targetWant, request.callerToken, userId, request.extensionType); break; default: - result = abilityMgr->StartAbilityWrap( - targetWant, request.callerToken, request.requestCode, false, userId, false, 0, false, true); + StartAbilityWrapParam startAbilityWrapParam = { + targetWant, request.callerToken, request.requestCode, false, userId, false, 0, false, true }; + result = abilityMgr->StartAbilityWrap(startAbilityWrapParam); break; } diff --git a/services/abilitymgr/src/open_link/open_link_options.cpp b/services/abilitymgr/src/open_link/open_link_options.cpp index b47db5d3cb5922ffdf3f3d586ad1e41eeab25dc2..bf8c5bef83e77a6f1b457d99c9a774d431143df1 100644 --- a/services/abilitymgr/src/open_link/open_link_options.cpp +++ b/services/abilitymgr/src/open_link/open_link_options.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -20,6 +20,7 @@ namespace AAFwk { OpenLinkOptions::OpenLinkOptions(const OpenLinkOptions &other) { appLinkingOnly_ = other.appLinkingOnly_; + hideFailureTipDialog_ = other.hideFailureTipDialog_; parameters_ = other.parameters_; } @@ -27,6 +28,7 @@ OpenLinkOptions &OpenLinkOptions::operator=(const OpenLinkOptions &other) { if (this != &other) { appLinkingOnly_ = other.appLinkingOnly_; + hideFailureTipDialog_ = other.hideFailureTipDialog_; parameters_ = other.parameters_; } return *this; @@ -59,7 +61,12 @@ bool OpenLinkOptions::ReadFromParcel(Parcel &parcel) if (!parcel.ReadBool(appLinkingOnly)) { return false; } + bool hideFailureTipDialog; + if (!parcel.ReadBool(hideFailureTipDialog)) { + return false; + } SetAppLinkingOnly(appLinkingOnly); + SetHideFailureTipDialog(hideFailureTipDialog); if (!ReadParameters(parcel)) { return false; @@ -107,6 +114,10 @@ bool OpenLinkOptions::Marshalling(Parcel &parcel) const if (!parcel.WriteBool(GetAppLinkingOnly())) { return false; } + // write GetHideFailureTipDialog + if (!parcel.WriteBool(GetHideFailureTipDialog())) { + return false; + } // write parameters if (!WriteParameters(GetParameters(), parcel)) { return false; @@ -125,6 +136,16 @@ bool OpenLinkOptions::GetAppLinkingOnly() const return appLinkingOnly_; } +void OpenLinkOptions::SetHideFailureTipDialog(bool hideFailureTipDialog) +{ + hideFailureTipDialog_ = hideFailureTipDialog; +} + +bool OpenLinkOptions::GetHideFailureTipDialog() const +{ + return hideFailureTipDialog_; +} + void OpenLinkOptions::SetParameters(WantParams parameters) { parameters_ = parameters; diff --git a/test/fuzztest/abilityappdebugmanager_fuzzer/BUILD.gn b/test/fuzztest/abilityappdebugmanager_fuzzer/BUILD.gn index ed4f64e3b8a9260418a81023cdebf7d6a3d93691..890c3360e7335838c5aa0a5f4e48927fc7c0fafb 100644 --- a/test/fuzztest/abilityappdebugmanager_fuzzer/BUILD.gn +++ b/test/fuzztest/abilityappdebugmanager_fuzzer/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -38,6 +38,7 @@ ohos_fuzztest("AbilityAppDebugManagerFuzzTest") { configs = [ "${ability_runtime_innerkits_path}/ability_manager:ability_manager_public_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_services_path}/appmgr:libappms", "${ability_runtime_services_path}/common:task_handler_wrap", diff --git a/test/fuzztest/abilityappdebugmanagerfirst_fuzzer/BUILD.gn b/test/fuzztest/abilityappdebugmanagerfirst_fuzzer/BUILD.gn index a2895e9393a7726118bc257b6ad117ea3ef62db3..8a634b0c67b6deb46f05e278f2541f4f1b020c69 100644 --- a/test/fuzztest/abilityappdebugmanagerfirst_fuzzer/BUILD.gn +++ b/test/fuzztest/abilityappdebugmanagerfirst_fuzzer/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -38,6 +38,7 @@ ohos_fuzztest("AbilityAppDebugManagerFirstFuzzTest") { configs = [ "${ability_runtime_innerkits_path}/ability_manager:ability_manager_public_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_services_path}/appmgr:libappms", "${ability_runtime_services_path}/common:task_handler_wrap", diff --git a/test/fuzztest/screenunlockinterceptor_fuzzer/BUILD.gn b/test/fuzztest/screenunlockinterceptor_fuzzer/BUILD.gn index b34ae91de409eb7e668d9bf0b1943090cee6c562..8ee773d6f1becdd82b11f51838505778c44e0912 100644 --- a/test/fuzztest/screenunlockinterceptor_fuzzer/BUILD.gn +++ b/test/fuzztest/screenunlockinterceptor_fuzzer/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -57,6 +57,7 @@ ohos_fuzztest("ScreenUnlockInterceptorFuzzTest") { cflags += [ "-DBINDER_IPC_32BIT" ] } deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/appmgr:libappms", diff --git a/test/fuzztest/startotherappinterceptor_fuzzer/BUILD.gn b/test/fuzztest/startotherappinterceptor_fuzzer/BUILD.gn index 62f129d7d9f7a0adfbee70a16e1712b2f7b9e9e5..ff40a5522fd315880ea65ea009d1e740b71524e8 100644 --- a/test/fuzztest/startotherappinterceptor_fuzzer/BUILD.gn +++ b/test/fuzztest/startotherappinterceptor_fuzzer/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -55,6 +55,7 @@ ohos_fuzztest("StartOtherappinterceptorFuzzTest") { cflags += [ "-DBINDER_IPC_32BIT" ] } deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/moduletest/call_module_test/BUILD.gn b/test/moduletest/call_module_test/BUILD.gn index afd91bca7acfadffe2df0ba8d49cfdc0fd364614..a5aea1008803a4e3d63303ae1bd4d363b28f0fd3 100644 --- a/test/moduletest/call_module_test/BUILD.gn +++ b/test/moduletest/call_module_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -26,6 +26,7 @@ ohos_moduletest("call_ability_service_module_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/moduletest/ipc_ability_mgr_test/BUILD.gn b/test/moduletest/ipc_ability_mgr_test/BUILD.gn index a111c4b3aa0a76cab0e2faeb553675345bc07d1d..ca61e88f054b7aec462393df1727195ec0a9761e 100644 --- a/test/moduletest/ipc_ability_mgr_test/BUILD.gn +++ b/test/moduletest/ipc_ability_mgr_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2024 Huawei Device Co., Ltd. +# Copyright (c) 2021-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -29,6 +29,7 @@ ohos_moduletest("IpcAbilityMgrServiceModuleTest") { cflags += [ "-DBINDER_IPC_32BIT" ] } deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:perm_verification", diff --git a/test/moduletest/on_new_want_module_test/BUILD.gn b/test/moduletest/on_new_want_module_test/BUILD.gn index 8479502127a6775a96135b4db63bacc7c2f02d10..3cad2a422277b33db01f5078652bf6569769f830 100644 --- a/test/moduletest/on_new_want_module_test/BUILD.gn +++ b/test/moduletest/on_new_want_module_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -26,6 +26,7 @@ ohos_moduletest("on_new_want_module_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/ability_manager_service_fourth_test/BUILD.gn b/test/unittest/ability_manager_service_fourth_test/BUILD.gn index a4d09d987de94a3bf363b27edb405c0b74669ff0..f9d3ecb37c165cdb48c69535110eef41145ed993 100644 --- a/test/unittest/ability_manager_service_fourth_test/BUILD.gn +++ b/test/unittest/ability_manager_service_fourth_test/BUILD.gn @@ -56,6 +56,7 @@ ohos_unittest("ability_manager_service_fourth_test") { "${ability_runtime_services_path}/abilitymgr/src/exit_reason.cpp", "${ability_runtime_services_path}/abilitymgr/src/insight_intent/insight_intent_execute_manager.cpp", "${ability_runtime_services_path}/abilitymgr/src/modal_system_dialog/modal_system_dialog_ui_extension.cpp", + "${ability_runtime_services_path}/abilitymgr/src/open_link/open_link_options.cpp", "${ability_runtime_services_path}/abilitymgr/src/utils/ability_event_util.cpp", "${ability_runtime_services_path}/abilitymgr/src/utils/modal_system_dialog_util.cpp", "${ability_runtime_services_path}/common/src/ffrt_task_handler_wrap.cpp", diff --git a/test/unittest/ability_manager_service_tenth_test/BUILD.gn b/test/unittest/ability_manager_service_tenth_test/BUILD.gn index ae432f006ab9c1de403030d2455176f7780ac770..09eb422bc64b0d9a16aec811df39640f3a5df2d0 100644 --- a/test/unittest/ability_manager_service_tenth_test/BUILD.gn +++ b/test/unittest/ability_manager_service_tenth_test/BUILD.gn @@ -40,6 +40,7 @@ ohos_unittest("ability_manager_service_tenth_test") { "${ability_runtime_path}/services/abilitymgr/src/ability_auto_startup_service.cpp", "${ability_runtime_path}/services/abilitymgr/src/auto_startup_info.cpp", "${ability_runtime_services_path}/abilitymgr/src/ability_connect_callback_stub.cpp", + "${ability_runtime_services_path}/abilitymgr/src/open_link/open_link_options.cpp", "${ability_runtime_test_path}/mock/task_handler_wrap_mock/src/mock_task_handler_wrap.cpp", "ability_manager_service_tenth_test.cpp", ] diff --git a/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp b/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp index 5ef97093c07127ee2bf56af65459d16485e9916b..2ba1351f9710ed956957b3ee1430193fc7a10e74 100644 --- a/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp +++ b/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp @@ -22,6 +22,7 @@ #include "ability_connection.h" #include "ability_start_setting.h" #include "recovery_param.h" +#include "start_ability_utils.h" #undef private #undef protected @@ -1641,8 +1642,9 @@ HWTEST_F(AbilityManagerServiceThirdTest, StartAbilityWrap_001, TestSize.Level1) uint32_t specifyToken = 0; bool isForegroundToRestartApp = true; bool isImplicit = true; - auto result = abilityMs->StartAbilityWrap(want, callerToken, requestCode, false, userId, isStartAsCaller, - specifyToken, isForegroundToRestartApp, isImplicit); + StartAbilityWrapParam startAbilityWrapParam = { want, callerToken, requestCode, false, userId, isStartAsCaller, + specifyToken, isForegroundToRestartApp, isImplicit }; + auto result = abilityMs->StartAbilityWrap(startAbilityWrapParam); EXPECT_EQ(result, ERR_NULL_INTERCEPTOR_EXECUTER); } diff --git a/test/unittest/ability_manager_service_twelfth_test/BUILD.gn b/test/unittest/ability_manager_service_twelfth_test/BUILD.gn index 106783e490d1b1f75de52d6bd14c7d38a3bf844c..1eef84f55d8001e9f65bdfa05364f680185ebb33 100644 --- a/test/unittest/ability_manager_service_twelfth_test/BUILD.gn +++ b/test/unittest/ability_manager_service_twelfth_test/BUILD.gn @@ -59,6 +59,7 @@ ohos_unittest("ability_manager_service_twelfth_test") { "${ability_runtime_services_path}/abilitymgr/src/exit_reason.cpp", "${ability_runtime_services_path}/abilitymgr/src/insight_intent/insight_intent_execute_manager.cpp", "${ability_runtime_services_path}/abilitymgr/src/modal_system_dialog/modal_system_dialog_ui_extension.cpp", + "${ability_runtime_services_path}/abilitymgr/src/open_link/open_link_options.cpp", "${ability_runtime_services_path}/abilitymgr/src/utils/ability_event_util.cpp", "${ability_runtime_services_path}/abilitymgr/src/utils/modal_system_dialog_util.cpp", "${ability_runtime_services_path}/common/src/ffrt_task_handler_wrap.cpp", diff --git a/test/unittest/ability_timeout_test/BUILD.gn b/test/unittest/ability_timeout_test/BUILD.gn index 7b49789e40844e5e37e76f12ea35650c3066bf54..f5668731507d82ea18434a0eab9c96f77eaf5ee7 100644 --- a/test/unittest/ability_timeout_test/BUILD.gn +++ b/test/unittest/ability_timeout_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -26,6 +26,7 @@ ohos_unittest("ability_timeout_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/app_mgr_client_first_test/BUILD.gn b/test/unittest/app_mgr_client_first_test/BUILD.gn index dc867934d19e635bed8856a6930cf31e1a86d73d..40afe6c0bc5a773fe07b14d4d4f512173872baa5 100644 --- a/test/unittest/app_mgr_client_first_test/BUILD.gn +++ b/test/unittest/app_mgr_client_first_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -40,6 +40,7 @@ ohos_unittest("app_mgr_client_first_test") { ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:perm_verification", ] diff --git a/test/unittest/app_mgr_client_test/BUILD.gn b/test/unittest/app_mgr_client_test/BUILD.gn index 3066eaf37bb1eb302ec80dd37eb146f710ac1ff8..ea2e8fb595faef79e3a3984d83326e5ecca143c2 100644 --- a/test/unittest/app_mgr_client_test/BUILD.gn +++ b/test/unittest/app_mgr_client_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -40,6 +40,7 @@ ohos_unittest("AppMgrClientTest") { ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:perm_verification", ] diff --git a/test/unittest/app_running_manager_fourth_test/BUILD.gn b/test/unittest/app_running_manager_fourth_test/BUILD.gn index 8272bd4e7998e2afd509958fc48b8eaff83492d6..5fcf54e4408f638b900d9fbb8050d7909933b266 100644 --- a/test/unittest/app_running_manager_fourth_test/BUILD.gn +++ b/test/unittest/app_running_manager_fourth_test/BUILD.gn @@ -31,6 +31,7 @@ ohos_unittest("app_running_manager_fourth_test") { sources = [ "app_running_manager_fourth_test.cpp" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/dialog_session_manager_test/BUILD.gn b/test/unittest/dialog_session_manager_test/BUILD.gn index d24f472d80e9f598739517978ca3a53fe905cdb5..b8dfc573a77b95bfb75d19a0ab03d8689c157489 100644 --- a/test/unittest/dialog_session_manager_test/BUILD.gn +++ b/test/unittest/dialog_session_manager_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -48,6 +48,7 @@ ohos_unittest("dialog_session_manager_test") { cflags = [] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/dlp_utils_test/BUILD.gn b/test/unittest/dlp_utils_test/BUILD.gn index dbfc9fee6adb72127e7db586e1bfd1684deb56c5..8a399533b1b513695dbbc615658fe8fb17faadf4 100644 --- a/test/unittest/dlp_utils_test/BUILD.gn +++ b/test/unittest/dlp_utils_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -24,6 +24,7 @@ ohos_unittest("dlp_utils_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:perm_verification", ] diff --git a/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp b/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp index b8a005ca3b88fbd58d64c33506811844496b3b8e..d307fa475e36b3c19e83d41ac77a68cd252e16fe 100644 --- a/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp +++ b/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp @@ -30,6 +30,7 @@ #include "mock_context.h" #include "mock_lifecycle_observer.h" #include "mock_serviceability_manager_service.h" +#include "open_link_options.h" #include "scene_board_judgement.h" #include "session/host/include/session.h" #include "sys_mgr_client.h" @@ -1850,6 +1851,23 @@ HWTEST_F(AbilityContextImplTest, Ability_Context_Impl_OpenLink_0100, Function | EXPECT_EQ(context_->GetRestoreEnabled(), true); } +/** + * @tc.number: Ability_Context_Impl_OpenLink_0200 + * @tc.name: OpenLink + * @tc.desc: OpenLink OpenLinkOptions + */ +HWTEST_F(AbilityContextImplTest, Ability_Context_Impl_OpenLink_0200, Function | MediumTest | Level1) +{ + AAFwk::Want want; + int requestCode = 0; + AAFwk::OpenLinkOptions openLinkOptions; + bool hideFailureTipDialog = true; + EXPECT_FALSE(openLinkOptions.GetHideFailureTipDialog()); + openLinkOptions.SetHideFailureTipDialog(hideFailureTipDialog); + context_->OpenLink(want, requestCode, hideFailureTipDialog); + EXPECT_EQ(openLinkOptions.GetHideFailureTipDialog(), hideFailureTipDialog); +} + /** * @tc.number: Ability_Context_Impl_StartUIServiceExtensionAbility_0100 * @tc.name: StartUIServiceExtensionAbility diff --git a/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_test.cpp b/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_test.cpp index 3a130c3857300139cd4e44bc84bd48da045ed529..5ba08fe7b2c0d454243795b111a7ac647aba5d54 100644 --- a/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_test.cpp +++ b/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_test.cpp @@ -282,7 +282,7 @@ public: { return ERR_OK; } - virtual ErrCode OpenLink(const AAFwk::Want& want, int requestCode) + virtual ErrCode OpenLink(const AAFwk::Want& want, int requestCode, bool hideFailureTipDialog = false) { return ERR_OK; } diff --git a/test/unittest/frameworks_kits_ability_ability_runtime_test/mock_ability_manager_client.cpp b/test/unittest/frameworks_kits_ability_ability_runtime_test/mock_ability_manager_client.cpp index b46525e93d3065adb8f5a5deb98d7f7556b60099..3ad2ac25cdb0c1d450a53e56e96e3bab6c58c9db 100644 --- a/test/unittest/frameworks_kits_ability_ability_runtime_test/mock_ability_manager_client.cpp +++ b/test/unittest/frameworks_kits_ability_ability_runtime_test/mock_ability_manager_client.cpp @@ -998,7 +998,7 @@ ErrCode AbilityManagerClient::PreStartMission(const std::string& bundleName, con } ErrCode AbilityManagerClient::OpenLink(const Want& want, sptr callerToken, - int32_t userId, int requestCode) + int32_t userId, int requestCode, bool hideFailureTipDialog) { return ERR_OK; } diff --git a/test/unittest/free_install_manager_test/BUILD.gn b/test/unittest/free_install_manager_test/BUILD.gn index c98cea2784ff7acc074aea163bf1862830ebf657..189bccbcf7c3e96cc7f2e380ffd1b5628a80d9bb 100644 --- a/test/unittest/free_install_manager_test/BUILD.gn +++ b/test/unittest/free_install_manager_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -26,6 +26,7 @@ ohos_unittest("free_install_manager_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/free_install_manager_third_test/BUILD.gn b/test/unittest/free_install_manager_third_test/BUILD.gn index d8a0c953af74cdcc9a87aa668010b4c349460da0..51f4c893b54c1f122eb1260df6f621ecd4e8d683 100644 --- a/test/unittest/free_install_manager_third_test/BUILD.gn +++ b/test/unittest/free_install_manager_third_test/BUILD.gn @@ -41,6 +41,7 @@ ohos_unittest("free_install_manager_third_test") { ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/free_install_observer_manager_test/BUILD.gn b/test/unittest/free_install_observer_manager_test/BUILD.gn index 9db6381c5c8fb96ec87e09bd0ba20f0abd6686ae..d77c94b311224451de0542aecd83e3886cfdc1f1 100644 --- a/test/unittest/free_install_observer_manager_test/BUILD.gn +++ b/test/unittest/free_install_observer_manager_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -32,6 +32,8 @@ ohos_unittest("free_install_observer_manager_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", + "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/hidden_start_observer_manager_test/BUILD.gn b/test/unittest/hidden_start_observer_manager_test/BUILD.gn index f9a95f72ad13ad1361c4c74c2327c9a6709970d3..0cd8d26aef4e003cae894d0e2a57374f890153ae 100644 --- a/test/unittest/hidden_start_observer_manager_test/BUILD.gn +++ b/test/unittest/hidden_start_observer_manager_test/BUILD.gn @@ -35,6 +35,7 @@ ohos_unittest("hidden_start_observer_manager_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/kiosk_manager_test/BUILD.gn b/test/unittest/kiosk_manager_test/BUILD.gn index bc4ddad0a8f13f6862b3077032ca01986c09e5a1..5e478fde33d174add7aedcbdde33545322ed0aa2 100644 --- a/test/unittest/kiosk_manager_test/BUILD.gn +++ b/test/unittest/kiosk_manager_test/BUILD.gn @@ -77,6 +77,7 @@ ohos_unittest("kiosk_manager_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/ability_manager:ability_start_setting", "${ability_runtime_innerkits_path}/ability_manager:mission_info", "${ability_runtime_innerkits_path}/app_manager:app_manager", diff --git a/test/unittest/multi_instance_utils_second_test/BUILD.gn b/test/unittest/multi_instance_utils_second_test/BUILD.gn index 9d2e3cebea226588ffa2e0e1865268351f546de7..f6a45de7f14f0c3ba118d04cb041c037d77ca5fa 100644 --- a/test/unittest/multi_instance_utils_second_test/BUILD.gn +++ b/test/unittest/multi_instance_utils_second_test/BUILD.gn @@ -24,6 +24,7 @@ ohos_unittest("multi_instance_utils_second_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:app_util", ] diff --git a/test/unittest/multi_instance_utils_test/BUILD.gn b/test/unittest/multi_instance_utils_test/BUILD.gn index e7fd0321c607def260e9912c8a112f1bdec91058..85f9bd6fafdbf57994b46f023decb7d26868f735 100644 --- a/test/unittest/multi_instance_utils_test/BUILD.gn +++ b/test/unittest/multi_instance_utils_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -24,6 +24,7 @@ ohos_unittest("multi_instance_utils_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:app_util", ] diff --git a/test/unittest/running_infos_test/BUILD.gn b/test/unittest/running_infos_test/BUILD.gn index ed9338a50ec630e61ca35d851dd1ac986c2c5b95..8683e620bdcff66e1cdd620a34ead1471c5a664e 100644 --- a/test/unittest/running_infos_test/BUILD.gn +++ b/test/unittest/running_infos_test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -26,6 +26,7 @@ ohos_unittest("running_infos_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/uri_utils_test/BUILD.gn b/test/unittest/uri_utils_test/BUILD.gn index 438d6b81f2179e3bb5a915c7392cc6fe6d59db77..2b82d591a51ee9c5c255c3835fd15d8fd4652b33 100644 --- a/test/unittest/uri_utils_test/BUILD.gn +++ b/test/unittest/uri_utils_test/BUILD.gn @@ -42,6 +42,7 @@ ohos_unittest("uri_utils_test") { configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] deps = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/app_manager:app_manager", "${ability_runtime_innerkits_path}/uri_permission:uri_permission_mgr", "${ability_runtime_native_path}/appkit:appkit_manager_helper",