1 /*
2 * Copyright (c) 2022-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 "avsession_descriptor.h"
17 #include "avsession_log.h"
18
19 namespace OHOS::AVSession {
WriteToParcel(Parcel & out) const20 bool AVHistoryDescriptor::WriteToParcel(Parcel& out) const
21 {
22 CHECK_AND_RETURN_RET_LOG(out.WriteString(sessionId_), false, "write sessionId failed");
23 CHECK_AND_RETURN_RET_LOG(out.WriteString(bundleName_), false, "write bundleName failed");
24 CHECK_AND_RETURN_RET_LOG(out.WriteString(abilityName_), false, "write abilityName failed");
25 return true;
26 }
27
ReadFromParcel(Parcel & in)28 bool AVHistoryDescriptor::ReadFromParcel(Parcel& in)
29 {
30 CHECK_AND_RETURN_RET_LOG(in.ReadString(sessionId_), false, "Read sessionId failed");
31 CHECK_AND_RETURN_RET_LOG(in.ReadString(bundleName_), false, "Read bundleName failed");
32 CHECK_AND_RETURN_RET_LOG(in.ReadString(abilityName_), false, "Read abilityName failed");
33 return true;
34 }
35
WriteToParcel(Parcel & out) const36 bool AVSessionDescriptor::WriteToParcel(Parcel& out) const
37 {
38 CHECK_AND_RETURN_RET_LOG(out.WriteString(sessionId_), false, "write sessionId failed");
39 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(sessionType_), false, "write sessionType failed");
40 CHECK_AND_RETURN_RET_LOG(out.WriteString(sessionTag_), false, "write sessionTag failed");
41 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(pid_), false, "write pid failed");
42 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(uid_), false, "write uid failed");
43 CHECK_AND_RETURN_RET_LOG(out.WriteBool(isActive_), false, "write isActive failed");
44 CHECK_AND_RETURN_RET_LOG(out.WriteBool(isTopSession_), false, "write isTopSession failed");
45
46 int32_t deviceInfoSize = static_cast<int32_t>(outputDeviceInfo_.deviceInfos_.size());
47 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfoSize), false, "write deviceInfoSize failed");
48 for (DeviceInfo deviceInfo : outputDeviceInfo_.deviceInfos_) {
49 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.castCategory_), false, "write castCategory failed");
50 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.deviceId_), false, "write deviceId failed");
51 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.deviceName_), false, "write deviceName failed");
52 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.deviceType_), false, "write deviceType failed");
53 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.ipAddress_), false, "write ipAddress failed");
54 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.manufacturer_), false, "write manufacturer failed");
55 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.modelName_), false, "write modelName failed");
56 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.providerId_), false, "write providerId failed");
57 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.supportedProtocols_), false,
58 "write supportedProtocols failed");
59 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.authenticationStatus_), false,
60 "write authenticationStatus failed");
61 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.supportedDrmCapabilities_.size()), false,
62 "write supportedDrmCapabilities size failed");
63 for (auto supportedDrmCapability : deviceInfo.supportedDrmCapabilities_) {
64 CHECK_AND_RETURN_RET_LOG(out.WriteString(supportedDrmCapability), false,
65 "write supportedDrmCapability failed");
66 }
67 CHECK_AND_RETURN_RET_LOG(out.WriteBool(deviceInfo.isLegacy_), false, "write isLegacy failed");
68 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.mediumTypes_), false, "write mediumTypes failed");
69 }
70 CHECK_AND_RETURN_RET_LOG(out.WriteParcelable(&elementName_), false, "write elementName failed");
71 return true;
72 }
73
CheckBeforReadFromParcel(Parcel & in)74 bool AVSessionDescriptor::CheckBeforReadFromParcel(Parcel& in)
75 {
76 CHECK_AND_RETURN_RET_LOG(in.ReadString(sessionId_), false, "Read sessionId failed");
77 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(sessionType_), false, "Read sessionType failed");
78 CHECK_AND_RETURN_RET_LOG(in.ReadString(sessionTag_), false, "Read sessionTag failed");
79 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(pid_), false, "Read pid failed");
80 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(uid_), false, "Read uid failed");
81 CHECK_AND_RETURN_RET_LOG(in.ReadBool(isActive_), false, "Read isActive failed");
82 CHECK_AND_RETURN_RET_LOG(in.ReadBool(isTopSession_), false, "Read isTopSession failed");
83 return true;
84 }
85
CheckBeforReadFromParcel(Parcel & in,DeviceInfo & deviceInfo)86 bool AVSessionDescriptor::CheckBeforReadFromParcel(Parcel& in, DeviceInfo& deviceInfo)
87 {
88 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.castCategory_), false, "Read castCategory failed");
89 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.deviceId_), false, "Read deviceId failed");
90 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.deviceName_), false, "Read deviceName failed");
91 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.deviceType_), false, "Read deviceType failed");
92 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.ipAddress_), false, "Read ipAddress failed");
93 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.manufacturer_), false, "Read manufacturer failed");
94 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.modelName_), false, "Read modelName failed");
95 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.providerId_), false, "Read providerId failed");
96 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.supportedProtocols_), false,
97 "Read supportedProtocols failed");
98 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.authenticationStatus_), false,
99 "Read authenticationStatus failed");
100 int32_t supportedDrmCapabilityLen = 0;
101 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(supportedDrmCapabilityLen), false,
102 "read supportedDrmCapabilityLen failed");
103 int32_t maxSupportedDrmCapabilityLen = 10;
104 CHECK_AND_RETURN_RET_LOG((supportedDrmCapabilityLen >= 0) &&
105 (supportedDrmCapabilityLen <= maxSupportedDrmCapabilityLen), false, "supportedDrmCapabilityLen is illegal");
106 std::vector<std::string> supportedDrmCapabilities;
107 for (int i = 0; i < supportedDrmCapabilityLen; i++) {
108 std::string supportedDrmCapability;
109 CHECK_AND_RETURN_RET_LOG(in.ReadString(supportedDrmCapability), false,
110 "read supportedDrmCapability failed");
111 supportedDrmCapabilities.emplace_back(supportedDrmCapability);
112 }
113 deviceInfo.supportedDrmCapabilities_ = supportedDrmCapabilities;
114 CHECK_AND_RETURN_RET_LOG(in.ReadBool(deviceInfo.isLegacy_), false, "Read isLegacy failed");
115 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.mediumTypes_), false, "Read mediumTypes failed");
116 outputDeviceInfo_.deviceInfos_.emplace_back(deviceInfo);
117 return true;
118 }
119
ReadFromParcel(Parcel & in)120 bool AVSessionDescriptor::ReadFromParcel(Parcel& in)
121 {
122 if (!CheckBeforReadFromParcel(in)) {
123 return false;
124 }
125 int32_t deviceInfoSize;
126 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfoSize), false, "write deviceInfoSize failed");
127 int32_t maxDeviceInfoSize = 1000;
128 CHECK_AND_RETURN_RET_LOG((deviceInfoSize >= 0) && (deviceInfoSize < maxDeviceInfoSize),
129 false, "deviceInfoSize is illegal");
130 for (int j = 0; j < deviceInfoSize; j++) {
131 DeviceInfo deviceInfo;
132 if (!CheckBeforReadFromParcel(in, deviceInfo)) {
133 return false;
134 }
135 }
136
137 sptr elementName = in.ReadParcelable<AppExecFwk::ElementName>();
138 if (elementName == nullptr) {
139 SLOGE("read element name failed");
140 return false;
141 }
142 elementName_ = *elementName;
143 return true;
144 }
145
WriteToParcel(Parcel & out) const146 bool DeviceInfo::WriteToParcel(Parcel& out) const
147 {
148 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(castCategory_), false, "write castCategory failed");
149 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceId_), false, "write deviceId failed");
150 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceName_), false, "write deviceName failed");
151 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceType_), false, "write deviceType failed");
152 CHECK_AND_RETURN_RET_LOG(out.WriteString(ipAddress_), false, "write ipAddress failed");
153 CHECK_AND_RETURN_RET_LOG(out.WriteString(manufacturer_), false, "write manufacturer failed");
154 CHECK_AND_RETURN_RET_LOG(out.WriteString(modelName_), false, "write modelName failed");
155 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(providerId_), false, "write providerId failed");
156 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(supportedProtocols_), false,
157 "write supportedProtocols failed");
158 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(authenticationStatus_), false,
159 "write authenticationStatus failed");
160 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(supportedDrmCapabilities_.size()), false,
161 "write supportedDrmCapabilities size failed");
162 for (auto supportedDrmCapability : supportedDrmCapabilities_) {
163 CHECK_AND_RETURN_RET_LOG(out.WriteString(supportedDrmCapability), false,
164 "write supportedDrmCapability failed");
165 }
166 CHECK_AND_RETURN_RET_LOG(out.WriteBool(isLegacy_), false, "write isLegacy failed");
167 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(mediumTypes_), false, "write mediumTypes failed");
168 return true;
169 }
170
ReadFromParcel(Parcel & in)171 bool DeviceInfo::ReadFromParcel(Parcel& in)
172 {
173 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(castCategory_), false, "Read castCategory failed");
174 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceId_), false, "Read deviceId failed");
175 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceName_), false, "Read deviceName failed");
176 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceType_), false, "Read deviceType failed");
177 CHECK_AND_RETURN_RET_LOG(in.ReadString(ipAddress_), false, "Read ipAddress failed");
178 CHECK_AND_RETURN_RET_LOG(in.ReadString(manufacturer_), false, "Read manufacturer failed");
179 CHECK_AND_RETURN_RET_LOG(in.ReadString(modelName_), false, "Read modelName failed");
180 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(providerId_), false, "Read providerId failed");
181 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(supportedProtocols_), false,
182 "Read supportedProtocols failed");
183 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(authenticationStatus_), false,
184 "Read authenticationStatus failed");
185 int32_t supportedDrmCapabilityLen = 0;
186 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(supportedDrmCapabilityLen), false,
187 "read supportedDrmCapabilityLen failed");
188 int32_t maxSupportedDrmCapabilityLen = 10;
189 CHECK_AND_RETURN_RET_LOG((supportedDrmCapabilityLen >= 0) &&
190 (supportedDrmCapabilityLen <= maxSupportedDrmCapabilityLen), false, "supportedDrmCapabilityLen is illegal");
191 std::vector<std::string> supportedDrmCapabilities;
192 for (int i = 0; i < supportedDrmCapabilityLen; i++) {
193 std::string supportedDrmCapability;
194 CHECK_AND_RETURN_RET_LOG(in.ReadString(supportedDrmCapability), false,
195 "read supportedDrmCapability failed");
196 supportedDrmCapabilities.emplace_back(supportedDrmCapability);
197 }
198 supportedDrmCapabilities_ = supportedDrmCapabilities;
199 CHECK_AND_RETURN_RET_LOG(in.ReadBool(isLegacy_), false, "Read isLegacy failed");
200 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(mediumTypes_), false, "Read mediumTypes failed");
201 return true;
202 }
203
WriteToParcel(Parcel & out) const204 bool OutputDeviceInfo::WriteToParcel(Parcel& out) const
205 {
206 int32_t deviceInfoSize = static_cast<int32_t>(deviceInfos_.size());
207 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfoSize), false, "write deviceInfoSize failed");
208 for (DeviceInfo deviceInfo : deviceInfos_) {
209 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.castCategory_), false, "write castCategory failed");
210 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.deviceId_), false, "write deviceId failed");
211 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.deviceName_), false, "write deviceName failed");
212 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.deviceType_), false, "write deviceType failed");
213 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.ipAddress_), false, "write ipAddress failed");
214 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.manufacturer_), false, "write manufacturer failed");
215 CHECK_AND_RETURN_RET_LOG(out.WriteString(deviceInfo.modelName_), false, "write modelName failed");
216 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.providerId_), false, "write providerId failed");
217 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.supportedProtocols_), false,
218 "Read supportedProtocols failed");
219 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.authenticationStatus_), false,
220 "Read authenticationStatus failed");
221 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.supportedDrmCapabilities_.size()), false,
222 "write supportedDrmCapabilities size failed");
223 for (auto supportedDrmCapability : deviceInfo.supportedDrmCapabilities_) {
224 CHECK_AND_RETURN_RET_LOG(out.WriteString(supportedDrmCapability), false,
225 "write supportedDrmCapability failed");
226 }
227 CHECK_AND_RETURN_RET_LOG(out.WriteBool(deviceInfo.isLegacy_), false, "write isLegacy failed");
228 CHECK_AND_RETURN_RET_LOG(out.WriteInt32(deviceInfo.mediumTypes_), false, "write mediumTypes failed");
229 }
230 return true;
231 }
232
ReadFromParcel(Parcel & in)233 bool OutputDeviceInfo::ReadFromParcel(Parcel& in)
234 {
235 int32_t deviceInfoSize;
236 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfoSize), false, "write deviceInfoSize failed");
237 int32_t maxDeviceInfoSize = 1000;
238 CHECK_AND_RETURN_RET_LOG((deviceInfoSize >= 0) && (deviceInfoSize < maxDeviceInfoSize),
239 false, "deviceInfoSize is illegal");
240 for (int i = 0; i < deviceInfoSize; i++) {
241 DeviceInfo deviceInfo;
242 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.castCategory_), false, "Read castCategory failed");
243 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.deviceId_), false, "Read deviceId failed");
244 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.deviceName_), false, "Read deviceName failed");
245 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.deviceType_), false, "Read deviceType failed");
246 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.ipAddress_), false, "Read ipAddress failed");
247 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.manufacturer_), false, "Read manufacturer failed");
248 CHECK_AND_RETURN_RET_LOG(in.ReadString(deviceInfo.modelName_), false, "Read modelName failed");
249 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.providerId_), false, "Read providerId failed");
250 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.supportedProtocols_), false,
251 "Read supportedProtocols failed");
252 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.authenticationStatus_), false,
253 "Read authenticationStatus failed");
254 int32_t supportedDrmCapabilityLen = 0;
255 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(supportedDrmCapabilityLen), false,
256 "read supportedDrmCapabilityLen failed");
257 int32_t maxSupportedDrmCapabilityLen = 10;
258 CHECK_AND_RETURN_RET_LOG((supportedDrmCapabilityLen >= 0) &&
259 (supportedDrmCapabilityLen <= maxSupportedDrmCapabilityLen), false, "supportedDrmCapabilityLen is illegal");
260 std::vector<std::string> supportedDrmCapabilities;
261 for (int k = 0; k < supportedDrmCapabilityLen; k++) {
262 std::string supportedDrmCapability;
263 CHECK_AND_RETURN_RET_LOG(in.ReadString(supportedDrmCapability), false,
264 "read supportedDrmCapability failed");
265 supportedDrmCapabilities.emplace_back(supportedDrmCapability);
266 }
267 deviceInfo.supportedDrmCapabilities_ = supportedDrmCapabilities;
268 CHECK_AND_RETURN_RET_LOG(in.ReadBool(deviceInfo.isLegacy_), false, "Read isLegacy failed");
269 CHECK_AND_RETURN_RET_LOG(in.ReadInt32(deviceInfo.mediumTypes_), false, "Read mediumTypes failed");
270 deviceInfos_.emplace_back(deviceInfo);
271 }
272 return true;
273 }
274 } // namespace OHOS::AVSession
275