diff --git a/frameworks/native/ability/native/recovery/app_recovery.cpp b/frameworks/native/ability/native/recovery/app_recovery.cpp index 0318e64205..276bd19566 100644 --- a/frameworks/native/ability/native/recovery/app_recovery.cpp +++ b/frameworks/native/ability/native/recovery/app_recovery.cpp @@ -465,14 +465,14 @@ void AppRecovery::DeleteInValidMissionFileById(std::string fileDir, int32_t miss void AppRecovery::ClearPageStack(std::string bundleName) { - TAG_LOGI(AAFwkTag::RECOVERY, "AppRecovery ClearPageStack"); + TAG_LOGI(AAFwkTag::RECOVERY, "AppRecovery ClearPageStack %{public}s", bundleName.c_str()); DeleteInValidMissionFiles(); std::shared_ptr abilityMgr = AAFwk::AbilityManagerClient::GetInstance(); if (abilityMgr == nullptr) { TAG_LOGE(AAFwkTag::RECOVERY, "AppRecovery ClearPageStack. abilityMgr client is not exist."); return; } - abilityMgr->ScheduleClearRecoveryPageStack(bundleName); + abilityMgr->ScheduleClearRecoveryPageStack(); } bool AppRecovery::GetMissionIds(std::string path, std::vector &missionIds) 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 d48e2d062d..ee4bfc9c9b 100644 --- a/interfaces/inner_api/ability_manager/include/ability_manager_client.h +++ b/interfaces/inner_api/ability_manager/include/ability_manager_client.h @@ -1184,7 +1184,7 @@ public: * * @param bundleName application bundleName. */ - void ScheduleClearRecoveryPageStack(const std::string& bundleName); + void ScheduleClearRecoveryPageStack(); /** * @brief Add free install observer. 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 16d53e54b5..3d5a37a379 100644 --- a/interfaces/inner_api/ability_manager/include/ability_manager_interface.h +++ b/interfaces/inner_api/ability_manager/include/ability_manager_interface.h @@ -1148,7 +1148,7 @@ public: virtual void ScheduleRecoverAbility(const sptr &token, int32_t reason, const Want *want = nullptr) {}; - virtual void ScheduleClearRecoveryPageStack(const std::string& bundleName) {}; + virtual void ScheduleClearRecoveryPageStack() {}; /** * Called to verify that the MissionId is valid. diff --git a/services/abilitymgr/include/ability_manager_proxy.h b/services/abilitymgr/include/ability_manager_proxy.h index 5c96a99280..91c3e645ec 100644 --- a/services/abilitymgr/include/ability_manager_proxy.h +++ b/services/abilitymgr/include/ability_manager_proxy.h @@ -907,7 +907,7 @@ public: virtual void ScheduleRecoverAbility(const sptr &token, int32_t reason, const Want *want = nullptr) override; - virtual void ScheduleClearRecoveryPageStack(const std::string& bundleName) override; + virtual void ScheduleClearRecoveryPageStack() override; /** * Called to verify that the MissionId is valid. diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 47695b3045..aaad3cc800 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -1319,7 +1319,7 @@ public: virtual void ScheduleRecoverAbility(const sptr &token, int32_t reason, const Want *want = nullptr) override; - virtual void ScheduleClearRecoveryPageStack(const std::string& bundleName) override; + virtual void ScheduleClearRecoveryPageStack() override; /** * Called to verify that the MissionId is valid. diff --git a/services/abilitymgr/src/ability_manager_client.cpp b/services/abilitymgr/src/ability_manager_client.cpp index 5b3f7ba667..4f78d2bfab 100644 --- a/services/abilitymgr/src/ability_manager_client.cpp +++ b/services/abilitymgr/src/ability_manager_client.cpp @@ -1397,11 +1397,11 @@ void AbilityManagerClient::ScheduleRecoverAbility(sptr token, int return abms->ScheduleRecoverAbility(token, reason, want); } -void AbilityManagerClient::ScheduleClearRecoveryPageStack(const std::string& bundleName) +void AbilityManagerClient::ScheduleClearRecoveryPageStack() { auto abms = GetAbilityManager(); CHECK_POINTER_RETURN(abms); - return abms->ScheduleClearRecoveryPageStack(bundleName); + return abms->ScheduleClearRecoveryPageStack(); } #ifdef ABILITY_COMMAND_FOR_TEST diff --git a/services/abilitymgr/src/ability_manager_proxy.cpp b/services/abilitymgr/src/ability_manager_proxy.cpp index ff185c548c..bcf61b6a5f 100644 --- a/services/abilitymgr/src/ability_manager_proxy.cpp +++ b/services/abilitymgr/src/ability_manager_proxy.cpp @@ -1739,7 +1739,7 @@ int AbilityManagerProxy::KillProcess(const std::string &bundleName, const bool c return reply.ReadInt32(); } -void AbilityManagerProxy::ScheduleClearRecoveryPageStack(const std::string &bundleName) +void AbilityManagerProxy::ScheduleClearRecoveryPageStack() { MessageParcel data; MessageParcel reply; @@ -1749,10 +1749,6 @@ void AbilityManagerProxy::ScheduleClearRecoveryPageStack(const std::string &bund TAG_LOGE(AAFwkTag::ABILITYMGR, "ScheduleClearRecoveryPageStack WriteInterfaceToken failed."); return; } - if (!data.WriteString16(Str8ToStr16(bundleName))) { - TAG_LOGE(AAFwkTag::ABILITYMGR, "bundleName write failed."); - return; - } int error = SendRequest(AbilityManagerInterfaceCode::CLEAR_RECOVERY_PAGE_STACK, data, reply, option); if (error != NO_ERROR) { TAG_LOGE(AAFwkTag::ABILITYMGR, "Send request error: %{public}d", error); diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index ea5d1b918e..d8ccf2e5cc 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -7167,9 +7167,14 @@ void AbilityManagerService::EnableRecoverAbility(const sptr& toke } } -void AbilityManagerService::ScheduleClearRecoveryPageStack(const std::string& bundleName) +void AbilityManagerService::ScheduleClearRecoveryPageStack() { int32_t callerUid = IPCSkeleton::GetCallingUid(); + std::string bundleName; + if (IN_PROCESS_CALL(bms->GetNameForUid(uid, bundleName)) != ERR_OK) { + TAG_LOGE(AAFwkTag::ABILITYMGR, "VerifyPermission failed to get bundle name by uid"); + return CHECK_PERMISSION_FAILED; + } TAG_LOGI(AAFwkTag::ABILITYMGR, "ScheduleClearRecoveryPageStack bundleName = %{public}s, callerUid = %{public}d", bundleName.c_str(), callerUid); (void)DelayedSingleton::GetInstance()-> diff --git a/services/abilitymgr/src/ability_manager_stub.cpp b/services/abilitymgr/src/ability_manager_stub.cpp index 199e5f725f..118c72d728 100644 --- a/services/abilitymgr/src/ability_manager_stub.cpp +++ b/services/abilitymgr/src/ability_manager_stub.cpp @@ -2350,12 +2350,7 @@ int AbilityManagerStub::EnableRecoverAbilityInner(MessageParcel &data, MessagePa int AbilityManagerStub::ScheduleClearRecoveryPageStackInner(MessageParcel &data, MessageParcel &reply) { - std::string bundleName = Str16ToStr8(data.ReadString16()); - if (bundleName.empty()) { - TAG_LOGE(AAFwkTag::ABILITYMGR, "ScheduleClearRecoveryPageStackInner read bundleName failed."); - return ERR_NULL_OBJECT; - } - ScheduleClearRecoveryPageStack(bundleName); + ScheduleClearRecoveryPageStack(); return NO_ERROR; }