1 /* 2 * Copyright (c) 2021-2022 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_H 17 #define OHOS_ABILITY_RUNTIME_MISSION_H 18 19 #include <memory> 20 21 #include "ability_record.h" 22 #include "inner_mission_info.h" 23 24 namespace OHOS { 25 namespace AAFwk { 26 /** 27 * @class Mission 28 * a mission only contains an AbilityRecord 29 */ 30 class Mission : public std::enable_shared_from_this<Mission> { 31 public: 32 Mission(int32_t id, const std::shared_ptr<AbilityRecord> abilityRecord, const std::string &missionName = "", 33 int32_t startMethod = 0); 34 Mission(const std::shared_ptr<Mission> &mission); 35 virtual ~Mission(); 36 37 /** 38 * set the mission list. 39 * 40 * @param missionList: the parent mission list 41 */ 42 void SetMissionList(const std::shared_ptr<MissionList> &missionList); 43 44 /** 45 * check whether ability contains by this mission is singleton. 46 * 47 * @return is ability contains by this mission is singleton. 48 */ 49 bool IsSingletonAbility() const; 50 51 /** 52 * check whether ability contains by this mission is specified. 53 * 54 * @return is ability contains by this mission is specified. 55 */ 56 bool IsSpecifiedAbility() const; 57 58 /** 59 * check whether ability contains by this mission is standard. 60 * 61 * @return is ability contains by this mission is standard. 62 */ 63 bool IsStandardAbility() const; 64 65 /** 66 * get owner mission list. 67 * 68 * @return mission list. 69 */ 70 std::shared_ptr<MissionList> GetMissionList(); 71 72 /** 73 * get name of this mission. 74 * 75 * @return missionName. 76 */ 77 std::string GetMissionName() const; 78 79 /** 80 * @brief Get the Ability Record object 81 * 82 * @return std::shared_ptr<AbilityRecord> 83 */ 84 std::shared_ptr<AbilityRecord> GetAbilityRecord() const; 85 86 /** 87 * @brief Get the mission id 88 * 89 * @return the mission id 90 */ 91 int32_t GetMissionId() const; 92 93 /** 94 * @brief Set the Locked State 95 * 96 * @param lockedState true/false 97 */ 98 void SetLockedState(bool lockedState); 99 100 /** 101 * @brief get the Locked State 102 * 103 * @return the lockedState 104 */ 105 bool IsLockedState() const; 106 107 /** 108 * @brief Set the Moving State 109 * 110 * @param movingState true/false 111 */ 112 void SetMovingState(bool movingState); 113 114 /** 115 * @brief get the Moving State 116 * 117 * @return the movingState 118 */ 119 bool IsMovingState() const; 120 121 /** 122 * @brief Set application not response state true 123 */ 124 void SetANRState(bool state); 125 126 /** 127 * @brief Is application not response state 128 */ 129 bool IsANRState() const; 130 131 /** 132 * @brief dump mission 133 * 134 * @param info dump result. 135 */ 136 void Dump(std::vector<std::string> &info); 137 138 /** 139 * @brief whether it is a form ByCall start-up 140 * 141 * @return true form BaCall start-up, false other 142 */ 143 bool IsStartByCall(); 144 145 /** 146 * @brief update mission id 147 * 148 * @param id mission id. 149 * @param method start method. 150 * @return Returns true on success, false on failure 151 */ 152 bool UpdateMissionId(int32_t id, int32_t method); 153 154 /** 155 * Set whether to notify Launcher that the mission has been created. 156 * 157 * @param needNotify Indicates whether the Launcher needs to be notified. 158 */ SetNotifyLabel(bool needNotify)159 inline void SetNotifyLabel(bool needNotify) 160 { 161 needNotify_ = needNotify; 162 } 163 164 /** 165 * Get whether to notify Launcher that the mission has been created. 166 * 167 * @param return Whether the Launcher needs to be notified. 168 */ NeedNotify()169 inline bool NeedNotify() const 170 { 171 return needNotify_; 172 } 173 174 /** 175 * Set mission specified flag. 176 * 177 * @param flag specified flag. 178 */ 179 void SetSpecifiedFlag(const std::string &flag); 180 181 /** 182 * Get mission specified flag. 183 * 184 * @return specified flag. 185 */ 186 std::string GetSpecifiedFlag() const; 187 SetNeedNotifyUpdateLabel(bool flag)188 inline void SetNeedNotifyUpdateLabel(bool flag) 189 { 190 needNotifyUpdateLabel_ = flag; 191 } 192 NeedNotifyUpdateLabel()193 inline bool NeedNotifyUpdateLabel() const 194 { 195 return needNotifyUpdateLabel_; 196 } 197 UpdateMissionTime(const std::string & missionTime)198 inline void UpdateMissionTime(const std::string &missionTime) 199 { 200 missionTime_ = missionTime; 201 } 202 GetMissionTime()203 inline std::string GetMissionTime() const 204 { 205 return missionTime_; 206 } 207 208 private: 209 int32_t missionId_; 210 int32_t startMethod_; 211 std::shared_ptr<AbilityRecord> abilityRecord_; 212 std::string missionName_; 213 std::string specifiedFlag_; 214 std::weak_ptr<MissionList> ownerMissionList_; 215 bool lockedState_ = false; 216 bool isMovingToFront_ = false; 217 bool isANRState_ = false; 218 bool needNotify_ = true; 219 bool needNotifyUpdateLabel_ = false; 220 std::string missionTime_ = "0"; 221 }; 222 } // namespace AAFwk 223 } // namespace OHOS 224 #endif // OHOS_ABILITY_RUNTIME_MISSION_H 225