From 7a130e8fc4d3b845f247117fd49e1735d6cbd10f Mon Sep 17 00:00:00 2001 From: xinking129 Date: Tue, 18 Jun 2024 20:29:44 +0800 Subject: [PATCH] fix aa debug command bug Signed-off-by: xinking129 --- .../include/ability_manager_service.h | 6 +--- services/abilitymgr/include/ability_record.h | 2 ++ .../src/ability_manager_service.cpp | 30 +++---------------- services/abilitymgr/src/ability_record.cpp | 21 +++++++++++++ 4 files changed, 28 insertions(+), 31 deletions(-) diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 45a4f4538d..8b6db96f0b 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -1064,8 +1064,7 @@ public: int requestCode, AbilityRequest &request, const sptr &callerToken, - int32_t userId, - bool isNeedSetDebugApp = true); + int32_t userId); /** * Get mission id by target ability token. @@ -2158,9 +2157,6 @@ private: void WaitBootAnimationStart(); - void SetDebugAppByWaitingDebugFlag( - const Want &want, Want &requestWant, const std::string &bundleName, bool isDebugApp); - int32_t SignRestartAppFlag(int32_t userId, const std::string &bundleName); int32_t CheckRestartAppWant(const AAFwk::Want &want); diff --git a/services/abilitymgr/include/ability_record.h b/services/abilitymgr/include/ability_record.h index 3c8a76c6e7..6c10838715 100644 --- a/services/abilitymgr/include/ability_record.h +++ b/services/abilitymgr/include/ability_record.h @@ -1062,6 +1062,8 @@ private: void PublishFileOpenEvent(const Want &want); + static void SetDebugAppByWaitingDebugFlag(Want &requestWant, const std::string &bundleName, bool isDebugApp); + #ifdef SUPPORT_SCREEN std::shared_ptr GetWantFromMission() const; void SetShowWhenLocked(const AppExecFwk::AbilityInfo &abilityInfo, sptr &info) const; diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 4599bc2e81..85be0cd359 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -1013,7 +1013,7 @@ int AbilityManagerService::StartAbilityInner(const Want &want, const sptrGetAbilityInfo().bundleName : ""; bool selfFreeInstallEnable = (result == RESOLVE_ABILITY_ERR && want.GetElement().GetModuleName() != "" && @@ -1040,7 +1040,7 @@ int AbilityManagerService::StartAbilityInner(const Want &want, const sptrStartFreeInstall(localWant, validUserId, requestCode, callerToken, false); if (ret == ERR_OK) { - result = GenerateAbilityRequest(want, requestCode, abilityRequest, callerToken, validUserId, false); + result = GenerateAbilityRequest(want, requestCode, abilityRequest, callerToken, validUserId); } } @@ -1215,9 +1215,6 @@ int AbilityManagerService::StartAbilityInner(const Want &want, const sptrNotifySCBToStartUIAbility(abilityRequest); } - SetDebugAppByWaitingDebugFlag( - want, abilityRequest.want, abilityRequest.appInfo.bundleName, abilityRequest.appInfo.debug); - auto missionListManager = GetMissionListManagerByUserId(oriValidUserId); if (missionListManager == nullptr) { TAG_LOGE(AAFwkTag::ABILITYMGR, "missionListManager is nullptr. userId=%{public}d", validUserId); @@ -5664,7 +5661,7 @@ void AbilityManagerService::StartHighestPriorityAbility(int32_t userId, bool isB } int AbilityManagerService::GenerateAbilityRequest(const Want &want, int requestCode, AbilityRequest &request, - const sptr &callerToken, int32_t userId, bool isNeedSetDebugApp) + const sptr &callerToken, int32_t userId) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); auto abilityRecord = Token::GetAbilityRecordByToken(callerToken); @@ -5744,9 +5741,7 @@ int AbilityManagerService::GenerateAbilityRequest(const Want &want, int requestC TAG_LOGD(AAFwkTag::ABILITYMGR, "Set start recent."); request.startRecent = true; } - if (isNeedSetDebugApp) { - SetDebugAppByWaitingDebugFlag(want, request.want, request.appInfo.bundleName, request.appInfo.debug); - } + return ERR_OK; } @@ -5776,7 +5771,6 @@ int AbilityManagerService::GenerateExtensionAbilityRequest( } auto result = InitialAbilityRequest(request, *abilityInfo); - SetDebugAppByWaitingDebugFlag(want, request.want, request.appInfo.bundleName, request.appInfo.debug); return result; } @@ -10418,22 +10412,6 @@ int32_t AbilityManagerService::GetUIExtensionRootHostInfo(const sptr::GetInstance()->IsWaitingDebugApp(bundleName))) { - (const_cast(want)).SetParam(DEBUG_APP, true); - requestWant.SetParam(DEBUG_APP, true); - IN_PROCESS_CALL_WITHOUT_RET( - DelayedSingleton::GetInstance()->ClearNonPersistWaitingDebugFlag()); - } -} - int32_t AbilityManagerService::RestartApp(const AAFwk::Want &want) { TAG_LOGD(AAFwkTag::ABILITYMGR, "call."); diff --git a/services/abilitymgr/src/ability_record.cpp b/services/abilitymgr/src/ability_record.cpp index c767c78636..5f3fc014f7 100644 --- a/services/abilitymgr/src/ability_record.cpp +++ b/services/abilitymgr/src/ability_record.cpp @@ -96,6 +96,8 @@ const std::string UIEXTENSION_ABILITY_ID = "ability.want.params.uiExtensionAbili const std::string UIEXTENSION_ROOT_HOST_PID = "ability.want.params.uiExtensionRootHostPid"; constexpr const char* PARAM_SEND_RESULT_CALLER_BUNDLENAME = "ohos.anco.param.sendResultCallderBundleName"; constexpr const char* PARAM_SEND_RESULT_CALLER_TOKENID = "ohos.anco.param.sendResultCallerTokenId"; +// Developer mode param +constexpr const char* DEVELOPER_MODE_STATE = "const.security.developermode.state"; const int32_t SHELL_ASSISTANT_DIETYPE = 0; int64_t AbilityRecord::abilityRecordId = 0; const int32_t DEFAULT_USER_ID = 0; @@ -269,6 +271,11 @@ std::shared_ptr AbilityRecord::CreateAbilityRecord(const AbilityR std::shared_ptr abilityRecord = std::make_shared( abilityRequest.want, abilityRequest.abilityInfo, abilityRequest.appInfo, abilityRequest.requestCode); CHECK_POINTER_AND_RETURN(abilityRecord, nullptr); + + Want newWant = abilityRecord->GetWant(); + SetDebugAppByWaitingDebugFlag(newWant, abilityRequest.appInfo.bundleName, abilityRequest.appInfo.debug); + abilityRecord->SetWant(newWant); + abilityRecord->SetUid(abilityRequest.uid); int32_t appIndex = 0; (void)AbilityRuntime::StartupUtil::GetAppIndex(abilityRequest.want, appIndex); @@ -3551,5 +3558,19 @@ void AbilityRecord::SetSpecifyTokenId(uint32_t specifyTokenId) { specifyTokenId_ = specifyTokenId; } + +void AbilityRecord::SetDebugAppByWaitingDebugFlag(Want &requestWant, const std::string &bundleName, bool isDebugApp) +{ + if (!isDebugApp || !system::GetBoolParameter(DEVELOPER_MODE_STATE, false)) { + TAG_LOGD(AAFwkTag::ABILITYMGR, "Not meeting the set debugging conditions."); + return; + } + + if (IN_PROCESS_CALL(DelayedSingleton::GetInstance()->IsWaitingDebugApp(bundleName))) { + requestWant.SetParam(DEBUG_APP, true); + IN_PROCESS_CALL_WITHOUT_RET( + DelayedSingleton::GetInstance()->ClearNonPersistWaitingDebugFlag()); + } +} } // namespace AAFwk } // namespace OHOS