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