diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 9fbbec4c61..9853c68f6a 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -1054,8 +1054,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. @@ -2148,9 +2147,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 f981505031..602bcba928 100644 --- a/services/abilitymgr/include/ability_record.h +++ b/services/abilitymgr/include/ability_record.h @@ -1057,6 +1057,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 e3a60fa709..a4122deb6e 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -1015,7 +1015,7 @@ int AbilityManagerService::StartAbilityInner(const Want &want, const sptrGetAbilityInfo().bundleName : ""; bool selfFreeInstallEnable = (result == RESOLVE_ABILITY_ERR && want.GetElement().GetModuleName() != "" && @@ -1042,7 +1042,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); } } @@ -1217,9 +1217,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); @@ -5663,7 +5660,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); @@ -5743,9 +5740,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; } @@ -5775,7 +5770,6 @@ int AbilityManagerService::GenerateExtensionAbilityRequest( } auto result = InitialAbilityRequest(request, *abilityInfo); - SetDebugAppByWaitingDebugFlag(want, request.want, request.appInfo.bundleName, request.appInfo.debug); return result; } @@ -10413,22 +10407,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 59a3b2f54e..a9ee71c9c8 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); @@ -3524,5 +3531,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