1 /*
2 * Copyright (c) 2023-2024 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 "ecological_rule/ability_ecological_rule_mgr_service_param.h"
17
18 #include "hilog_tag_wrapper.h"
19
20 namespace OHOS {
21 namespace EcologicalRuleMgrService {
22 #define TAG "ERMS_PARAM"
23
Unmarshalling(Parcel & in)24 AbilityExperienceRule *AbilityExperienceRule::Unmarshalling(Parcel &in)
25 {
26 auto *rule = new (std::nothrow) AbilityExperienceRule();
27 if (rule == nullptr) {
28 return nullptr;
29 }
30
31 if (!in.ReadInt32(rule->resultCode)) {
32 delete rule;
33 return nullptr;
34 }
35
36 if (!in.ReadString(rule->sceneCode)) {
37 delete rule;
38 return nullptr;
39 }
40
41 rule->replaceWant = in.ReadParcelable<Want>();
42
43 if (!in.ReadBool(rule->isBackSkuExempt)) {
44 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "read isBackSkuExempt failed");
45 rule->isBackSkuExempt = true;
46 }
47
48 return rule;
49 }
50
Marshalling(Parcel & parcel) const51 bool AbilityExperienceRule::Marshalling(Parcel &parcel) const
52 {
53 if (!parcel.WriteInt32(resultCode)) {
54 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write resultCode failed");
55 return false;
56 }
57
58 if (!parcel.WriteString(sceneCode)) {
59 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write sceneCode failed");
60 return false;
61 }
62 if (!parcel.WriteParcelable(replaceWant)) {
63 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write replaceWant failed");
64 return false;
65 }
66
67 if (!parcel.WriteBool(isBackSkuExempt)) {
68 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write isBackSkuExempt failed");
69 }
70
71 return true;
72 }
73
ReadFromParcel(Parcel & parcel)74 bool AbilityCallerInfo::ReadFromParcel(Parcel &parcel)
75 {
76 TAG_LOGD(AAFwkTag::ECOLOGICAL_RULE, "read from parcel");
77 return true;
78 }
79
Unmarshalling(Parcel & in)80 AbilityCallerInfo *AbilityCallerInfo::Unmarshalling(Parcel &in)
81 {
82 auto *info = new (std::nothrow) AbilityCallerInfo();
83 if (info == nullptr) {
84 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "info null");
85 return nullptr;
86 }
87
88 info->packageName = in.ReadString();
89 TAG_LOGD(AAFwkTag::ECOLOGICAL_RULE, "read packageName result: %{public}s", info->packageName.c_str());
90
91 if (!in.ReadInt32(info->uid)) {
92 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "read uid failed");
93 delete info;
94 return nullptr;
95 }
96
97 if (!in.ReadInt32(info->pid)) {
98 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "read pid failed");
99 delete info;
100 return nullptr;
101 }
102
103 if (!in.ReadInt32(info->callerAppType)) {
104 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "read callerAppType failed");
105 delete info;
106 return nullptr;
107 }
108
109 if (!in.ReadInt32(info->targetAppType)) {
110 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "read targetAppType failed");
111 delete info;
112 return nullptr;
113 }
114
115 if (!in.ReadInt32(info->callerModelType)) {
116 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "read callerModelType failed");
117 delete info;
118 return nullptr;
119 }
120
121 info->targetAppDistType = in.ReadString();
122 info->targetLinkFeature = in.ReadString();
123
124 if (!in.ReadInt32(info->targetLinkType)) {
125 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "read targetLinkType failed");
126 delete info;
127 return nullptr;
128 }
129
130 info->callerAbilityType = static_cast<AppExecFwk::AbilityType>(in.ReadInt32());
131
132 info->embedded = in.ReadInt32();
133 info->callerAppProvisionType = in.ReadString();
134 info->targetAppProvisionType = in.ReadString();
135 info->callerExtensionAbilityType = static_cast<AppExecFwk::ExtensionAbilityType>(in.ReadInt32());
136 info->targetAbilityType = static_cast<AppExecFwk::AbilityType>(in.ReadInt32());
137 info->targetExtensionAbilityType = static_cast<AppExecFwk::ExtensionAbilityType>(in.ReadInt32());
138 return info;
139 }
140
Marshalling(Parcel & parcel) const141 bool AbilityCallerInfo::Marshalling(Parcel &parcel) const
142 {
143 if (!DoMarshallingOne(parcel)) {
144 return false;
145 }
146
147 if (!parcel.WriteInt32(embedded)) {
148 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write embedded failed");
149 return false;
150 }
151
152 if (!parcel.WriteString(callerAppProvisionType)) {
153 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write callerAppProvisionType failed");
154 return false;
155 }
156
157 if (!parcel.WriteString(targetAppProvisionType)) {
158 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write targetAppProvisionType failed");
159 return false;
160 }
161
162 if (!parcel.WriteInt32(static_cast<int32_t>(callerExtensionAbilityType))) {
163 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write callerExtensionAbilityType failed");
164 return false;
165 }
166
167 if (!parcel.WriteInt32(static_cast<int32_t>(targetAbilityType))) {
168 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write targetAbilityType failed");
169 return false;
170 }
171
172 if (!parcel.WriteInt32(static_cast<int32_t>(targetExtensionAbilityType))) {
173 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write targetExtensionAbilityType failed");
174 return false;
175 }
176
177 if (!parcel.WriteInt32(userId)) {
178 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write userId failed");
179 return false;
180 }
181 return true;
182 }
183
DoMarshallingOne(Parcel & parcel) const184 bool AbilityCallerInfo::DoMarshallingOne(Parcel &parcel) const
185 {
186 if (!parcel.WriteString(packageName)) {
187 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write packageName failed");
188 return false;
189 }
190
191 if (!parcel.WriteInt32(uid)) {
192 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write uid failed");
193 return false;
194 }
195
196 if (!parcel.WriteInt32(pid)) {
197 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write pid failed");
198 return false;
199 }
200
201 if (!parcel.WriteInt32(callerAppType)) {
202 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write callerAppType failed");
203 return false;
204 }
205
206 if (!parcel.WriteInt32(targetAppType)) {
207 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write targetAppType failed");
208 return false;
209 }
210
211 if (!parcel.WriteInt32(callerModelType)) {
212 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write callerModelType failed");
213 return false;
214 }
215
216 if (!parcel.WriteString(targetAppDistType)) {
217 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write targetAppDistType failed");
218 return false;
219 }
220
221 if (!parcel.WriteString(targetLinkFeature)) {
222 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write targetLinkFeature failed");
223 return false;
224 }
225
226 if (!parcel.WriteInt32(targetLinkType)) {
227 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write targetLinkType failed");
228 return false;
229 }
230
231 if (!parcel.WriteInt32(static_cast<int32_t>(callerAbilityType))) {
232 TAG_LOGE(AAFwkTag::ECOLOGICAL_RULE, "write callerAbilityType failed");
233 return false;
234 }
235
236 return true;
237 }
238
ToString() const239 std::string AbilityCallerInfo::ToString() const
240 {
241 std::string str = "CallerInfo{packageName:" + packageName + ",uid:" + std::to_string(uid) +
242 ",pid:" + std::to_string(pid) + ",callerAppType:" + std::to_string(callerAppType) +
243 ",targetAppType:" + std::to_string(targetAppType) + ",callerModelType:" + std::to_string(callerModelType) +
244 ",targetAppDistType:" + targetAppDistType + ",targetLinkFeature:" + targetLinkFeature + ",targetLinkType:" +
245 std::to_string(targetLinkType) + ",callerAbilityType:" +
246 std::to_string(static_cast<int32_t>(callerAbilityType)) + ",callerExtensionAbilityType:" +
247 std::to_string(static_cast<int32_t>(callerExtensionAbilityType)) + ",embedded:" +
248 std::to_string(embedded) + ",callerAppProvisionType:" + callerAppProvisionType + ",targetAppProvisionType:" +
249 targetAppProvisionType + ",targetAbilityType:" +
250 std::to_string(static_cast<int32_t>(targetAbilityType)) + ",targetExtensionAbilityType:" +
251 std::to_string(static_cast<int32_t>(targetExtensionAbilityType)) + "}";
252 return str;
253 }
254 } // namespace EcologicalRuleMgrService
255 } // namespace OHOS
256