1 /* 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef OHOS_ABILITY_RUNTIME_MISSION_LIST_MANAGER_H 17 #define OHOS_ABILITY_RUNTIME_MISSION_LIST_MANAGER_H 18 19 #include <list> 20 #include <mutex> 21 #include <queue> 22 #include <memory> 23 #include "cpp/mutex.h" 24 25 #include "ability_running_info.h" 26 #include "mission_list.h" 27 #include "mission_list_manager_interface.h" 28 #include "mission_listener_controller.h" 29 #include "mission_info.h" 30 #include "mission_snapshot.h" 31 #include "snapshot.h" 32 #include "start_options.h" 33 #include "want.h" 34 #include "iability_info_callback.h" 35 36 namespace OHOS { 37 namespace AAFwk { 38 class MissionListManager : public MissionListManagerInterface, 39 public std::enable_shared_from_this<MissionListManager> { 40 public: 41 explicit MissionListManager(int userId); 42 virtual ~MissionListManager(); 43 44 /** 45 * init ability mission manager. 46 * 47 */ 48 void Init() override; 49 50 /** 51 * StartAbility with request. 52 * 53 * @param abilityRequest, the request of the service ability to start. 54 * @return Returns ERR_OK on success, others on failure. 55 */ 56 int StartAbility(AbilityRequest &abilityRequest) override; 57 58 /** 59 * MinimizeAbility, minimize the special ability. 60 * 61 * @param token, ability token. 62 * @param fromUser mark the minimize operation source. 63 * @return Returns ERR_OK on success, others on failure. 64 */ 65 int MinimizeAbility(const sptr<IRemoteObject> &token, bool fromUser) override; 66 67 int RegisterMissionListener(const sptr<IMissionListener> &listener) override; 68 69 int UnRegisterMissionListener(const sptr<IMissionListener> &listener) override; 70 71 int GetMissionInfos(int32_t numMax, std::vector<MissionInfo> &missionInfos) override; 72 73 int GetMissionInfo(int32_t missionId, MissionInfo &missionInfo) override; 74 75 int MoveMissionToFront(int32_t missionId, std::shared_ptr<StartOptions> startOptions = nullptr) override; 76 77 int MoveMissionToFront(int32_t missionId, bool isCallerFromLauncher, bool isRecent, 78 std::shared_ptr<AbilityRecord> callerAbility, std::shared_ptr<StartOptions> startOptions = nullptr) override; 79 80 void NotifyMissionFocused(int32_t missionId) override; 81 82 void NotifyMissionUnfocused(int32_t missionId) override; 83 84 /** 85 * OnAbilityRequestDone, app manager service call this interface after ability request done. 86 * 87 * @param token,ability's token. 88 * @param state,the state of ability lift cycle. 89 */ 90 void OnAbilityRequestDone(const sptr<IRemoteObject> &token, int32_t state) override; 91 92 void OnAppStateChanged(const AppInfo &info) override; 93 94 /** 95 * attach ability thread ipc object. 96 * 97 * @param scheduler, ability thread ipc object. 98 * @param token, the token of ability. 99 * @return Returns ERR_OK on success, others on failure. 100 */ 101 int AttachAbilityThread(const sptr<AAFwk::IAbilityScheduler> &scheduler, 102 const sptr<IRemoteObject> &token) override; 103 104 /** 105 * start waiting ability. 106 */ 107 void StartWaitingAbility(); 108 109 /** 110 * @brief Get the Ability Record By Token object 111 * 112 * @param token the search token 113 * @return std::shared_ptr<AbilityRecord> the AbilityRecord of the token 114 */ 115 std::shared_ptr<AbilityRecord> GetAbilityRecordByToken(const sptr<IRemoteObject> &token) override; 116 117 /** 118 * @brief Get the Mission By Id object 119 * 120 * @param missionId the given missionId 121 * @return the mission of the given id 122 */ 123 std::shared_ptr<Mission> GetMissionById(int missionId) const; 124 125 /** 126 * @brief Move ability to background with the given abilityRecord 127 * 128 * @param abilityRecord the ability to move 129 * @return int error code 130 */ 131 int MoveAbilityToBackground(const std::shared_ptr<AbilityRecord> &abilityRecord) override; 132 133 /** 134 * @brief Back to caller ability with result 135 * 136 * @param abilityRecord the ability to move 137 * @param resultCode result code 138 * @param resultWant result want 139 * @param callerRequestCode request code of caller 140 * @return int error code 141 */ 142 int32_t BackToCallerAbilityWithResult(std::shared_ptr<AbilityRecord> abilityRecord, 143 int32_t resultCode, const Want *resultWant, int64_t callerRequestCode) override; 144 145 /** 146 * @brief Terminate ability with the given abilityRecord 147 * 148 * @param abilityRecord the ability to terminate 149 * @param resultCode the terminate data 150 * @param resultWant the terminate data 151 * @param flag mark terminate flag 152 * @return int error code 153 */ 154 int TerminateAbility(const std::shared_ptr<AbilityRecord> &abilityRecord, 155 int resultCode, const Want *resultWant, bool flag) override; 156 157 /** 158 * @brief remove the mission list from the mission list manager 159 * 160 * @param MissionList the mission list need to remove 161 */ 162 void RemoveMissionList(const std::shared_ptr<MissionList> &MissionList); 163 164 /** 165 * @brief execute after the ability schedule the lifecycle 166 * 167 * @param token the ability token 168 * @param state the ability state 169 * @param saveData the saved data 170 * @return execute error code 171 */ 172 int AbilityTransactionDone(const sptr<IRemoteObject> &token, int state, const PacMap &saveData) override; 173 174 /** 175 * @brief search the ability from terminating list 176 * 177 * @param token the ability token 178 * @return the ability need to terminate 179 */ 180 std::shared_ptr<AbilityRecord> GetAbilityFromTerminateList(const sptr<IRemoteObject> &token) override; 181 182 /** 183 * @brief clear the mission with the given id 184 * 185 * @param missionId the mission need to delete 186 * @return int error code 187 */ 188 int ClearMission(int missionId) override; 189 190 /** 191 * @brief clear all the missions 192 * 193 * @return int error code 194 */ 195 int ClearAllMissions() override; 196 197 void ClearAllMissionsLocked(std::list<std::shared_ptr<Mission>> &missionList, 198 std::list<std::shared_ptr<Mission>> &foregroundAbilities, bool searchActive); 199 200 /** 201 * @brief Set the Mission Locked State object 202 * 203 * @param missionId the id of the mission 204 * @return int error code 205 */ 206 int SetMissionLockedState(int missionId, bool lockedState) override; 207 208 /** 209 * @brief schedule to background 210 * 211 * @param abilityRecord the ability to move 212 */ 213 void MoveToBackgroundTask(const std::shared_ptr<AbilityRecord> &abilityRecord, bool isClose = false); 214 215 /** 216 * @brief handle time out event 217 * 218 * @param msgId the msg id in ability record 219 * @param abilityRecordId the id of ability record 220 * @param isHalf is half 221 */ 222 void OnTimeOut(uint32_t msgId, int64_t abilityRecordId, bool isHalf = false) override; 223 224 /** 225 * @brief handle when ability died 226 * 227 * @param abilityRecord the died ability 228 */ 229 void OnAbilityDied(std::shared_ptr<AbilityRecord> abilityRecord, int32_t currentUserId) override; 230 231 /** 232 * @brief handle when call connection died 233 * 234 * @param callRecord the died call connection 235 */ 236 void OnCallConnectDied(const std::shared_ptr<CallRecord> &callRecord) override; 237 238 /** 239 * Get mission id by target ability token. 240 * 241 * @param token target ability token. 242 * @return the missionId of target mission. 243 */ 244 int32_t GetMissionIdByAbilityToken(const sptr<IRemoteObject> &token) override; 245 246 /** 247 * Get ability token by target mission id. 248 * 249 * @param missionId target missionId. 250 * @return the ability token of target mission. 251 */ 252 sptr<IRemoteObject> GetAbilityTokenByMissionId(int32_t missionId) override; 253 std::shared_ptr<AbilityRecord> GetAbilityRecordByMissionId(int32_t missionId) override; 254 255 /** 256 * @brief dump all abilities 257 * 258 * @param info dump result. 259 */ 260 void Dump(std::vector<std::string>& info) override; 261 262 /** 263 * @brief dump mission list 264 * 265 * @param info dump result. 266 */ 267 void DumpMissionList(std::vector<std::string> &info, bool isClient, const std::string &args = "") override; 268 269 /** 270 * @brief dump mission list by id with params 271 * 272 * @param info dump result. 273 * @param params dump params. 274 */ 275 void DumpMissionListByRecordId(std::vector<std::string>& info, bool isClient, int32_t abilityRecordId, 276 const std::vector<std::string>& params) override; 277 278 /** 279 * @brief dump mission by id 280 * 281 * @param info dump result. 282 */ 283 void DumpMission(int missionId, std::vector<std::string> &info) override; 284 285 /** 286 * @brief dump mission infos 287 * 288 * @param info dump result. 289 */ 290 void DumpMissionInfos(std::vector<std::string> &info) override; 291 292 void OnAcceptWantResponse(const AAFwk::Want &want, const std::string &flag) override; 293 294 void OnStartSpecifiedAbilityTimeoutResponse(const AAFwk::Want &want) override; 295 /** 296 * resolve the call ipc of ability for scheduling oncall. 297 * 298 * @param abilityRequest, target ability request. 299 */ 300 int ResolveLocked(const AbilityRequest &abilityRequest) override; 301 302 /** 303 * release the connection of this call. 304 * 305 * @param connect, caller callback ipc. 306 * @param element, target ability name. 307 */ 308 int ReleaseCallLocked(const sptr<IAbilityConnection> &connect, const AppExecFwk::ElementName &element) override; 309 /** 310 * @brief register snapshotHandler 311 * @param handler the snapshotHandler 312 */ 313 void RegisterSnapshotHandler(const sptr<ISnapshotHandler>& handler) override; 314 315 /** 316 * @brief Get the Mission Snapshot object 317 * @param missionId mission id 318 * @param abilityToken abilityToken to get current mission snapshot 319 * @param missionSnapshot result of snapshot 320 * @param isLowResolution low resolution. 321 * @return Returns true on success, false on failure. 322 */ 323 bool GetMissionSnapshot(int32_t missionId, const sptr<IRemoteObject>& abilityToken, 324 MissionSnapshot& missionSnapshot, bool isLowResolution) override; 325 void GetAbilityRunningInfos(std::vector<AbilityRunningInfo> &info, bool isPerm) override; 326 327 /** 328 * Called to update mission snapshot. 329 * @param token The target ability. 330 * @param pixelMap The snapshot. 331 */ 332 void UpdateSnapShot(const sptr<IRemoteObject> &token, const std::shared_ptr<Media::PixelMap> &pixelMap) override; 333 334 /** 335 * Get ability number. 336 * @param element type of ElementName. 337 * @return ability number. 338 */ 339 int32_t GetAbilityNumber(const AppExecFwk::ElementName &element) const; 340 341 void EnableRecoverAbility(int32_t missionId) override; 342 343 void UninstallApp(const std::string &bundleName, int32_t uid) override; 344 345 bool IsStarted() override; 346 void PauseManager() override; 347 void ResumeManager() override; 348 349 void SetMissionANRStateByTokens(const std::vector<sptr<IRemoteObject>> &tokens); 350 351 int32_t IsValidMissionIds(const std::vector<int32_t> &missionIds, 352 std::vector<MissionValidResult> &results) override; 353 354 int DoAbilityForeground(std::shared_ptr<AbilityRecord> &abilityRecord, uint32_t flag) override; 355 356 void GetActiveAbilityList(int32_t uid, std::vector<std::string> &abilityList, int32_t pid = NO_PID) override; 357 358 void CallRequestDone(const std::shared_ptr<AbilityRecord> &abilityRecord, 359 const sptr<IRemoteObject> &callStub) override; 360 361 int SetMissionContinueState(const sptr<IRemoteObject> &token, int32_t missionId, 362 const AAFwk::ContinueState &state) override; 363 364 bool IsAbilityStarted(AbilityRequest &abilityRequest, std::shared_ptr<AbilityRecord> &targetRecord) override; 365 366 void SignRestartAppFlag(int32_t uid) override; 367 368 void SetAnimationFlag(bool IsAnimationEnabled); 369 #ifdef SUPPORT_GRAPHICS 370 public: 371 /** 372 * Set mission label of this ability. 373 * 374 * @param abilityToken target ability token. 375 * @param label target label. 376 * @return Return 0 if success. 377 */ 378 int SetMissionLabel(const sptr<IRemoteObject> &abilityToken, const std::string &label) override; 379 380 /** 381 * Set mission icon of this ability. 382 * 383 * @param token target ability token. 384 * @param icon target label. 385 * @return Return 0 if success. 386 */ 387 int SetMissionIcon(const sptr<IRemoteObject> &token, const std::shared_ptr<Media::PixelMap> &icon) override; 388 389 void CompleteFirstFrameDrawing(const sptr<IRemoteObject> &abilityToken) override; 390 391 void PostMissionLabelUpdateTask(int missionId) const; 392 393 void UpdateAbilityRecordColdStartFlag(const AppInfo& info, bool isColdStart); 394 395 private: 396 Closure GetCancelStartingWindowTask(const std::shared_ptr<AbilityRecord> &abilityRecord) const; 397 void PostCancelStartingWindowTask(const std::shared_ptr<AbilityRecord> &abilityRecord) const; 398 void InitPrepareTerminateConfig(); 399 #endif 400 401 private: 402 void AddRecord(const AbilityRequest &abilityRequest, std::shared_ptr<AbilityRecord> &targetAbilityRecord); 403 int GetTargetMission(const AbilityRequest &abilityRequest, std::shared_ptr<Mission> &targetMission, 404 std::shared_ptr<AbilityRecord> &targetAbilityRecord); 405 int StartAbilityLocked(const std::shared_ptr<AbilityRecord> ¤tTopAbility, 406 const std::shared_ptr<AbilityRecord> &callerAbility, const AbilityRequest &abilityRequest); 407 int StartAbility(const std::shared_ptr<AbilityRecord> ¤tTopAbility, 408 const std::shared_ptr<AbilityRecord> &callerAbility, const AbilityRequest &abilityRequest); 409 int MinimizeAbilityLocked(const std::shared_ptr<AbilityRecord> &abilityRecord, bool fromUser); 410 std::shared_ptr<AbilityRecord> GetCurrentTopAbilityLocked() const; 411 std::shared_ptr<MissionList> GetTargetMissionList( 412 const std::shared_ptr<AbilityRecord> &callerAbility, const AbilityRequest &abilityRequest); 413 std::shared_ptr<MissionList> GetTargetMissionListByLauncher(const AbilityRequest &abilityRequest); 414 std::shared_ptr<MissionList> GetTargetMissionListByDefault( 415 const std::shared_ptr<AbilityRecord> &callerAbility, const AbilityRequest &abilityRequest); 416 std::shared_ptr<Mission> GetReusedMission(const AbilityRequest &abilityRequest); 417 std::shared_ptr<Mission> GetReusedSpecifiedMission(const AbilityRequest &abilityRequest); 418 std::shared_ptr<Mission> GetReusedStandardMission(const AbilityRequest &abilityRequest); 419 void GetTargetMissionAndAbility(const AbilityRequest &abilityRequest, std::shared_ptr<Mission> &targetMission, 420 std::shared_ptr<AbilityRecord> &targetRecord, bool &isReachToLimit); 421 bool HandleReusedMissionAndAbility(const AbilityRequest &abilityRequest, std::shared_ptr<Mission> &targetMission, 422 std::shared_ptr<AbilityRecord> &targetRecord); 423 std::string GetMissionName(const AbilityRequest &abilityRequest) const; 424 bool CreateOrReusedMissionInfo(const AbilityRequest &abilityRequest, InnerMissionInfo &info) const; 425 void MoveMissionToTargetList(bool isCallFromLauncher, 426 const std::shared_ptr<MissionList> &targetMissionList, 427 const std::shared_ptr<Mission> &mission); 428 void MoveMissionListToTop(const std::shared_ptr<MissionList> &missionList); 429 void MoveNoneTopMissionToDefaultList(const std::shared_ptr<Mission> &mission); 430 void PrintTimeOutLog(const std::shared_ptr<AbilityRecord> &ability, uint32_t msgId, bool isHalf = false); 431 432 int DispatchState(const std::shared_ptr<AbilityRecord> &abilityRecord, int state); 433 int DispatchForeground(const std::shared_ptr<AbilityRecord> &abilityRecord, bool success, 434 AbilityState state = AbilityState::INITIAL); 435 int DispatchTerminate(const std::shared_ptr<AbilityRecord> &abilityRecord); 436 int DispatchBackground(const std::shared_ptr<AbilityRecord> &abilityRecord); 437 void CompleteForegroundSuccess(const std::shared_ptr<AbilityRecord> &abilityRecord); 438 void CompleteTerminate(const std::shared_ptr<AbilityRecord> &abilityRecord); 439 void DelayCompleteTerminate(const std::shared_ptr<AbilityRecord> &abilityRecord); 440 void CompleteBackground(const std::shared_ptr<AbilityRecord> &abilityRecord); 441 void CompleteTerminateAndUpdateMission(const std::shared_ptr<AbilityRecord> &abilityRecord); 442 bool RemoveMissionList(const std::list<std::shared_ptr<MissionList>> lists, 443 const std::shared_ptr<MissionList> &list); 444 int ClearMissionLocked(int missionId, const std::shared_ptr<Mission> &mission); 445 int ClearMissionLocking(int missionId, const std::shared_ptr<Mission> &mission); 446 int MoveAbilityToBackgroundLocked(const std::shared_ptr<AbilityRecord> &abilityRecord, 447 const std::shared_ptr<AbilityRecord> &specifiedNextRecord = nullptr); 448 void RemoveBackgroundingAbility(const std::shared_ptr<AbilityRecord> &abilityRecord); 449 int TerminateAbilityLocked(const std::shared_ptr<AbilityRecord> &abilityRecord, bool flag); 450 /** 451 * @brief remove the mission from the mission list 452 * 453 * @param abilityRecord the ability need to remove 454 * @param flag mark is terminate or close 455 */ 456 void RemoveTerminatingAbility(const std::shared_ptr<AbilityRecord> &abilityRecord, bool flag); 457 std::shared_ptr<AbilityRecord> GetAbilityRecordById(int64_t abilityRecordId) const; 458 std::shared_ptr<AbilityRecord> GetAbilityRecordByCaller( 459 const std::shared_ptr<AbilityRecord> &caller, int requestCode); 460 std::shared_ptr<MissionList> GetTargetMissionList(int missionId, std::shared_ptr<Mission> &mission, 461 bool &isReachToLimit); 462 void PostStartWaitingAbility(); 463 void HandleAbilityDied(std::shared_ptr<AbilityRecord> abilityRecord); 464 void HandleLauncherDied(std::shared_ptr<AbilityRecord> ability); 465 void HandleAbilityDiedByDefault(std::shared_ptr<AbilityRecord> abilityRecord); 466 void DelayedStartLauncher(); 467 void BackToLauncher(); 468 void GetAllForegroundAbilities(std::list<std::shared_ptr<AbilityRecord>>& foregroundList); 469 void GetForegroundAbilities(const std::shared_ptr<MissionList>& missionList, 470 std::list<std::shared_ptr<AbilityRecord>>& foregroundList); 471 std::shared_ptr<Mission> GetMissionBySpecifiedFlag(const AAFwk::Want &want, const std::string &flag) const; 472 bool IsReachToSingleLimitLocked(const int32_t uid) const; 473 bool IsReachToLimitLocked() const; 474 bool CheckSingleLimit(const AbilityRequest &abilityRequest); 475 bool CheckLimit(); 476 std::shared_ptr<Mission> FindEarliestMission() const; 477 int32_t GetMissionCount() const; 478 479 // handle timeout event 480 void HandleLoadTimeout(const std::shared_ptr<AbilityRecord> &ability); 481 void HandleForegroundTimeout(const std::shared_ptr<AbilityRecord> &ability, 482 AbilityState state = AbilityState::INITIAL); 483 void HandleTimeoutAndResumeAbility(const std::shared_ptr<AbilityRecord> &ability, 484 AbilityState state = AbilityState::INITIAL); 485 void MoveToTerminateList(const std::shared_ptr<AbilityRecord> &ability); 486 void DelayedResumeTimeout(const std::shared_ptr<AbilityRecord> &callerAbility); 487 void BackToCaller(const std::shared_ptr<AbilityRecord> &callerAbility); 488 489 // new version for call inner function. 490 void CompleteForegroundFailed(const std::shared_ptr<AbilityRecord> &abilityRecord, AbilityState state); 491 int ResolveAbility(const std::shared_ptr<AbilityRecord> &targetAbility, const AbilityRequest &abilityRequest); 492 std::shared_ptr<AbilityRecord> GetAbilityRecordByName(const AppExecFwk::ElementName &element); 493 std::shared_ptr<AbilityRecord> GetAbilityRecordByNameFromCurrentMissionLists( 494 const AppExecFwk::ElementName &element) const; 495 std::vector<std::shared_ptr<AbilityRecord>> GetAbilityRecordsByName(const AppExecFwk::ElementName &element); 496 int CallAbilityLocked(const AbilityRequest &abilityRequest); 497 void UpdateMissionSnapshot(const std::shared_ptr<AbilityRecord> &abilityRecord) const; 498 void AddUninstallTags(const std::string &bundleName, int32_t uid); 499 void EraseWaitingAbility(const std::string &bundleName, int32_t uid); 500 void RemoveMissionLocked(int32_t missionId, bool excludeFromMissions); 501 void TerminatePreviousAbility(const std::shared_ptr<AbilityRecord> &abilityRecord); 502 void NotifyMissionCreated(const std::shared_ptr<AbilityRecord> &abilityRecord) const; 503 bool IsExcludeFromMissions(const std::shared_ptr<Mission> &mission); 504 void BuildInnerMissionInfo(InnerMissionInfo &info, const std::string &missionName, 505 const AbilityRequest &abilityRequest) const; 506 void NotifyStartSpecifiedAbility(AbilityRequest &request, const AAFwk::Want &want); 507 void NotifyRestartSpecifiedAbility(AbilityRequest &request, const sptr<IRemoteObject> &token); 508 void ProcessPreload(const std::shared_ptr<AbilityRecord> &record) const; 509 bool UpdateAbilityRecordLaunchReason( 510 const AbilityRequest &abilityRequest, std::shared_ptr<AbilityRecord> &targetAbilityRecord); 511 std::shared_ptr<AbilityRecord> GetAliveAbilityRecordByToken(const sptr<IRemoteObject> &token) const; 512 void NotifyAbilityToken(const sptr<IRemoteObject> &token, const AbilityRequest &abilityRequest); 513 void NotifyStartAbilityResult(const AbilityRequest &abilityRequest, int result); 514 int MoveMissionToFrontInner(int32_t missionId, bool isCallerFromLauncher, bool isRecent, 515 std::shared_ptr<AbilityRecord> callerAbility, std::shared_ptr<StartOptions> startOptions = nullptr); 516 /** 517 * push waiting ability to queue. 518 * 519 * @param abilityRequest, the request of ability. 520 */ 521 void EnqueueWaitingAbility(const AbilityRequest &abilityRequest); 522 523 /** 524 * push front waiting ability to queue. 525 * 526 * @param abilityRequest, the request of ability. 527 */ 528 void EnqueueWaitingAbilityToFront(const AbilityRequest &abilityRequest); 529 std::shared_ptr<AbilityRecord> GetAbilityRecordByTokenInner(const sptr<IRemoteObject> &token) const; 530 int TerminateAbilityInner(const std::shared_ptr<AbilityRecord> &abilityRecord, 531 int resultCode, const Want *resultWant, bool flag); 532 int32_t GetMissionIdByAbilityTokenInner(const sptr<IRemoteObject> &token); 533 std::shared_ptr<AbilityRecord> GetAbilityFromTerminateListInner(const sptr<IRemoteObject> &token); 534 void SetLastExitReason(std::shared_ptr<AbilityRecord> &abilityRecord); 535 bool IsAppLastAbility(const std::shared_ptr<AbilityRecord> &abilityRecord); 536 std::shared_ptr<MissionList> GetMissionList(int32_t missionId); 537 int PrepareClearMissionLocked(int missionId, const std::shared_ptr<Mission> &mission); 538 539 bool CheckPrepareTerminateEnable(const std::shared_ptr<Mission> &mission); 540 541 bool GetContentAndTypeId(uint32_t msgId, std::string &msgContent, int &typeId) const; 542 543 void SendKeyEvent(const AbilityRequest &abilityRequest); 544 545 int userId_; 546 mutable ffrt::mutex managerLock_; 547 // launcher list is also in currentMissionLists_ 548 std::list<std::shared_ptr<MissionList>> currentMissionLists_; 549 // only manager the ability of standard in the default list 550 std::shared_ptr<MissionList> defaultStandardList_; 551 // only manager the ability of singleton in the default list for the fast search 552 std::shared_ptr<MissionList> defaultSingleList_; 553 std::shared_ptr<MissionList> launcherList_; 554 std::list<std::shared_ptr<AbilityRecord>> terminateAbilityList_; 555 556 std::queue<AbilityRequest> waitingAbilityQueue_; 557 std::shared_ptr<MissionListenerController> listenerController_; 558 bool isPrepareTerminateEnable_ = false; 559 }; 560 } // namespace AAFwk 561 } // namespace OHOS 562 #endif // OHOS_ABILITY_RUNTIME_MISSION_LIST_MANAGER_H 563