1 /*
2 * Copyright (c) 2022 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 "parcel_utils.h"
17 #include "perm_active_response_parcel.h"
18
19 namespace OHOS {
20 namespace Security {
21 namespace AccessToken {
Marshalling(Parcel & out) const22 bool ActiveChangeResponseParcel::Marshalling(Parcel& out) const
23 {
24 RETURN_IF_FALSE(out.WriteUint32(this->changeResponse.callingTokenID));
25 RETURN_IF_FALSE(out.WriteUint32(this->changeResponse.tokenID));
26 RETURN_IF_FALSE(out.WriteString(this->changeResponse.permissionName));
27 RETURN_IF_FALSE(out.WriteString(this->changeResponse.deviceId));
28 RETURN_IF_FALSE(out.WriteInt32(this->changeResponse.type));
29 RETURN_IF_FALSE(out.WriteInt32(this->changeResponse.usedType));
30 RETURN_IF_FALSE(out.WriteInt32(this->changeResponse.pid));
31 return true;
32 }
33
Unmarshalling(Parcel & in)34 ActiveChangeResponseParcel* ActiveChangeResponseParcel::Unmarshalling(Parcel& in)
35 {
36 auto* activeChangeResponseParcel = new (std::nothrow) ActiveChangeResponseParcel();
37 if (activeChangeResponseParcel == nullptr) {
38 return nullptr;
39 }
40
41 RELEASE_IF_FALSE(in.ReadUint32(activeChangeResponseParcel->changeResponse.callingTokenID),
42 activeChangeResponseParcel);
43 RELEASE_IF_FALSE(in.ReadUint32(activeChangeResponseParcel->changeResponse.tokenID), activeChangeResponseParcel);
44 RELEASE_IF_FALSE(in.ReadString(activeChangeResponseParcel->changeResponse.permissionName),
45 activeChangeResponseParcel);
46 RELEASE_IF_FALSE(in.ReadString(activeChangeResponseParcel->changeResponse.deviceId), activeChangeResponseParcel);
47
48 int32_t type;
49 RELEASE_IF_FALSE(in.ReadInt32(type), activeChangeResponseParcel);
50 activeChangeResponseParcel->changeResponse.type = static_cast<ActiveChangeType>(type);
51 int32_t usedType;
52 RELEASE_IF_FALSE(in.ReadInt32(usedType), activeChangeResponseParcel);
53 activeChangeResponseParcel->changeResponse.usedType = static_cast<PermissionUsedType>(usedType);
54 RELEASE_IF_FALSE(in.ReadInt32(activeChangeResponseParcel->changeResponse.pid), activeChangeResponseParcel);
55 return activeChangeResponseParcel;
56 }
57 } // namespace AccessToken
58 } // namespace Security
59 } // namespace OHOS
60