优化跳转选择框代码

Signed-off-by: xia <xialiangwei1@huawei.com>
This commit is contained in:
xia
2024-07-03 20:38:42 +08:00
parent 4493f186c2
commit bab3ff3471
39 changed files with 233 additions and 242 deletions
@@ -23,7 +23,7 @@
#include "js_dialog_session.h"
#include "js_runtime_utils.h"
#include "native_engine/native_engine.h"
#include "dialog_session_record.h"
#include "dialog_session_manager.h"
namespace OHOS {
namespace AppExecFwk {
@@ -76,7 +76,7 @@ ohos_shared_library("ability_manager") {
"${ability_runtime_services_path}/abilitymgr/src/acquire_share_data_callback_stub.cpp",
"${ability_runtime_services_path}/abilitymgr/src/auto_startup_info.cpp",
"${ability_runtime_services_path}/abilitymgr/src/caller_info.cpp",
"${ability_runtime_services_path}/abilitymgr/src/dialog_session_info.cpp",
"${ability_runtime_services_path}/abilitymgr/src/dialog_session/dialog_session_info.cpp",
"${ability_runtime_services_path}/abilitymgr/src/exit_reason.cpp",
"${ability_runtime_services_path}/abilitymgr/src/extension_running_info.cpp",
"${ability_runtime_services_path}/abilitymgr/src/insight_intent_execute_callback_proxy.cpp",
@@ -1035,7 +1035,7 @@ public:
std::shared_ptr<OHOS::Media::PixelMap> pixelMap);
ErrCode GetDialogSessionInfo(const std::string dialogSessionId, sptr<DialogSessionInfo> &info);
ErrCode SendDialogResult(const Want &want, const std::string dialogSessionId, bool isAllow);
ErrCode SendDialogResult(const Want &want, const std::string &dialogSessionId, bool isAllow);
#endif
/**
@@ -203,8 +203,7 @@ public:
const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = DEFAULT_INVAL_VALUE,
bool isSendDialogResult = false)
int requestCode = DEFAULT_INVAL_VALUE)
{
return 0;
}
@@ -942,7 +941,7 @@ public:
return 0;
}
virtual int SendDialogResult(const Want &want, const std::string dialogSessionId, bool isAllow)
virtual int SendDialogResult(const Want &want, const std::string &dialogSessionId, bool isAllow)
{
return 0;
}
+1
View File
@@ -32,6 +32,7 @@ config("abilityms_config") {
"include/",
"include/rdb/",
"include/screen_lock/",
"include/dialog_session/",
"${ability_runtime_innerkits_path}/ability_manager/include",
"${ability_runtime_services_path}/appdfr/include",
"${ability_runtime_innerkits_path}/app_manager/include",
+1 -1
View File
@@ -35,7 +35,7 @@ abilityms_files = [
"src/data_ability_caller_recipient.cpp",
"src/data_ability_manager.cpp",
"src/data_ability_record.cpp",
"src/dialog_session_record.cpp",
"src/dialog_session/dialog_session_manager.cpp",
"src/lifecycle_deal.cpp",
"src/ability_running_info.cpp",
"src/ecological_rule/ability_ecological_rule_mgr_service_param.cpp",
@@ -145,8 +145,7 @@ public:
const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = DEFAULT_INVAL_VALUE,
bool isSendDialogResult = false) override;
int requestCode = DEFAULT_INVAL_VALUE) override;
/**
* Starts a new ability using the original caller information.
@@ -732,7 +731,7 @@ public:
virtual int GetDialogSessionInfo(const std::string dialogSessionId, sptr<DialogSessionInfo> &info) override;
virtual int SendDialogResult(const Want &want, const std::string dialogSessionId, bool isAllow) override;
virtual int SendDialogResult(const Want &want, const std::string &dialogSessionId, bool isAllow) override;
virtual int RegisterAbilityFirstFrameStateObserver(const sptr<IAbilityFirstFrameStateObserver> &observer,
const std::string &targetBundleName) override;
@@ -66,7 +66,6 @@
#include "uri.h"
#include "user_controller.h"
#ifdef SUPPORT_GRAPHICS
#include "dialog_session_record.h"
#include "implicit_start_processor.h"
#include "system_dialog_scheduler.h"
#endif
@@ -254,8 +253,7 @@ public:
const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = DEFAULT_INVAL_VALUE,
bool isSendDialogResult = false) override;
int requestCode = DEFAULT_INVAL_VALUE) override;
/**
* Starts a new ability using the original caller information.
@@ -948,7 +946,6 @@ public:
int requestCode,
int32_t userId = DEFAULT_INVAL_VALUE,
bool isStartAsCaller = false,
bool isSendDialogResult = false,
uint32_t specifyTokenId = 0,
bool isForegroundToRestartApp = false,
bool isImplicit = false);
@@ -959,7 +956,6 @@ public:
int requestCode,
int32_t userId = DEFAULT_INVAL_VALUE,
bool isStartAsCaller = false,
bool isSendDialogResult = false,
uint32_t specifyTokenId = 0,
bool isForegroundToRestartApp = false,
bool isImplicit = false);
@@ -1032,7 +1028,6 @@ public:
sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = DEFAULT_INVAL_VALUE,
bool isSendDialogResult = false,
bool isImplicit = false);
int ImplicitStartAbilityAsCaller(
@@ -1040,8 +1035,7 @@ public:
const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = DEFAULT_INVAL_VALUE,
bool isSendDialogResult = false);
int requestCode = DEFAULT_INVAL_VALUE);
void OnAcceptWantResponse(const AAFwk::Want &want, const std::string &flag, int32_t requestId = 0);
void OnStartSpecifiedAbilityTimeoutResponse(const AAFwk::Want &want, int32_t requestId = 0);
@@ -1130,12 +1124,7 @@ public:
virtual int GetDialogSessionInfo(const std::string dialogSessionId,
sptr<DialogSessionInfo> &dialogSessionInfo) override;
bool GenerateDialogSessionRecord(AbilityRequest &abilityRequest, int32_t userId,
std::string &dialogSessionId, std::vector<DialogAppInfo> &dialogAppInfos, bool isSelector);
int CreateModalDialog(const Want &replaceWant, sptr<IRemoteObject> callerToken, std::string dialogSessionId);
virtual int SendDialogResult(const Want &want, const std::string dialogSessionId, bool isAllowed) override;
virtual int SendDialogResult(const Want &want, const std::string &dialogSessionId, bool isAllowed) override;
virtual int RegisterAbilityFirstFrameStateObserver(const sptr<IAbilityFirstFrameStateObserver> &observer,
const std::string &bundleName) override;
@@ -2330,7 +2319,6 @@ private:
void InitPrepareTerminateConfig();
std::shared_ptr<ImplicitStartProcessor> implicitStartProcessor_;
sptr<IWindowManagerServiceHandler> wmsHandler_;
std::shared_ptr<DialogSessionRecord> dialogSessionRecord_;
bool isAnimationEnabled_ = true; //only use on mission list
#endif
std::shared_ptr<AbilityInterceptorExecuter> interceptorExecuter_;
@@ -13,8 +13,8 @@
* limitations under the License.
*/
#ifndef OHOS_ABILITY_RUNTIME_DIALOG_SESSION_RECORD_H
#define OHOS_ABILITY_RUNTIME_DIALOG_SESSION_RECORD_H
#ifndef OHOS_ABILITY_RUNTIME_DIALOG_SESSION_MANAGEER_H
#define OHOS_ABILITY_RUNTIME_DIALOG_SESSION_MANAGEER_H
#include <list>
#include <unordered_map>
#include <string>
@@ -22,6 +22,7 @@
#include "cpp/mutex.h"
#include "dialog_session_info.h"
#include "json_serializer.h"
#include "nocopyable.h"
#include "parcel.h"
#include "refbase.h"
#include "system_dialog_scheduler.h"
@@ -37,17 +38,29 @@ struct DialogCallerInfo {
bool isSelector = false;
};
class DialogSessionRecord {
class DialogSessionManager {
public:
std::string GenerateDialogSessionId();
void SetDialogSessionInfo(const std::string dialogSessionId, sptr<DialogSessionInfo> &dilogSessionInfo,
std::shared_ptr<DialogCallerInfo> &dialogCallerInfo);
static DialogSessionManager &GetInstance();
~DialogSessionManager() = default;
sptr<DialogSessionInfo> GetDialogSessionInfo(const std::string dialogSessionId) const;
std::shared_ptr<DialogCallerInfo> GetDialogCallerInfo(const std::string dialogSessionId) const;
int SendDialogResult(const Want &want, const std::string &dialogSessionId, bool isAllowed);
int CreateJumpModalDialog(AbilityRequest &abilityRequest, int32_t userId, const Want &replaceWant);
int CreateSelectorModalDialog(AbilityRequest &abilityRequest, const Want &want, int32_t userId,
std::vector<DialogAppInfo> &dialogAppInfos);
private:
DialogSessionManager() = default;
std::string GenerateDialogSessionId();
void SetDialogSessionInfo(const std::string dialogSessionId, sptr<DialogSessionInfo> &dilogSessionInfo,
std::shared_ptr<DialogCallerInfo> &dialogCallerInfo);
void ClearDialogContext(const std::string dialogSessionId);
void ClearAllDialogContexts();
@@ -55,11 +68,14 @@ public:
bool GenerateDialogSessionRecord(AbilityRequest &abilityRequest, int32_t userId,
std::string &dialogSessionId, std::vector<DialogAppInfo> &dialogAppInfos, bool isSelector);
private:
int CreateModalDialogCommon(const Want &replaceWant, sptr<IRemoteObject> callerToken, std::string dialogSessionId);
mutable ffrt::mutex dialogSessionRecordLock_;
std::unordered_map<std::string, sptr<DialogSessionInfo>> dialogSessionInfoMap_;
std::unordered_map<std::string, std::shared_ptr<DialogCallerInfo>> dialogCallerInfoMap_;
DISALLOW_COPY_AND_MOVE(DialogSessionManager);
};
} // namespace AAFwk
} // namespace OHOS
#endif // OHOS_ABILITY_RUNTIME_DIALOG_SESSION_RECORD_H
#endif // OHOS_ABILITY_RUNTIME_DIALOG_SESSION_MANAGEER_H
@@ -62,9 +62,6 @@ public:
void ResetCallingIdentityAsCaller(int32_t tokenId);
int NotifyCreateModalDialog(AbilityRequest &abilityRequest, const Want &want, int32_t userId,
std::vector<DialogAppInfo> &dialogAppInfos);
void SetUriReservedFlag(const bool flag);
void SetUriReservedBundle(const std::string bundleName);
@@ -1338,7 +1338,7 @@ ErrCode AbilityManagerClient::GetDialogSessionInfo(const std::string dialogSessi
return abms->GetDialogSessionInfo(dialogSessionId, info);
}
ErrCode AbilityManagerClient::SendDialogResult(const Want &want, const std::string dialogSessionId, const bool isAllow)
ErrCode AbilityManagerClient::SendDialogResult(const Want &want, const std::string &dialogSessionId, const bool isAllow)
{
auto abms = GetAbilityManager();
CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
@@ -367,7 +367,7 @@ int AbilityManagerProxy::StartAbility(const Want &want, const StartOptions &star
}
int AbilityManagerProxy::StartAbilityAsCaller(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult)
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode)
{
MessageParcel data;
MessageParcel reply;
@@ -390,7 +390,6 @@ int AbilityManagerProxy::StartAbilityAsCaller(const Want &want, const sptr<IRemo
}
PROXY_WRITE_PARCEL_AND_RETURN_IF_FAIL(data, Int32, userId);
PROXY_WRITE_PARCEL_AND_RETURN_IF_FAIL(data, Int32, requestCode);
PROXY_WRITE_PARCEL_AND_RETURN_IF_FAIL(data, Bool, isSendDialogResult);
int error = SendRequest(AbilityManagerInterfaceCode::START_ABILITY_AS_CALLER_BY_TOKEN, data, reply, option);
if (error != NO_ERROR) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "Send request error: %{public}d", error);
@@ -3083,7 +3082,7 @@ int AbilityManagerProxy::GetDialogSessionInfo(const std::string dialogSessionId,
return reply.ReadInt32();
}
int AbilityManagerProxy::SendDialogResult(const Want &want, const std::string dialogSessionId, const bool isAllow)
int AbilityManagerProxy::SendDialogResult(const Want &want, const std::string &dialogSessionId, const bool isAllow)
{
MessageParcel data;
MessageParcel reply;
@@ -82,7 +82,6 @@
#include "mock_session_manager_service.h"
#include "modal_system_ui_extension.h"
#include "os_account_manager_wrapper.h"
#include "modal_system_ui_extension.h"
#include "parameters.h"
#include "permission_constants.h"
#include "process_options.h"
@@ -115,7 +114,7 @@
#include "utils/extension_permissions_util.h"
#include "utils/window_options_utils.h"
#ifdef SUPPORT_GRAPHICS
#include "dialog_session_record.h"
#include "dialog_session_manager.h"
#include "application_anr_listener.h"
#include "input_manager.h"
#include "ability_first_frame_state_observer_manager.h"
@@ -401,9 +400,6 @@ bool AbilityManagerService::Init()
InitDefaultRecoveryList();
abilityAutoStartupService_ = std::make_shared<AbilityRuntime::AbilityAutoStartupService>();
#ifdef SUPPORT_SCREEN
dialogSessionRecord_ = std::make_shared<DialogSessionRecord>();
#endif // SUPPORT_SCREEN
InitPushTask();
AbilityCacheManager::GetInstance().Init(AppUtils::GetInstance().GetLimitMaximumExtensionsPerDevice(),
AppUtils::GetInstance().GetLimitMaximumExtensionsPerProc());
@@ -760,20 +756,20 @@ int AbilityManagerService::StartAbilityByUIContentSession(const Want &want, cons
}
int AbilityManagerService::StartAbilityAsCaller(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult)
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode)
{
return StartAbilityAsCallerDetails(want, callerToken, asCallerSourceToken, userId, requestCode, isSendDialogResult);
return StartAbilityAsCallerDetails(want, callerToken, asCallerSourceToken, userId, requestCode);
}
int AbilityManagerService::ImplicitStartAbilityAsCaller(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult)
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode)
{
return StartAbilityAsCallerDetails(want, callerToken, asCallerSourceToken, userId,
requestCode, isSendDialogResult, true);
requestCode, true);
}
int AbilityManagerService::StartAbilityAsCallerDetails(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult, bool isImplicit)
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isImplicit)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
CHECK_CALLER_IS_SYSTEM_APP;
@@ -800,7 +796,7 @@ 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, userId, true, isSendDialogResult,
int32_t ret = StartAbilityWrap(newWant, callerToken, requestCode, userId, true,
0, false, isImplicit);
if (ret != ERR_OK) {
eventInfo.errCode = ret;
@@ -875,7 +871,7 @@ bool AbilityManagerService::StartAbilityInChain(StartAbilityParams &params, int
}
int AbilityManagerService::StartAbilityWrap(const Want &want, const sptr<IRemoteObject> &callerToken,
int requestCode, int32_t userId, bool isStartAsCaller, bool isSendDialogResult, uint32_t specifyToken,
int requestCode, int32_t userId, bool isStartAsCaller, uint32_t specifyToken,
bool isForegroundToRestartApp, bool isImplicit)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
@@ -892,7 +888,7 @@ int AbilityManagerService::StartAbilityWrap(const Want &want, const sptr<IRemote
}
return StartAbilityInner(want, callerToken,
requestCode, userId, isStartAsCaller, isSendDialogResult, specifyToken, isForegroundToRestartApp, isImplicit);
requestCode, userId, isStartAsCaller, specifyToken, isForegroundToRestartApp, isImplicit);
}
void AbilityManagerService::SetReserveInfo(const std::string &linkString)
@@ -1005,7 +1001,7 @@ int AbilityManagerService::CheckCallPermission(const Want& want, const AppExecFw
}
int AbilityManagerService::StartAbilityInner(const Want &want, const sptr<IRemoteObject> &callerToken,
int requestCode, int32_t userId, bool isStartAsCaller, bool isSendDialogResult, uint32_t specifyTokenId,
int requestCode, int32_t userId, bool isStartAsCaller, uint32_t specifyTokenId,
bool isForegroundToRestartApp, bool isImplicit)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
@@ -1037,9 +1033,10 @@ int AbilityManagerService::StartAbilityInner(const Want &want, const sptr<IRemot
AbilityUtil::RemoveWindowModeKey(const_cast<Want &>(want));
std::string dialogSessionId = want.GetStringParam("dialogSessionId");
isSendDialogResult = false;
bool isSendDialogResult = false;
#ifdef SUPPORT_SCREEN
if (!dialogSessionId.empty() && dialogSessionRecord_->GetDialogCallerInfo(dialogSessionId) != nullptr) {
if (!dialogSessionId.empty() &&
DialogSessionManager::GetInstance().GetDialogCallerInfo(dialogSessionId) != nullptr) {
isSendDialogResult = true;
}
#endif // SUPPORT_SCREEN
@@ -1179,19 +1176,12 @@ int AbilityManagerService::StartAbilityInner(const Want &want, const sptr<IRemot
TAG_LOGE(AAFwkTag::ABILITYMGR, "DoProcess failed or replaceWant not exist");
return result;
}
#ifdef SUPPORT_SCREEN
if (result != ERR_OK && isReplaceWantExist && !isSendDialogResult &&
callerBundleName != BUNDLE_NAME_DIALOG) {
std::string dialogSessionId;
#ifdef SUPPORT_SCREEN
std::vector<DialogAppInfo> dialogAppInfos(1);
if (GenerateDialogSessionRecord(abilityRequest, GetUserId(), dialogSessionId, dialogAppInfos, false)) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create dialog by ui extension");
return CreateModalDialog(newWant, callerToken, dialogSessionId);
}
#endif // SUPPORT_SCREEN
TAG_LOGE(AAFwkTag::ABILITYMGR, "create dialog by ui extension failed");
return INNER_ERR;
return DialogSessionManager::GetInstance().CreateJumpModalDialog(abilityRequest, GetUserId(), newWant);
}
#endif // SUPPORT_SCREEN
if (!AbilityUtil::IsSystemDialogAbility(abilityInfo.bundleName, abilityInfo.name)) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "PreLoadAppDataAbilities:%{public}s.", abilityInfo.bundleName.c_str());
@@ -1791,18 +1781,11 @@ int AbilityManagerService::StartAbilityForOptionInner(const Want &want, const St
TAG_LOGE(AAFwkTag::ABILITYMGR, "DoProcess failed or replaceWant not exist");
return result;
}
if (result != ERR_OK && isReplaceWantExist) {
std::string dialogSessionId;
#ifdef SUPPORT_SCREEN
std::vector<DialogAppInfo> dialogAppInfos(1);
if (GenerateDialogSessionRecord(abilityRequest, GetUserId(), dialogSessionId, dialogAppInfos, false)) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create dialog by ui extension");
return CreateModalDialog(newWant, callerToken, dialogSessionId);
}
#endif // SUPPORT_GRAPHICS
TAG_LOGE(AAFwkTag::ABILITYMGR, "create dialog by ui extension failed");
return INNER_ERR;
if (result != ERR_OK && isReplaceWantExist) {
return DialogSessionManager::GetInstance().CreateJumpModalDialog(abilityRequest, GetUserId(), newWant);
}
#endif // SUPPORT_GRAPHICS
abilityRequest.want.RemoveParam(SPECIFY_TOKEN_ID);
if (specifyTokenId > 0) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "Set specifyTokenId, the specifyTokenId is %{public}d.", specifyTokenId);
@@ -10209,8 +10192,7 @@ int AbilityManagerService::GetDialogSessionInfo(const std::string dialogSessionI
sptr<DialogSessionInfo> &dialogSessionInfo)
{
CHECK_CALLER_IS_SYSTEM_APP;
CHECK_POINTER_AND_RETURN(dialogSessionRecord_, ERR_INVALID_VALUE);
dialogSessionInfo = dialogSessionRecord_->GetDialogSessionInfo(dialogSessionId);
dialogSessionInfo = DialogSessionManager::GetInstance().GetDialogSessionInfo(dialogSessionId);
if (dialogSessionInfo) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "success");
return ERR_OK;
@@ -10219,83 +10201,10 @@ int AbilityManagerService::GetDialogSessionInfo(const std::string dialogSessionI
return INNER_ERR;
}
bool AbilityManagerService::GenerateDialogSessionRecord(AbilityRequest &abilityRequest, int32_t userId,
std::string &dialogSessionId, std::vector<DialogAppInfo> &dialogAppInfos, bool isSelector)
{
CHECK_POINTER_AND_RETURN(dialogSessionRecord_, ERR_INVALID_VALUE);
if (!isSelector && dialogAppInfos.size() == 1) {
dialogAppInfos.front().bundleName = abilityRequest.abilityInfo.bundleName;
dialogAppInfos.front().moduleName = abilityRequest.abilityInfo.moduleName;
dialogAppInfos.front().abilityName = abilityRequest.abilityInfo.name;
dialogAppInfos.front().abilityIconId = abilityRequest.abilityInfo.iconId;
dialogAppInfos.front().abilityLabelId = abilityRequest.abilityInfo.labelId;
dialogAppInfos.front().bundleIconId = abilityRequest.abilityInfo.applicationInfo.iconId;
dialogAppInfos.front().bundleLabelId = abilityRequest.abilityInfo.applicationInfo.labelId;
}
return dialogSessionRecord_->GenerateDialogSessionRecord(abilityRequest, userId,
dialogSessionId, dialogAppInfos, isSelector);
}
int AbilityManagerService::CreateModalDialog(const Want &replaceWant, sptr<IRemoteObject> callerToken,
std::string dialogSessionId)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
(const_cast<Want &>(replaceWant)).SetParam("dialogSessionId", dialogSessionId);
auto connection = std::make_shared<OHOS::Rosen::ModalSystemUiExtension>();
if (callerToken == nullptr) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for system");
(const_cast<Want &>(replaceWant)).SetParam(UIEXTENSION_MODAL_TYPE, 1);
return connection->CreateModalUIExtension(replaceWant) ? ERR_OK : INNER_ERR;
}
auto callerRecord = Token::GetAbilityRecordByToken(callerToken);
if (!callerRecord) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "callerRecord is nullptr.");
return ERR_INVALID_VALUE;
}
sptr<IRemoteObject> token;
int ret = IN_PROCESS_CALL(GetTopAbility(token));
if (ret != ERR_OK || token == nullptr) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for system");
(const_cast<Want &>(replaceWant)).SetParam(UIEXTENSION_MODAL_TYPE, 1);
return connection->CreateModalUIExtension(replaceWant) ? ERR_OK : INNER_ERR;
}
if (callerRecord->GetAbilityInfo().type == AppExecFwk::AbilityType::PAGE && token == callerToken) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for application");
return callerRecord->CreateModalUIExtension(replaceWant);
}
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for system");
(const_cast<Want &>(replaceWant)).SetParam(UIEXTENSION_MODAL_TYPE, 1);
return connection->CreateModalUIExtension(replaceWant) ? ERR_OK : INNER_ERR;
}
int AbilityManagerService::SendDialogResult(const Want &want, const std::string dialogSessionId, bool isAllowed)
int AbilityManagerService::SendDialogResult(const Want &want, const std::string &dialogSessionId, bool isAllowed)
{
CHECK_CALLER_IS_SYSTEM_APP;
CHECK_POINTER_AND_RETURN(dialogSessionRecord_, ERR_INVALID_VALUE);
if (!isAllowed) {
TAG_LOGI(AAFwkTag::ABILITYMGR, "user refuse to jump");
dialogSessionRecord_->ClearDialogContext(dialogSessionId);
return ERR_OK;
}
std::shared_ptr<DialogCallerInfo> dialogCallerInfo = dialogSessionRecord_->GetDialogCallerInfo(dialogSessionId);
if (dialogCallerInfo == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "dialog caller info is nullptr");
dialogSessionRecord_->ClearDialogContext(dialogSessionId);
return ERR_INVALID_VALUE;
}
auto targetWant = dialogCallerInfo->targetWant;
targetWant.SetElement(want.GetElement());
targetWant.SetParam("isSelector", dialogCallerInfo->isSelector);
targetWant.SetParam("dialogSessionId", dialogSessionId);
sptr<IRemoteObject> callerToken = dialogCallerInfo->callerToken;
int ret = StartAbilityAsCaller(targetWant, callerToken, nullptr, dialogCallerInfo->userId,
dialogCallerInfo->requestCode, true);
if (ret == ERR_OK) {
dialogSessionRecord_->ClearDialogContext(dialogSessionId);
}
return ret;
return DialogSessionManager::GetInstance().SendDialogResult(want, dialogSessionId, isAllowed);
}
#endif // SUPPORT_SCREEN
void AbilityManagerService::RemoveLauncherDeathRecipient(int32_t userId)
@@ -11233,19 +11142,12 @@ int AbilityManagerService::StartUIAbilityByPreInstallInner(sptr<SessionInfo> ses
TAG_LOGE(AAFwkTag::ABILITYMGR, "DoProcess failed or replaceWant not exist");
return result;
}
#ifdef SUPPORT_SCREEN
if (result != ERR_OK && isReplaceWantExist &&
callerBundleName != BUNDLE_NAME_DIALOG) {
std::string dialogSessionId;
#ifdef SUPPORT_SCREEN
std::vector<DialogAppInfo> dialogAppInfos(1);
if (GenerateDialogSessionRecord(abilityRequest, GetUserId(), dialogSessionId, dialogAppInfos, false)) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create dialog by ui extension");
return CreateModalDialog(newWant, callerToken, dialogSessionId);
}
#endif // SUPPORT_SCREEN
TAG_LOGE(AAFwkTag::ABILITYMGR, "create dialog by ui extension failed");
return INNER_ERR;
return DialogSessionManager::GetInstance().CreateJumpModalDialog(abilityRequest, GetUserId(), newWant);
}
#endif // SUPPORT_SCREEN
if (abilityInfo.type == AppExecFwk::AbilityType::SERVICE ||
abilityInfo.type == AppExecFwk::AbilityType::EXTENSION) {
@@ -1449,9 +1449,7 @@ int AbilityManagerStub::StartAbilityAsCallerByTokenInner(MessageParcel &data, Me
}
int32_t userId = data.ReadInt32();
int requestCode = data.ReadInt32();
bool isSendDialogResult = data.ReadBool();
int32_t result = StartAbilityAsCaller(*want, callerToken, asCallerSourceToken, userId, requestCode,
isSendDialogResult);
int32_t result = StartAbilityAsCaller(*want, callerToken, asCallerSourceToken, userId, requestCode);
reply.WriteInt32(result);
return NO_ERROR;
}
@@ -13,17 +13,19 @@
* limitations under the License.
*/
#include "dialog_session_record.h"
#include "dialog_session_manager.h"
#include <random>
#include <string>
#include <chrono>
#include "ability_manager_service.h"
#include "ability_record.h"
#include "ability_util.h"
#include "hilog_tag_wrapper.h"
#include "hilog_wrapper.h"
#include "hitrace_meter.h"
#include "int_wrapper.h"
#include "modal_system_ui_extension.h"
#include "parameters.h"
#include "string_wrapper.h"
#include "want_params_wrapper.h"
@@ -31,7 +33,17 @@
namespace OHOS {
namespace AAFwk {
using OHOS::AppExecFwk::BundleInfo;
std::string DialogSessionRecord::GenerateDialogSessionId()
namespace {
constexpr const char* UIEXTENSION_MODAL_TYPE = "ability.want.params.modalType";
}
DialogSessionManager &DialogSessionManager::GetInstance()
{
static DialogSessionManager instance;
return instance;
}
std::string DialogSessionManager::GenerateDialogSessionId()
{
auto timestamp = std::chrono::system_clock::now().time_since_epoch();
auto time = std::chrono::duration_cast<std::chrono::seconds>(timestamp).count();
@@ -51,7 +63,7 @@ std::string DialogSessionRecord::GenerateDialogSessionId()
return dialogSessionId;
}
void DialogSessionRecord::SetDialogSessionInfo(const std::string dialogSessionId,
void DialogSessionManager::SetDialogSessionInfo(const std::string dialogSessionId,
sptr<DialogSessionInfo> &dilogSessionInfo, std::shared_ptr<DialogCallerInfo> &dialogCallerInfo)
{
std::lock_guard<ffrt::mutex> guard(dialogSessionRecordLock_);
@@ -59,7 +71,7 @@ void DialogSessionRecord::SetDialogSessionInfo(const std::string dialogSessionId
dialogCallerInfoMap_[dialogSessionId] = dialogCallerInfo;
}
sptr<DialogSessionInfo> DialogSessionRecord::GetDialogSessionInfo(const std::string dialogSessionId) const
sptr<DialogSessionInfo> DialogSessionManager::GetDialogSessionInfo(const std::string dialogSessionId) const
{
std::lock_guard<ffrt::mutex> guard(dialogSessionRecordLock_);
auto it = dialogSessionInfoMap_.find(dialogSessionId);
@@ -70,7 +82,7 @@ sptr<DialogSessionInfo> DialogSessionRecord::GetDialogSessionInfo(const std::str
return nullptr;
}
std::shared_ptr<DialogCallerInfo> DialogSessionRecord::GetDialogCallerInfo(const std::string dialogSessionId) const
std::shared_ptr<DialogCallerInfo> DialogSessionManager::GetDialogCallerInfo(const std::string dialogSessionId) const
{
std::lock_guard<ffrt::mutex> guard(dialogSessionRecordLock_);
auto it = dialogCallerInfoMap_.find(dialogSessionId);
@@ -81,7 +93,7 @@ std::shared_ptr<DialogCallerInfo> DialogSessionRecord::GetDialogCallerInfo(const
return nullptr;
}
void DialogSessionRecord::ClearDialogContext(const std::string dialogSessionId)
void DialogSessionManager::ClearDialogContext(const std::string dialogSessionId)
{
std::lock_guard<ffrt::mutex> guard(dialogSessionRecordLock_);
auto it = dialogSessionInfoMap_.find(dialogSessionId);
@@ -95,14 +107,14 @@ void DialogSessionRecord::ClearDialogContext(const std::string dialogSessionId)
return;
}
void DialogSessionRecord::ClearAllDialogContexts()
void DialogSessionManager::ClearAllDialogContexts()
{
std::lock_guard<ffrt::mutex> guard(dialogSessionRecordLock_);
dialogSessionInfoMap_.clear();
dialogCallerInfoMap_.clear();
}
bool DialogSessionRecord::GenerateDialogSessionRecord(AbilityRequest &abilityRequest, int32_t userId,
bool DialogSessionManager::GenerateDialogSessionRecord(AbilityRequest &abilityRequest, int32_t userId,
std::string &dialogSessionId, std::vector<DialogAppInfo> &dialogAppInfos, bool isSelector)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
@@ -149,5 +161,106 @@ bool DialogSessionRecord::GenerateDialogSessionRecord(AbilityRequest &abilityReq
SetDialogSessionInfo(dialogSessionId, dialogSessionInfo, dialogCallerInfo);
return true;
}
int DialogSessionManager::SendDialogResult(const Want &want, const std::string &dialogSessionId, bool isAllowed)
{
if (!isAllowed) {
TAG_LOGI(AAFwkTag::ABILITYMGR, "user refuse to jump");
ClearDialogContext(dialogSessionId);
return ERR_OK;
}
std::shared_ptr<DialogCallerInfo> dialogCallerInfo = GetDialogCallerInfo(dialogSessionId);
if (dialogCallerInfo == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "dialog caller info is nullptr");
ClearDialogContext(dialogSessionId);
return ERR_INVALID_VALUE;
}
auto targetWant = dialogCallerInfo->targetWant;
targetWant.SetElement(want.GetElement());
targetWant.SetParam("isSelector", dialogCallerInfo->isSelector);
targetWant.SetParam("dialogSessionId", dialogSessionId);
sptr<IRemoteObject> callerToken = dialogCallerInfo->callerToken;
auto abilityMgr = DelayedSingleton<AbilityManagerService>::GetInstance();
if (!abilityMgr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "abilityMgr is nullptr.");
return INNER_ERR;
}
int ret = abilityMgr->StartAbilityAsCaller(targetWant, callerToken, callerToken, dialogCallerInfo->userId,
dialogCallerInfo->requestCode);
if (ret == ERR_OK) {
ClearDialogContext(dialogSessionId);
}
return ret;
}
int DialogSessionManager::CreateJumpModalDialog(AbilityRequest &abilityRequest, int32_t userId,
const Want &replaceWant)
{
std::string dialogSessionId;
std::vector<DialogAppInfo> dialogAppInfos(1);
dialogAppInfos.front().bundleName = abilityRequest.abilityInfo.bundleName;
dialogAppInfos.front().moduleName = abilityRequest.abilityInfo.moduleName;
dialogAppInfos.front().abilityName = abilityRequest.abilityInfo.name;
dialogAppInfos.front().abilityIconId = abilityRequest.abilityInfo.iconId;
dialogAppInfos.front().abilityLabelId = abilityRequest.abilityInfo.labelId;
dialogAppInfos.front().bundleIconId = abilityRequest.abilityInfo.applicationInfo.iconId;
dialogAppInfos.front().bundleLabelId = abilityRequest.abilityInfo.applicationInfo.labelId;
if (!GenerateDialogSessionRecord(abilityRequest, userId, dialogSessionId, dialogAppInfos, false)) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "generate dialog session record failed");
return INNER_ERR;
}
return CreateModalDialogCommon(replaceWant, abilityRequest.callerToken, dialogSessionId);
}
int DialogSessionManager::CreateSelectorModalDialog(AbilityRequest &abilityRequest, const Want &want, int32_t userId,
std::vector<DialogAppInfo> &dialogAppInfos)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
std::string dialogSessionId;
if (!GenerateDialogSessionRecord(abilityRequest, userId, dialogSessionId, dialogAppInfos, true)) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "generate dialog session record failed");
return INNER_ERR;
}
return CreateModalDialogCommon(want, abilityRequest.callerToken, dialogSessionId);
}
int DialogSessionManager::CreateModalDialogCommon(const Want &replaceWant, sptr<IRemoteObject> callerToken,
std::string dialogSessionId)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
(const_cast<Want &>(replaceWant)).SetParam("dialogSessionId", dialogSessionId);
auto connection = std::make_shared<OHOS::Rosen::ModalSystemUiExtension>();
if (callerToken == nullptr) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for system");
(const_cast<Want &>(replaceWant)).SetParam(UIEXTENSION_MODAL_TYPE, 1);
return connection->CreateModalUIExtension(replaceWant) ? ERR_OK : INNER_ERR;
}
auto callerRecord = Token::GetAbilityRecordByToken(callerToken);
if (!callerRecord) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "callerRecord is nullptr.");
return ERR_INVALID_VALUE;
}
sptr<IRemoteObject> token;
auto abilityMgr = DelayedSingleton<AbilityManagerService>::GetInstance();
if (!abilityMgr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "abilityMgr is nullptr.");
return INNER_ERR;
}
int ret = IN_PROCESS_CALL(abilityMgr->GetTopAbility(token));
if (ret != ERR_OK || token == nullptr) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for system");
(const_cast<Want &>(replaceWant)).SetParam(UIEXTENSION_MODAL_TYPE, 1);
return connection->CreateModalUIExtension(replaceWant) ? ERR_OK : INNER_ERR;
}
if (callerRecord->GetAbilityInfo().type == AppExecFwk::AbilityType::PAGE && token == callerToken) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for application");
return callerRecord->CreateModalUIExtension(replaceWant);
}
TAG_LOGD(AAFwkTag::ABILITYMGR, "create modal ui extension for system");
(const_cast<Want &>(replaceWant)).SetParam(UIEXTENSION_MODAL_TYPE, 1);
return connection->CreateModalUIExtension(replaceWant) ? ERR_OK : INNER_ERR;
}
} // namespace AAFwk
} // namespace OHOS
@@ -21,6 +21,7 @@
#include "app_gallery_enable_util.h"
#include "app_utils.h"
#include "default_app_interface.h"
#include "dialog_session_manager.h"
#include "errors.h"
#include "ecological_rule/ability_ecological_rule_mgr_service.h"
#include "event_report.h"
@@ -138,7 +139,7 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_
}
if (want.GetBoolParam("isCreateAppGallerySelector", false)) {
want.RemoveParam("isCreateAppGallerySelector");
NotifyCreateModalDialog(request, want, userId, dialogAppInfos);
DialogSessionManager::GetInstance().CreateSelectorModalDialog(request, want, userId, dialogAppInfos);
return ERR_IMPLICIT_START_ABILITY_FAIL;
}
TAG_LOGE(AAFwkTag::ABILITYMGR, "implicit query ability infos failed, show tips dialog.");
@@ -155,7 +156,7 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_
}
if (want.GetBoolParam("isCreateAppGallerySelector", false)) {
want.RemoveParam("isCreateAppGallerySelector");
NotifyCreateModalDialog(request, want, userId, dialogAppInfos);
DialogSessionManager::GetInstance().CreateSelectorModalDialog(request, want, userId, dialogAppInfos);
return ERR_IMPLICIT_START_ABILITY_FAIL;
}
std::vector<DialogAppInfo> dialogAllAppInfos;
@@ -208,7 +209,7 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_
}
if (want.GetBoolParam("isCreateAppGallerySelector", false)) {
want.RemoveParam("isCreateAppGallerySelector");
return NotifyCreateModalDialog(request, want, userId, dialogAppInfos);
return DialogSessionManager::GetInstance().CreateSelectorModalDialog(request, want, userId, dialogAppInfos);
}
ret = abilityMgr->ImplicitStartAbilityAsCaller(request.want, request.callerToken, nullptr);
// reset calling indentity
@@ -227,7 +228,7 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_
}
if (want.GetBoolParam("isCreateAppGallerySelector", false)) {
want.RemoveParam("isCreateAppGallerySelector");
return NotifyCreateModalDialog(request, want, userId, dialogAppInfos);
return DialogSessionManager::GetInstance().CreateSelectorModalDialog(request, want, userId, dialogAppInfos);
}
ret = abilityMgr->ImplicitStartAbilityAsCaller(request.want, request.callerToken, nullptr);
// reset calling indentity
@@ -235,20 +236,6 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_
return ret;
}
int ImplicitStartProcessor::NotifyCreateModalDialog(AbilityRequest &abilityRequest, const Want &want, int32_t userId,
std::vector<DialogAppInfo> &dialogAppInfos)
{
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
auto abilityMgr = DelayedSingleton<AbilityManagerService>::GetInstance();
std::string dialogSessionId;
if (abilityMgr->GenerateDialogSessionRecord(abilityRequest, userId, dialogSessionId, dialogAppInfos, true)) {
TAG_LOGD(AAFwkTag::ABILITYMGR, "create dialog by ui extension");
return abilityMgr->CreateModalDialog(want, abilityRequest.callerToken, dialogSessionId);
}
TAG_LOGE(AAFwkTag::ABILITYMGR, "create dialog by ui extension failed");
return INNER_ERR;
}
std::string ImplicitStartProcessor::MatchTypeAndUri(const AAFwk::Want &want)
{
std::string type = want.GetType();
@@ -568,7 +555,7 @@ int32_t ImplicitStartProcessor::ImplicitStartAbilityInner(const Want &targetWant
break;
default:
result = abilityMgr->StartAbilityWrap(
targetWant, request.callerToken, request.requestCode, userId, false, false, 0, false, true);
targetWant, request.callerToken, request.requestCode, userId, false, 0, false, true);
break;
}
+1 -1
View File
@@ -347,7 +347,7 @@ int32_t AppMgrService::ClearUpApplicationData(const std::string &bundleName, int
AAFwk::PermissionConstants::PERMISSION_CLEAN_APPLICATION_DATA);
if (!isCallingPerm) {
TAG_LOGE(AAFwkTag::APPMGR, "Permission verification failed");
return ERR_PERMISSION_DENIED;
return AAFwk::CHECK_PERMISSION_FAILED;
}
}
pid_t pid = IPCSkeleton::GetCallingPid();
@@ -46,7 +46,7 @@ int MockServiceAbilityManagerService::StartAbility(
int MockServiceAbilityManagerService::StartAbilityAsCaller(
const Want& want, const sptr<IRemoteObject>& callerToken, sptr<IRemoteObject> asCallerSourceToken,
int32_t userId, int requestCode, bool isSendDialogResult)
int32_t userId, int requestCode)
{
return 0;
}
@@ -55,8 +55,7 @@ public:
const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = DEFAULT_INVAL_VALUE,
bool isSendDialogResult = false) override;
int requestCode = DEFAULT_INVAL_VALUE) override;
int StartAbilityAsCaller(
const Want& want,
const StartOptions& startOptions,
@@ -147,8 +147,8 @@ public:
MOCK_METHOD4(StartAbilityByCall,
int(const Want&, const sptr<IAbilityConnection>&, const sptr<IRemoteObject>&, int32_t));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const StartOptions &startOptions,
const sptr<IRemoteObject>& callerToken, sptr<IRemoteObject> asCallerSourceToken,
int32_t userId, int requestCode));
@@ -32,8 +32,8 @@ public:
int requestCode = DEFAULT_INVAL_VALUE) override;
MOCK_METHOD4(StartAbility, int(const Want& want, const sptr<IRemoteObject>& callerToken,
int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD5(StartAbility, int(const Want& want, const AbilityStartSetting& abilityStartSetting,
const sptr<IRemoteObject>& callerToken, int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
@@ -214,8 +214,8 @@ public:
int StartAbility(const Want& want, int32_t userId = DEFAULT_INVAL_VALUE, int requestCode = -1) override;
MOCK_METHOD4(StartAbility, int(const Want& want, const sptr<IRemoteObject>& callerToken,
int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD5(StartAbility, int(const Want& want, const AbilityStartSetting& abilityStartSetting,
const sptr<IRemoteObject>& callerToken, int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
@@ -31,8 +31,8 @@ public:
const sptr<IRemoteObject>& callerToken, int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
uint64_t intentId, int32_t userId));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const StartOptions &startOptions,
const sptr<IRemoteObject> &callerToken, sptr<IRemoteObject> asCallerSourceToken,
int32_t userId, int requestCode));
@@ -74,7 +74,7 @@ int MockAbilityManagerService::StartAbility(const Want& want, const sptr<IRemote
}
int MockAbilityManagerService::StartAbilityAsCaller(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult)
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode)
{
return 0;
}
@@ -53,8 +53,7 @@ public:
const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = -1,
bool isSendDialogResult = false) override;
int requestCode = -1) override;
int StartAbilityAsCaller(
const Want& want,
const StartOptions& startOptions,
@@ -55,7 +55,7 @@ int MockServiceAbilityManagerService::StartAbility(
int MockServiceAbilityManagerService::StartAbilityAsCaller(
const Want& want, const sptr<IRemoteObject>& callerToken, sptr<IRemoteObject> asCallerSourceToken,
int32_t userId, int requestCode, bool isSendDialogResult)
int32_t userId, int requestCode)
{
return 0;
}
@@ -57,8 +57,7 @@ public:
const sptr<IRemoteObject>& callerToken,
const sptr<IRemoteObject> asCallerSourceToken,
int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = DEFAULT_INVAL_VALUE,
bool isSendDialogResult = false) override;
int requestCode = DEFAULT_INVAL_VALUE) override;
int StartAbilityAsCaller(
const Want& want,
const StartOptions& startOptions,
@@ -59,7 +59,7 @@ public:
virtual int StartAbilityAsCaller(const Want& want, const sptr<IRemoteObject>& callerToken,
const sptr<IRemoteObject>& asCallerSourceToken, int32_t userId = DEFAULT_INVAL_VALUE,
int requestCode = -1, bool isSendDialogResult = false) override
int requestCode = -1) override
{
return 0;
}
@@ -32,8 +32,8 @@ public:
MOCK_METHOD2(StartAbility, int(const Want& want, int requestCode));
MOCK_METHOD3(StartAbility, int(const Want& want, const sptr<IRemoteObject>& callerToken, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const StartOptions &startOptions,
const sptr<IRemoteObject> &callerToken, sptr<IRemoteObject> asCallerSourceToken,
int32_t userId, int requestCode));
@@ -27,8 +27,8 @@ public:
MOCK_METHOD3(StartAbility, int(const Want& want, int32_t userId, int requestCode));
MOCK_METHOD4(StartAbility, int(const Want& want, const sptr<IRemoteObject>& callerToken,
int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const StartOptions &startOptions,
const sptr<IRemoteObject> &callerToken, sptr<IRemoteObject> asCallerSourceToken,
int32_t userId, int requestCode));
+1 -1
View File
@@ -141,7 +141,7 @@ ohos_source_set("abilityms_test_source") {
"${ability_runtime_services_path}/abilitymgr/src/data_ability_caller_recipient.cpp",
"${ability_runtime_services_path}/abilitymgr/src/data_ability_manager.cpp",
"${ability_runtime_services_path}/abilitymgr/src/data_ability_record.cpp",
"${ability_runtime_services_path}/abilitymgr/src/dialog_session_record.cpp",
"${ability_runtime_services_path}/abilitymgr/src/dialog_session/dialog_session_manager.cpp",
"${ability_runtime_services_path}/abilitymgr/src/dlp_state_item.cpp",
"${ability_runtime_services_path}/abilitymgr/src/ecological_rule/ability_ecological_rule_mgr_service.cpp",
"${ability_runtime_services_path}/abilitymgr/src/ecological_rule/ability_ecological_rule_mgr_service_param.cpp",
@@ -300,8 +300,8 @@ public:
int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
uint64_t intentId, int32_t userId));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD2(
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken));
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
@@ -312,8 +312,8 @@ public:
int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
uint64_t intentId, int32_t userId));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD2(
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken));
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
@@ -1717,9 +1717,8 @@ HWTEST_F(AbilityManagerServiceThirdTest, ImplicitStartAbilityAsCaller_001, TestS
sptr<IRemoteObject> asCallerSourceToken;
int32_t userId = 0;
int requestCode = 0;
bool isSendDialogResult = true;
auto result = abilityMs->ImplicitStartAbilityAsCaller(want, callerToken, asCallerSourceToken, userId,
requestCode, isSendDialogResult);
requestCode);
EXPECT_EQ(result, ERR_INVALID_VALUE);
}
@@ -1736,10 +1735,9 @@ HWTEST_F(AbilityManagerServiceThirdTest, StartAbilityAsCallerDetails_001, TestSi
sptr<IRemoteObject> asCallerSourceToken;
int32_t userId = 0;
int requestCode = 0;
bool isSendDialogResult = true;
bool isImplicit = true;
auto result = abilityMs->StartAbilityAsCallerDetails(want, callerToken, asCallerSourceToken, userId,
requestCode, isSendDialogResult, isImplicit);
requestCode, isImplicit);
EXPECT_EQ(result, ERR_INVALID_VALUE);
}
@@ -1757,10 +1755,9 @@ HWTEST_F(AbilityManagerServiceThirdTest, StartAbilityAsCallerDetails_002, TestSi
sptr<IRemoteObject> asCallerSourceToken;
int32_t userId = 0;
int requestCode = 0;
bool isSendDialogResult = true;
bool isImplicit = true;
auto result = abilityMs->StartAbilityAsCallerDetails(want, callerToken, asCallerSourceToken, userId,
requestCode, isSendDialogResult, isImplicit);
requestCode, isImplicit);
EXPECT_EQ(result, ERR_INVALID_CONTINUATION_FLAG);
}
@@ -1777,10 +1774,9 @@ HWTEST_F(AbilityManagerServiceThirdTest, StartAbilityAsCallerDetails_003, TestSi
sptr<IRemoteObject> asCallerSourceToken = new AbilityManagerStubTestMock();
int32_t userId = 0;
int requestCode = 0;
bool isSendDialogResult = true;
bool isImplicit = true;
auto result = abilityMs->StartAbilityAsCallerDetails(want, callerToken, asCallerSourceToken, userId,
requestCode, isSendDialogResult, isImplicit);
requestCode, isImplicit);
EXPECT_EQ(result, ERR_INVALID_VALUE);
}
@@ -1840,12 +1836,11 @@ HWTEST_F(AbilityManagerServiceThirdTest, StartAbilityWrap_001, TestSize.Level1)
int requestCode = 0;
int32_t userId = 0;
bool isStartAsCaller = true;
bool isSendDialogResult = true;
uint32_t specifyToken = 0;
bool isForegroundToRestartApp = true;
bool isImplicit = true;
auto result = abilityMs->StartAbilityWrap(want, callerToken, requestCode, userId, isStartAsCaller,
isSendDialogResult, specifyToken, isForegroundToRestartApp, isImplicit);
specifyToken, isForegroundToRestartApp, isImplicit);
EXPECT_EQ(result, ERR_INVALID_VALUE);
}
@@ -40,8 +40,8 @@ public:
int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
uint64_t intentId, int32_t userId));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD2(
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken));
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
@@ -305,8 +305,8 @@ public:
int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
uint64_t intentId, int32_t userId));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD2(
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken));
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
@@ -276,8 +276,8 @@ public:
int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
uint64_t intentId, int32_t userId));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD2(
GetWantSender, sptr<IWantSender>(const WantSenderInfo& wantSenderInfo, const sptr<IRemoteObject>& callerToken));
MOCK_METHOD2(SendWantSender, int(sptr<IWantSender> target, const SenderInfo& senderInfo));
@@ -108,8 +108,8 @@ public:
const sptr<IRemoteObject>& callerToken, int32_t userId, int requestCode));
MOCK_METHOD4(StartAbilityByInsightIntent, int32_t(const Want& want, const sptr<IRemoteObject>& callerToken,
uint64_t intentId, int32_t userId));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want& want, const sptr<IRemoteObject>& callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const StartOptions &startOptions,
const sptr<IRemoteObject> &callerToken, sptr<IRemoteObject> asCallerSourceToken,
int32_t userId, int requestCode));
+2 -2
View File
@@ -31,8 +31,8 @@ public:
MOCK_METHOD4(StartAbility, int(const Want& want, const sptr<IRemoteObject>& callerToken,
int32_t userId, int requestCode));
MOCK_METHOD6(StartAbilityAsCaller, int(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode, bool isSendDialogResult));
MOCK_METHOD5(StartAbilityAsCaller, int(const Want &want, const sptr<IRemoteObject> &callerToken,
sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode));
MOCK_METHOD3(TerminateAbility, int(const sptr<IRemoteObject>& token, int resultCode, const Want* resultWant));
MOCK_METHOD3(TerminateUIExtensionAbility, int(const sptr<SessionInfo> &extensionSessionInfo, int resultCode,
const Want* resultWant));