From 18cf4fb5bdb21d76becda7fc2b736078a63e9150 Mon Sep 17 00:00:00 2001 From: yuwenze Date: Tue, 28 Mar 2023 14:18:35 +0000 Subject: [PATCH] fixed animation Signed-off-by: yuwenze Change-Id: Id6885dcaa1c8d247590c28d513697eacd7d124f0 --- .../abilitymgr/include/mission_list_manager.h | 4 ++-- services/abilitymgr/src/mission_list_manager.cpp | 15 +++++++++------ .../missionlistmanagerfirst_fuzzer.cpp | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/services/abilitymgr/include/mission_list_manager.h b/services/abilitymgr/include/mission_list_manager.h index 9f8ecdd80d7..b03cb9b385b 100644 --- a/services/abilitymgr/include/mission_list_manager.h +++ b/services/abilitymgr/include/mission_list_manager.h @@ -71,8 +71,8 @@ public: int MoveMissionToFront(int32_t missionId, std::shared_ptr startOptions = nullptr); - int MoveMissionToFront(int32_t missionId, bool isCallerFromLauncher, - std::shared_ptr startOptions = nullptr); + int MoveMissionToFront(int32_t missionId, bool isCallerFromLauncher, bool isRecent, + std::shared_ptr callerAbility, std::shared_ptr startOptions = nullptr); /** * OnAbilityRequestDone, app manager service call this interface after ability request done. diff --git a/services/abilitymgr/src/mission_list_manager.cpp b/services/abilitymgr/src/mission_list_manager.cpp index 19c506df22f..35b22824beb 100644 --- a/services/abilitymgr/src/mission_list_manager.cpp +++ b/services/abilitymgr/src/mission_list_manager.cpp @@ -219,11 +219,11 @@ int MissionListManager::GetMissionInfo(int32_t missionId, MissionInfo &missionIn int MissionListManager::MoveMissionToFront(int32_t missionId, std::shared_ptr startOptions) { std::lock_guard guard(managerLock_); - return MoveMissionToFront(missionId, true, startOptions); + return MoveMissionToFront(missionId, true, true, nullptr, startOptions); } -int MissionListManager::MoveMissionToFront(int32_t missionId, bool isCallerFromLauncher, - std::shared_ptr startOptions) +int MissionListManager::MoveMissionToFront(int32_t missionId, bool isCallerFromLauncher, bool isRecent, + std::shared_ptr callerAbility, std::shared_ptr startOptions) { HILOG_INFO("move mission to front:%{public}d.", missionId); std::lock_guard guard(managerLock_); @@ -250,7 +250,7 @@ int MissionListManager::MoveMissionToFront(int32_t missionId, bool isCallerFromL #ifdef SUPPORT_GRAPHICS AbilityRequest abilityRequest; - targetAbilityRecord->ProcessForegroundAbility(true, abilityRequest, startOptions, nullptr); + targetAbilityRecord->ProcessForegroundAbility(isRecent, abilityRequest, startOptions, callerAbility); #else targetAbilityRecord->ProcessForegroundAbility(); #endif @@ -2040,7 +2040,7 @@ void MissionListManager::BackToCaller(const std::shared_ptr &call } // other , resume caller ability to top and foreground. - MoveMissionToFront(callerAbility->GetMissionId(), false); + MoveMissionToFront(callerAbility->GetMissionId(), false, false, nullptr); } void MissionListManager::MoveToTerminateList(const std::shared_ptr& abilityRecord) @@ -2887,8 +2887,11 @@ void MissionListManager::OnAcceptWantResponse(const AAFwk::Want &want, const std ability->SetWant(abilityRequest.want); ability->SetIsNewWant(true); UpdateAbilityRecordLaunchReason(abilityRequest, ability); + if (callerAbility == nullptr) { + callerAbility = Token::GetAbilityRecordByToken(abilityRequest.callerToken); + } auto isCallerFromLauncher = (callerAbility && callerAbility->IsLauncherAbility()); - MoveMissionToFront(mission->GetMissionId(), isCallerFromLauncher); + MoveMissionToFront(mission->GetMissionId(), isCallerFromLauncher, false, callerAbility); NotifyRestartSpecifiedAbility(abilityRequest, ability->GetToken()); return; } diff --git a/test/fuzztest/missionlistmanagerfirst_fuzzer/missionlistmanagerfirst_fuzzer.cpp b/test/fuzztest/missionlistmanagerfirst_fuzzer/missionlistmanagerfirst_fuzzer.cpp index 40c351f6ff8..ddb004f2c80 100755 --- a/test/fuzztest/missionlistmanagerfirst_fuzzer/missionlistmanagerfirst_fuzzer.cpp +++ b/test/fuzztest/missionlistmanagerfirst_fuzzer/missionlistmanagerfirst_fuzzer.cpp @@ -107,7 +107,7 @@ bool DoSomethingInterestingWithMyAPI(const char* data, size_t size) missionListManager->GetMissionInfo(int32Param, missionInfo); std::shared_ptr startOptions = std::make_shared(); missionListManager->MoveMissionToFront(int32Param, startOptions); - missionListManager->MoveMissionToFront(int32Param, boolParam, startOptions); + missionListManager->MoveMissionToFront(int32Param, boolParam, boolParam, abilityRecord, startOptions); missionListManager->EnqueueWaitingAbility(abilityRequest); missionListManager->EnqueueWaitingAbilityToFront(abilityRequest); missionListManager->StartWaitingAbility(); -- Gitee