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)20 bool 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)41 MissionInfo *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) const51 bool 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)99 bool MissionValidResult::ReadFromParcel(Parcel &parcel)
100 {
101     missionId = parcel.ReadInt32();
102     isValid = parcel.ReadBool();
103     return true;
104 }
105 
Marshalling(Parcel & parcel) const106 bool 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)119 MissionValidResult *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)128 bool 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)148 InnerMissionInfoDto *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) const158 bool 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