1/* 2 * Copyright (c) 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_SUB_MANAGERS_HELPER_H 17#define OHOS_ABILITY_RUNTIME_SUB_MANAGERS_HELPER_H 18 19#include <mutex> 20#include <string> 21#include <unordered_map> 22 23#include "ability_connect_manager.h" 24#include "ability_event_handler.h" 25#include "cpp/mutex.h" 26#include "data_ability_manager.h" 27#include "mission_list_manager_interface.h" 28#include "nocopyable.h" 29#include "pending_want_manager.h" 30#include "scene_board/ui_ability_lifecycle_manager.h" 31#include "task_handler_wrap.h" 32 33namespace OHOS { 34namespace AAFwk { 35using CreateMissionListMgrFunc = MissionListWrap*(*)(); 36class SubManagersHelper { 37public: 38 SubManagersHelper(std::shared_ptr<TaskHandlerWrap> taskHandler, std::shared_ptr<AbilityEventHandler> eventHandler); 39 virtual ~SubManagersHelper(); 40 41 void InitSubManagers(int userId, bool switchUser); 42 void InitMissionListManager(int userId, bool switchUser); 43 void InitUIAbilityManager(int userId, bool switchUser); 44 void InitConnectManager(int32_t userId, bool switchUser); 45 void InitDataAbilityManager(int32_t userId, bool switchUser); 46 void InitPendWantManager(int32_t userId, bool switchUser); 47 48 void ClearSubManagers(int userId); 49 50 std::shared_ptr<DataAbilityManager> GetCurrentDataAbilityManager(); 51 std::shared_ptr<DataAbilityManager> GetDataAbilityManager(const sptr<IAbilityScheduler> &scheduler); 52 std::unordered_map<int, std::shared_ptr<DataAbilityManager>> GetDataAbilityManagers(); 53 std::shared_ptr<DataAbilityManager> GetDataAbilityManagerByUserId(int32_t userId); 54 std::shared_ptr<DataAbilityManager> GetDataAbilityManagerByToken(const sptr<IRemoteObject> &token); 55 56 std::unordered_map<int, std::shared_ptr<AbilityConnectManager>> GetConnectManagers(); 57 std::shared_ptr<AbilityConnectManager> GetCurrentConnectManager(); 58 std::shared_ptr<AbilityConnectManager> GetConnectManagerByUserId(int32_t userId); 59 std::shared_ptr<AbilityConnectManager> GetConnectManagerByToken(const sptr<IRemoteObject> &token); 60 std::shared_ptr<AbilityConnectManager> GetConnectManagerByAbilityRecordId(const int64_t &abilityRecordId); 61 62 std::shared_ptr<PendingWantManager> GetCurrentPendingWantManager(); 63 std::shared_ptr<PendingWantManager> GetPendingWantManagerByUserId(int32_t userId); 64 65 std::unordered_map<int, std::shared_ptr<MissionListManagerInterface>> GetMissionListManagers(); 66 std::shared_ptr<MissionListManagerInterface> GetCurrentMissionListManager(); 67 std::shared_ptr<MissionListManagerInterface> GetMissionListManagerByUserId(int32_t userId); 68 std::shared_ptr<MissionListManagerInterface> GetMissionListManagerByUid(int32_t uid); 69 70 std::unordered_map<int, std::shared_ptr<UIAbilityLifecycleManager>> GetUIAbilityManagers(); 71 std::shared_ptr<UIAbilityLifecycleManager> GetCurrentUIAbilityManager(); 72 std::shared_ptr<UIAbilityLifecycleManager> GetUIAbilityManagerByUserId(int32_t userId); 73 std::shared_ptr<UIAbilityLifecycleManager> GetUIAbilityManagerByUid(int32_t uid); 74 75 void UninstallApp(const std::string &bundleName, int32_t uid); 76 void UninstallAppInUIAbilityManagers(int32_t userId, const std::string &bundleName, int32_t uid); 77 void UninstallAppInMissionListManagers(int32_t userId, const std::string &bundleName, int32_t uid); 78 bool VerificationAllToken(const sptr<IRemoteObject> &token); 79 bool VerificationAllTokenForConnectManagers(const sptr<IRemoteObject> &token); 80 81 std::shared_ptr<MissionListWrap> GetMissionListWrap(); 82 std::shared_ptr<MissionListManagerInterface> CreateMissionListMgr(int32_t userId); 83private: 84 DISALLOW_COPY_AND_MOVE(SubManagersHelper); 85 86 std::shared_ptr<TaskHandlerWrap> taskHandler_; 87 std::shared_ptr<AbilityEventHandler> eventHandler_; 88 89 ffrt::mutex managersMutex_; 90 std::unordered_map<int, std::shared_ptr<AbilityConnectManager>> connectManagers_; 91 std::shared_ptr<AbilityConnectManager> currentConnectManager_; 92 std::unordered_map<int, std::shared_ptr<DataAbilityManager>> dataAbilityManagers_; 93 std::shared_ptr<DataAbilityManager> currentDataAbilityManager_; 94 std::unordered_map<int, std::shared_ptr<PendingWantManager>> pendingWantManagers_; 95 std::shared_ptr<PendingWantManager> currentPendingWantManager_; 96 std::unordered_map<int, std::shared_ptr<MissionListManagerInterface>> missionListManagers_; 97 std::shared_ptr<MissionListManagerInterface> currentMissionListManager_; 98 std::unordered_map<int, std::shared_ptr<UIAbilityLifecycleManager>> uiAbilityManagers_; 99 std::shared_ptr<UIAbilityLifecycleManager> currentUIAbilityManager_; 100 101 std::mutex missionListWrapMutex_; 102 void* missionLibHandle_ = nullptr; 103 std::shared_ptr<MissionListWrap> missionListWrap_; 104}; 105} // namespace AAFwk 106} // namespace OHOS 107#endif // OHOS_ABILITY_RUNTIME_SUB_MANAGERS_HELPER_H 108