1 /* 2 * Copyright (c) 2021-2023 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 #include "mission_info.h" 17 18 namespace OHOS { 19 namespace AAFwk { ReadFromParcel(Parcel & parcel)20bool MissionInfo::ReadFromParcel(Parcel &parcel) 21 { 22 id = parcel.ReadInt32(); 23 runningState = parcel.ReadInt32(); 24 lockedState = parcel.ReadBool(); 25 continuable = parcel.ReadBool(); 26 time = Str16ToStr8(parcel.ReadString16()); 27 label = Str16ToStr8(parcel.ReadString16()); 28 iconPath = Str16ToStr8(parcel.ReadString16()); 29 std::unique_ptr<Want> parcelWant(parcel.ReadParcelable<Want>()); 30 if (parcelWant == nullptr) { 31 return false; 32 } 33 want = *parcelWant; 34 want.CloseAllFd(); 35 abilityState = parcel.ReadInt32(); 36 unclearable = parcel.ReadBool(); 37 continueState = static_cast<AAFwk::ContinueState>(parcel.ReadInt32()); 38 return true; 39 } 40 Unmarshalling(Parcel & parcel)41MissionInfo *MissionInfo::Unmarshalling(Parcel &parcel) 42 { 43 MissionInfo *info = new MissionInfo(); 44 if (!info->ReadFromParcel(parcel)) { 45 delete info; 46 info = nullptr; 47 } 48 return info; 49 } 50 Marshalling(Parcel & parcel) const51bool MissionInfo::Marshalling(Parcel &parcel) const 52 { 53 if (!parcel.WriteInt32(id)) { 54 return false; 55 } 56 57 if (!parcel.WriteInt32(runningState)) { 58 return false; 59 } 60 61 if (!parcel.WriteBool(lockedState)) { 62 return false; 63 } 64 65 if (!parcel.WriteBool(continuable)) { 66 return false; 67 } 68 69 if (!parcel.WriteString16(Str8ToStr16(time))) { 70 return false; 71 } 72 73 if (!parcel.WriteString16(Str8ToStr16(label))) { 74 return false; 75 } 76 77 if (!parcel.WriteString16(Str8ToStr16(iconPath))) { 78 return false; 79 } 80 81 if (!parcel.WriteParcelable(&want)) { 82 return false; 83 } 84 85 if (!parcel.WriteInt32(abilityState)) { 86 return false; 87 } 88 89 if (!parcel.WriteBool(unclearable)) { 90 return false; 91 } 92 93 if (!parcel.WriteInt32(static_cast<int32_t>(continueState))) { 94 return false; 95 } 96 return true; 97 } 98 ReadFromParcel(Parcel & parcel)99bool MissionValidResult::ReadFromParcel(Parcel &parcel) 100 { 101 missionId = parcel.ReadInt32(); 102 isValid = parcel.ReadBool(); 103 return true; 104 } 105 Marshalling(Parcel & parcel) const106bool MissionValidResult::Marshalling(Parcel &parcel) const 107 { 108 if (!parcel.WriteInt32(missionId)) { 109 return false; 110 } 111 112 if (!parcel.WriteBool(isValid)) { 113 return false; 114 } 115 116 return true; 117 } 118 Unmarshalling(Parcel & parcel)119MissionValidResult *MissionValidResult::Unmarshalling(Parcel &parcel) 120 { 121 std::unique_ptr<MissionValidResult> info = std::make_unique<MissionValidResult>(); 122 if (!info->ReadFromParcel(parcel)) { 123 return nullptr; 124 } 125 return info.release(); 126 } 127 ReadFromParcel(Parcel & parcel)128bool InnerMissionInfoDto::ReadFromParcel(Parcel &parcel) 129 { 130 std::unique_ptr<MissionInfo> missionInfoPtr(parcel.ReadParcelable<MissionInfo>()); 131 if (!missionInfoPtr) { 132 return false; 133 } 134 missionInfo = *missionInfoPtr; 135 missionName = Str16ToStr8(parcel.ReadString16()); 136 missionAffinity = Str16ToStr8(parcel.ReadString16()); 137 launchMode = parcel.ReadInt32(); 138 startMethod = parcel.ReadInt32(); 139 bundleName = Str16ToStr8(parcel.ReadString16()); 140 uid = parcel.ReadInt32(); 141 isTemporary = parcel.ReadBool(); 142 specifiedFlag = parcel.ReadInt32(); 143 hasRecoverInfo = parcel.ReadBool(); 144 collaboratorType = parcel.ReadInt32(); 145 return true; 146 } 147 Unmarshalling(Parcel & parcel)148InnerMissionInfoDto *InnerMissionInfoDto::Unmarshalling(Parcel &parcel) 149 { 150 InnerMissionInfoDto *info = new InnerMissionInfoDto(); 151 if (!info->ReadFromParcel(parcel)) { 152 delete info; 153 info = nullptr; 154 } 155 return info; 156 } 157 Marshalling(Parcel & parcel) const158bool InnerMissionInfoDto::Marshalling(Parcel &parcel) const 159 { 160 if (!(parcel).WriteParcelable(&missionInfo)) { 161 return false; 162 } 163 164 if (!(parcel).WriteString16(Str8ToStr16(missionName))) { 165 return false; 166 } 167 168 if (!(parcel).WriteString16(Str8ToStr16(missionAffinity))) { 169 return false; 170 } 171 172 if (!(parcel).WriteInt32(launchMode)) { 173 return false; 174 } 175 176 if (!(parcel).WriteInt32(startMethod)) { 177 return false; 178 } 179 180 if (!(parcel).WriteString16(Str8ToStr16(bundleName))) { 181 return false; 182 } 183 184 if (!(parcel).WriteInt32(uid)) { 185 return false; 186 } 187 188 if (!(parcel).WriteBool(isTemporary)) { 189 return false; 190 } 191 192 if (!(parcel).WriteString16(Str8ToStr16(specifiedFlag))) { 193 return false; 194 } 195 196 if (!(parcel).WriteBool(hasRecoverInfo)) { 197 return false; 198 } 199 200 if (!(parcel).WriteInt32(collaboratorType)) { 201 return false; 202 } 203 return true; 204 } 205 } // namespace AAFwk 206 } // namespace OHOS 207