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