1 /* 2 * Copyright (c) 2020 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_RECORD_NEW_H 17 #define OHOS_ABILITY_RECORD_NEW_H 18 19 #include <list> 20 21 #include "ability_connect_record.h" 22 #include "ability_state.h" 23 #include "app_record.h" 24 #include "serializer.h" 25 26 namespace OHOS { 27 class AbilityConnectMission; 28 class AbilityMissionRecord; 29 class PageAbilityRecord { 30 public: 31 PageAbilityRecord(const AbilityInfo &abilityInfo, const Want &want); 32 ~PageAbilityRecord(); 33 34 // AbilityInfo 35 const AbilityInfo& GetAbilityInfo() const; 36 bool IsLauncherAbility() const; 37 void SetCurrentState(State state); 38 State GetCurrentState() const; 39 uint64_t GetToken() const; 40 41 // Util 42 bool IsSamePageAbility(const PageAbilityRecord &target) const; 43 bool IsSamePageAbility(const Want &want) const; 44 bool IsSamePageAbility(const char *bundleName) const; 45 bool IsBottomPageAbility() const; 46 47 // BundleInfo 48 const BundleInfo& GetBundleInfo() const; 49 void SetBundleInfo(const BundleInfo &bundleInfo); 50 51 // LifeCycle 52 AbilityMsStatus StartAbility(); 53 AbilityMsStatus ActiveAbility(); 54 AbilityMsStatus InactiveAbility() const; 55 AbilityMsStatus ToBackgroundAbility() const; 56 AbilityMsStatus StopAbility() const; 57 AbilityMsStatus ExitApp(); 58 59 // MissionRecord 60 void SetMissionRecord(AbilityMissionRecord *missionRecord); 61 const AbilityMissionRecord *GetMissionRecord() const; 62 63 // Getter and Setter next and prev ability 64 void SetNextPageAbility(PageAbilityRecord *next); 65 const PageAbilityRecord *GetNextPageAbility() const; 66 void SetPrevPageAbility(PageAbilityRecord *prev); 67 const PageAbilityRecord *GetPrevPageAbility() const; 68 69 // connect service ability 70 void SetConnectMission(AbilityConnectMission *connectMission); 71 const AbilityConnectMission *GetConnectMission() const; 72 void SetServiceSid(const SvcIdentity& serviceSid); 73 const SvcIdentity GetServiceSid() const; 74 ConnectStatus GetConnectStatus() const; 75 void SetConnectStatus(ConnectStatus connectStatus); 76 void SetStartDone(bool startDone); 77 AbilityConnectRecord *GetConnectRecord(const SvcIdentity &serviceSid) const; 78 void pushConnectRecord(AbilityConnectRecord *connectRecord); 79 void RemoveConnectRecord(const SvcIdentity &serviceSid); 80 bool IsPerformStop() const; 81 AbilityConnectRecord *GetConnectRecord(const SvcIdentity &serviceSid, uint64_t abilityToken) const; 82 83 AbilityMsStatus StartService(); 84 AbilityMsStatus ConnectAbility(); 85 AbilityMsStatus DisconnectAbility(const SvcIdentity &connectSid); 86 AbilityMsStatus ConnectAbilityDone(); 87 AbilityMsStatus DisconnectAbilityDone(); 88 AbilityMsStatus ForceStopServiceAbility(); 89 AbilityMsStatus StopAbilityDone(); 90 void RemoveConnectRecordByPageToken(uint64_t token); 91 92 // Dump 93 #ifdef OHOS_DEBUG 94 AbilityMsStatus DumpAbilityRecord() const; 95 #endif 96 AbilityMsStatus DumpAbilitySlice(const Want &want) const; 97 private: 98 void Initialize(); 99 100 AbilityMissionRecord *missionRecord_ { nullptr }; 101 PageAbilityRecord *nextPageAbility_ { nullptr }; 102 PageAbilityRecord *prevPageAbility_ { nullptr }; 103 104 AppRecord *appRecord_ { nullptr }; 105 AbilityInfo abilityInfo_ = {}; 106 BundleInfo bundleInfo_ = {}; 107 Want want_ = {}; 108 State currentState_ = STATE_UNINITIALIZED; 109 uint64_t token_ { 0 }; 110 111 bool startDone_ = false; 112 SvcIdentity serviceSid_ = { 0, 0 }; 113 ConnectStatus connectStatus_ = ConnectStatus::INIT; 114 bool forceStop_ = false; 115 116 AbilityConnectMission *connectMission_ { nullptr }; 117 std::list<AbilityConnectRecord *> connectRecords_; 118 }; 119 } 120 #endif // OHOS_ABILITY_RECORD_NEW_H 121