1 /*
2 * Copyright (c) 2021-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 "ability_manager_stub.h"
17
18 #include "errors.h"
19 #include "string_ex.h"
20
21 #include "ability_connect_callback_proxy.h"
22 #include "ability_connect_callback_stub.h"
23 #include "ability_manager_errors.h"
24 #include "ability_scheduler_proxy.h"
25 #include "ability_scheduler_stub.h"
26
27 namespace OHOS {
28 namespace AAFwk {
AbilityManagerStub()29 AbilityManagerStub::AbilityManagerStub()
30 {
31 FirstStepInit();
32 SecondStepInit();
33 ThirdStepInit();
34 }
35
~AbilityManagerStub()36 AbilityManagerStub::~AbilityManagerStub()
37 {
38 requestFuncMap_.clear();
39 }
40
FirstStepInit()41 void AbilityManagerStub::FirstStepInit()
42 {
43 requestFuncMap_[TERMINATE_ABILITY] = &AbilityManagerStub::TerminateAbilityInner;
44 requestFuncMap_[TERMINATE_ABILITY_BY_CALLER] = &AbilityManagerStub::TerminateAbilityByCallerInner;
45 requestFuncMap_[MINIMIZE_ABILITY] = &AbilityManagerStub::MinimizeAbilityInner;
46 requestFuncMap_[ATTACH_ABILITY_THREAD] = &AbilityManagerStub::AttachAbilityThreadInner;
47 requestFuncMap_[ABILITY_TRANSITION_DONE] = &AbilityManagerStub::AbilityTransitionDoneInner;
48 requestFuncMap_[CONNECT_ABILITY_DONE] = &AbilityManagerStub::ScheduleConnectAbilityDoneInner;
49 requestFuncMap_[DISCONNECT_ABILITY_DONE] = &AbilityManagerStub::ScheduleDisconnectAbilityDoneInner;
50 requestFuncMap_[TERMINATE_ABILITY_RESULT] = &AbilityManagerStub::TerminateAbilityResultInner;
51 requestFuncMap_[COMMAND_ABILITY_DONE] = &AbilityManagerStub::ScheduleCommandAbilityDoneInner;
52 requestFuncMap_[ACQUIRE_DATA_ABILITY] = &AbilityManagerStub::AcquireDataAbilityInner;
53 requestFuncMap_[RELEASE_DATA_ABILITY] = &AbilityManagerStub::ReleaseDataAbilityInner;
54 requestFuncMap_[KILL_PROCESS] = &AbilityManagerStub::KillProcessInner;
55 requestFuncMap_[UNINSTALL_APP] = &AbilityManagerStub::UninstallAppInner;
56 requestFuncMap_[START_ABILITY] = &AbilityManagerStub::StartAbilityInner;
57 requestFuncMap_[START_ABILITY_ADD_CALLER] = &AbilityManagerStub::StartAbilityAddCallerInner;
58 requestFuncMap_[CONNECT_ABILITY] = &AbilityManagerStub::ConnectAbilityInner;
59 requestFuncMap_[DISCONNECT_ABILITY] = &AbilityManagerStub::DisconnectAbilityInner;
60 requestFuncMap_[STOP_SERVICE_ABILITY] = &AbilityManagerStub::StopServiceAbilityInner;
61 requestFuncMap_[DUMP_STATE] = &AbilityManagerStub::DumpStateInner;
62 requestFuncMap_[DUMPSYS_STATE] = &AbilityManagerStub::DumpSysStateInner;
63 requestFuncMap_[START_ABILITY_FOR_SETTINGS] = &AbilityManagerStub::StartAbilityForSettingsInner;
64 requestFuncMap_[CONTINUE_MISSION] = &AbilityManagerStub::ContinueMissionInner;
65 requestFuncMap_[CONTINUE_ABILITY] = &AbilityManagerStub::ContinueAbilityInner;
66 requestFuncMap_[START_CONTINUATION] = &AbilityManagerStub::StartContinuationInner;
67 requestFuncMap_[NOTIFY_COMPLETE_CONTINUATION] = &AbilityManagerStub::NotifyCompleteContinuationInner;
68 requestFuncMap_[NOTIFY_CONTINUATION_RESULT] = &AbilityManagerStub::NotifyContinuationResultInner;
69 requestFuncMap_[SEND_RESULT_TO_ABILITY] = &AbilityManagerStub::SendResultToAbilityInner;
70 requestFuncMap_[REGISTER_REMOTE_MISSION_LISTENER] = &AbilityManagerStub::RegisterRemoteMissionListenerInner;
71 requestFuncMap_[UNREGISTER_REMOTE_MISSION_LISTENER] = &AbilityManagerStub::UnRegisterRemoteMissionListenerInner;
72 requestFuncMap_[START_ABILITY_FOR_OPTIONS] = &AbilityManagerStub::StartAbilityForOptionsInner;
73 requestFuncMap_[START_SYNC_MISSIONS] = &AbilityManagerStub::StartSyncRemoteMissionsInner;
74 requestFuncMap_[STOP_SYNC_MISSIONS] = &AbilityManagerStub::StopSyncRemoteMissionsInner;
75 #ifdef ABILITY_COMMAND_FOR_TEST
76 requestFuncMap_[FORCE_TIMEOUT] = &AbilityManagerStub::ForceTimeoutForTestInner;
77 #endif
78 requestFuncMap_[FREE_INSTALL_ABILITY_FROM_REMOTE] = &AbilityManagerStub::FreeInstallAbilityFromRemoteInner;
79 requestFuncMap_[CONNECT_ABILITY_WITH_TYPE] = &AbilityManagerStub::ConnectAbilityWithTypeInner;
80 requestFuncMap_[ABILITY_RECOVERY] = &AbilityManagerStub::ScheduleRecoverAbilityInner;
81 requestFuncMap_[ABILITY_RECOVERY_ENABLE] = &AbilityManagerStub::EnableRecoverAbilityInner;
82 }
83
SecondStepInit()84 void AbilityManagerStub::SecondStepInit()
85 {
86 requestFuncMap_[GET_PENDING_WANT_SENDER] = &AbilityManagerStub::GetWantSenderInner;
87 requestFuncMap_[SEND_PENDING_WANT_SENDER] = &AbilityManagerStub::SendWantSenderInner;
88 requestFuncMap_[CANCEL_PENDING_WANT_SENDER] = &AbilityManagerStub::CancelWantSenderInner;
89 requestFuncMap_[GET_PENDING_WANT_UID] = &AbilityManagerStub::GetPendingWantUidInner;
90 requestFuncMap_[GET_PENDING_WANT_USERID] = &AbilityManagerStub::GetPendingWantUserIdInner;
91 requestFuncMap_[GET_PENDING_WANT_BUNDLENAME] = &AbilityManagerStub::GetPendingWantBundleNameInner;
92 requestFuncMap_[GET_PENDING_WANT_CODE] = &AbilityManagerStub::GetPendingWantCodeInner;
93 requestFuncMap_[GET_PENDING_WANT_TYPE] = &AbilityManagerStub::GetPendingWantTypeInner;
94 requestFuncMap_[REGISTER_CANCEL_LISTENER] = &AbilityManagerStub::RegisterCancelListenerInner;
95 requestFuncMap_[UNREGISTER_CANCEL_LISTENER] = &AbilityManagerStub::UnregisterCancelListenerInner;
96 requestFuncMap_[GET_PENDING_REQUEST_WANT] = &AbilityManagerStub::GetPendingRequestWantInner;
97 requestFuncMap_[GET_PENDING_WANT_SENDER_INFO] = &AbilityManagerStub::GetPendingRequestWantInner;
98 requestFuncMap_[GET_APP_MEMORY_SIZE] = &AbilityManagerStub::GetAppMemorySizeInner;
99 requestFuncMap_[IS_RAM_CONSTRAINED_DEVICE] = &AbilityManagerStub::IsRamConstrainedDeviceInner;
100 requestFuncMap_[CLEAR_UP_APPLICATION_DATA] = &AbilityManagerStub::ClearUpApplicationDataInner;
101 requestFuncMap_[LOCK_MISSION_FOR_CLEANUP] = &AbilityManagerStub::LockMissionForCleanupInner;
102 requestFuncMap_[UNLOCK_MISSION_FOR_CLEANUP] = &AbilityManagerStub::UnlockMissionForCleanupInner;
103 requestFuncMap_[REGISTER_MISSION_LISTENER] = &AbilityManagerStub::RegisterMissionListenerInner;
104 requestFuncMap_[UNREGISTER_MISSION_LISTENER] = &AbilityManagerStub::UnRegisterMissionListenerInner;
105 requestFuncMap_[GET_MISSION_INFOS] = &AbilityManagerStub::GetMissionInfosInner;
106 requestFuncMap_[GET_MISSION_INFO_BY_ID] = &AbilityManagerStub::GetMissionInfoInner;
107 requestFuncMap_[CLEAN_MISSION] = &AbilityManagerStub::CleanMissionInner;
108 requestFuncMap_[CLEAN_ALL_MISSIONS] = &AbilityManagerStub::CleanAllMissionsInner;
109 requestFuncMap_[MOVE_MISSION_TO_FRONT] = &AbilityManagerStub::MoveMissionToFrontInner;
110 requestFuncMap_[MOVE_MISSION_TO_FRONT_BY_OPTIONS] = &AbilityManagerStub::MoveMissionToFrontByOptionsInner;
111 requestFuncMap_[START_CALL_ABILITY] = &AbilityManagerStub::StartAbilityByCallInner;
112 requestFuncMap_[CALL_REQUEST_DONE] = &AbilityManagerStub::CallRequestDoneInner;
113 requestFuncMap_[RELEASE_CALL_ABILITY] = &AbilityManagerStub::ReleaseCallInner;
114 requestFuncMap_[START_USER] = &AbilityManagerStub::StartUserInner;
115 requestFuncMap_[STOP_USER] = &AbilityManagerStub::StopUserInner;
116 requestFuncMap_[GET_ABILITY_RUNNING_INFO] = &AbilityManagerStub::GetAbilityRunningInfosInner;
117 requestFuncMap_[GET_EXTENSION_RUNNING_INFO] = &AbilityManagerStub::GetExtensionRunningInfosInner;
118 requestFuncMap_[GET_PROCESS_RUNNING_INFO] = &AbilityManagerStub::GetProcessRunningInfosInner;
119 requestFuncMap_[SET_ABILITY_CONTROLLER] = &AbilityManagerStub::SetAbilityControllerInner;
120 requestFuncMap_[GET_MISSION_SNAPSHOT_INFO] = &AbilityManagerStub::GetMissionSnapshotInfoInner;
121 requestFuncMap_[IS_USER_A_STABILITY_TEST] = &AbilityManagerStub::IsRunningInStabilityTestInner;
122 requestFuncMap_[SEND_APP_NOT_RESPONSE_PROCESS_ID] = &AbilityManagerStub::SendANRProcessIDInner;
123 #ifdef ABILITY_COMMAND_FOR_TEST
124 requestFuncMap_[BLOCK_ABILITY] = &AbilityManagerStub::BlockAbilityInner;
125 requestFuncMap_[BLOCK_AMS_SERVICE] = &AbilityManagerStub::BlockAmsServiceInner;
126 requestFuncMap_[BLOCK_APP_SERVICE] = &AbilityManagerStub::BlockAppServiceInner;
127 #endif
128 }
129
ThirdStepInit()130 void AbilityManagerStub::ThirdStepInit()
131 {
132 requestFuncMap_[START_USER_TEST] = &AbilityManagerStub::StartUserTestInner;
133 requestFuncMap_[FINISH_USER_TEST] = &AbilityManagerStub::FinishUserTestInner;
134 requestFuncMap_[GET_TOP_ABILITY_TOKEN] = &AbilityManagerStub::GetTopAbilityTokenInner;
135 requestFuncMap_[DELEGATOR_DO_ABILITY_FOREGROUND] = &AbilityManagerStub::DelegatorDoAbilityForegroundInner;
136 requestFuncMap_[DELEGATOR_DO_ABILITY_BACKGROUND] = &AbilityManagerStub::DelegatorDoAbilityBackgroundInner;
137 requestFuncMap_[DO_ABILITY_FOREGROUND] = &AbilityManagerStub::DoAbilityForegroundInner;
138 requestFuncMap_[DO_ABILITY_BACKGROUND] = &AbilityManagerStub::DoAbilityBackgroundInner;
139 requestFuncMap_[GET_MISSION_ID_BY_ABILITY_TOKEN] = &AbilityManagerStub::GetMissionIdByTokenInner;
140 requestFuncMap_[GET_TOP_ABILITY] = &AbilityManagerStub::GetTopAbilityInner;
141 requestFuncMap_[DUMP_ABILITY_INFO_DONE] = &AbilityManagerStub::DumpAbilityInfoDoneInner;
142 requestFuncMap_[START_EXTENSION_ABILITY] = &AbilityManagerStub::StartExtensionAbilityInner;
143 requestFuncMap_[STOP_EXTENSION_ABILITY] = &AbilityManagerStub::StopExtensionAbilityInner;
144 requestFuncMap_[UPDATE_MISSION_SNAPSHOT] = &AbilityManagerStub::UpdateMissionSnapShotInner;
145 requestFuncMap_[REGISTER_CONNECTION_OBSERVER] = &AbilityManagerStub::RegisterConnectionObserverInner;
146 requestFuncMap_[UNREGISTER_CONNECTION_OBSERVER] = &AbilityManagerStub::UnregisterConnectionObserverInner;
147 requestFuncMap_[GET_DLP_CONNECTION_INFOS] = &AbilityManagerStub::GetDlpConnectionInfosInner;
148 #ifdef SUPPORT_GRAPHICS
149 requestFuncMap_[SET_MISSION_LABEL] = &AbilityManagerStub::SetMissionLabelInner;
150 requestFuncMap_[SET_MISSION_ICON] = &AbilityManagerStub::SetMissionIconInner;
151 requestFuncMap_[REGISTER_WMS_HANDLER] = &AbilityManagerStub::RegisterWindowManagerServiceHandlerInner;
152 requestFuncMap_[COMPLETEFIRSTFRAMEDRAWING] = &AbilityManagerStub::CompleteFirstFrameDrawingInner;
153 #endif
154 requestFuncMap_[SET_COMPONENT_INTERCEPTION] = &AbilityManagerStub::SetComponentInterceptionInner;
155 requestFuncMap_[SEND_ABILITY_RESULT_BY_TOKEN] = &AbilityManagerStub::SendResultToAbilityByTokenInner;
156 }
157
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)158 int AbilityManagerStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option)
159 {
160 std::u16string descriptor = AbilityManagerStub::GetDescriptor();
161 std::u16string remoteDescriptor = data.ReadInterfaceToken();
162 if (descriptor != remoteDescriptor) {
163 HILOG_INFO("local descriptor is not equal to remote");
164 return ERR_INVALID_STATE;
165 }
166
167 auto itFunc = requestFuncMap_.find(code);
168 if (itFunc != requestFuncMap_.end()) {
169 auto requestFunc = itFunc->second;
170 if (requestFunc != nullptr) {
171 return (this->*requestFunc)(data, reply);
172 }
173 }
174 HILOG_WARN("default case, need check.");
175 return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
176 }
177
GetTopAbilityInner(MessageParcel & data,MessageParcel & reply)178 int AbilityManagerStub::GetTopAbilityInner(MessageParcel &data, MessageParcel &reply)
179 {
180 AppExecFwk::ElementName result = GetTopAbility();
181 if (result.GetDeviceID().empty()) {
182 HILOG_DEBUG("GetTopAbilityInner is nullptr");
183 }
184 reply.WriteParcelable(&result);
185 return NO_ERROR;
186 }
187
TerminateAbilityInner(MessageParcel & data,MessageParcel & reply)188 int AbilityManagerStub::TerminateAbilityInner(MessageParcel &data, MessageParcel &reply)
189 {
190 sptr<IRemoteObject> token = nullptr;
191 if (data.ReadBool()) {
192 token = data.ReadRemoteObject();
193 }
194 int resultCode = data.ReadInt32();
195 Want *resultWant = data.ReadParcelable<Want>();
196 bool flag = data.ReadBool();
197 int32_t result;
198 if (flag) {
199 result = TerminateAbility(token, resultCode, resultWant);
200 } else {
201 result = CloseAbility(token, resultCode, resultWant);
202 }
203 reply.WriteInt32(result);
204 if (resultWant != nullptr) {
205 delete resultWant;
206 }
207 return NO_ERROR;
208 }
209
SendResultToAbilityInner(MessageParcel & data,MessageParcel & reply)210 int AbilityManagerStub::SendResultToAbilityInner(MessageParcel &data, MessageParcel &reply)
211 {
212 int requestCode = data.ReadInt32();
213 int resultCode = data.ReadInt32();
214 Want *resultWant = data.ReadParcelable<Want>();
215 if (resultWant == nullptr) {
216 HILOG_ERROR("resultWant is nullptr");
217 return ERR_INVALID_VALUE;
218 }
219 int32_t result = SendResultToAbility(requestCode, resultCode, *resultWant);
220 reply.WriteInt32(result);
221 if (resultWant != nullptr) {
222 delete resultWant;
223 }
224 return NO_ERROR;
225 }
226
TerminateAbilityByCallerInner(MessageParcel & data,MessageParcel & reply)227 int AbilityManagerStub::TerminateAbilityByCallerInner(MessageParcel &data, MessageParcel &reply)
228 {
229 sptr<IRemoteObject> callerToken = nullptr;
230 if (data.ReadBool()) {
231 callerToken = data.ReadRemoteObject();
232 }
233 int requestCode = data.ReadInt32();
234 int32_t result = TerminateAbilityByCaller(callerToken, requestCode);
235 reply.WriteInt32(result);
236 return NO_ERROR;
237 }
238
MinimizeAbilityInner(MessageParcel & data,MessageParcel & reply)239 int AbilityManagerStub::MinimizeAbilityInner(MessageParcel &data, MessageParcel &reply)
240 {
241 auto token = data.ReadRemoteObject();
242 auto fromUser = data.ReadBool();
243 int32_t result = MinimizeAbility(token, fromUser);
244 reply.WriteInt32(result);
245 return NO_ERROR;
246 }
247
AttachAbilityThreadInner(MessageParcel & data,MessageParcel & reply)248 int AbilityManagerStub::AttachAbilityThreadInner(MessageParcel &data, MessageParcel &reply)
249 {
250 auto scheduler = iface_cast<IAbilityScheduler>(data.ReadRemoteObject());
251 auto token = data.ReadRemoteObject();
252 int32_t result = AttachAbilityThread(scheduler, token);
253 reply.WriteInt32(result);
254 return NO_ERROR;
255 }
256
AbilityTransitionDoneInner(MessageParcel & data,MessageParcel & reply)257 int AbilityManagerStub::AbilityTransitionDoneInner(MessageParcel &data, MessageParcel &reply)
258 {
259 auto token = data.ReadRemoteObject();
260 int targetState = data.ReadInt32();
261 std::unique_ptr<PacMap> saveData(data.ReadParcelable<PacMap>());
262 if (!saveData) {
263 HILOG_INFO("save data is nullptr");
264 return ERR_INVALID_VALUE;
265 }
266 int32_t result = AbilityTransitionDone(token, targetState, *saveData);
267 reply.WriteInt32(result);
268 return NO_ERROR;
269 }
270
ScheduleConnectAbilityDoneInner(MessageParcel & data,MessageParcel & reply)271 int AbilityManagerStub::ScheduleConnectAbilityDoneInner(MessageParcel &data, MessageParcel &reply)
272 {
273 sptr<IRemoteObject> token = nullptr;
274 sptr<IRemoteObject> remoteObject = nullptr;
275 if (data.ReadBool()) {
276 token = data.ReadRemoteObject();
277 }
278 if (data.ReadBool()) {
279 remoteObject = data.ReadRemoteObject();
280 }
281 int32_t result = ScheduleConnectAbilityDone(token, remoteObject);
282 reply.WriteInt32(result);
283 return NO_ERROR;
284 }
285
ScheduleDisconnectAbilityDoneInner(MessageParcel & data,MessageParcel & reply)286 int AbilityManagerStub::ScheduleDisconnectAbilityDoneInner(MessageParcel &data, MessageParcel &reply)
287 {
288 auto token = data.ReadRemoteObject();
289 int32_t result = ScheduleDisconnectAbilityDone(token);
290 reply.WriteInt32(result);
291 return NO_ERROR;
292 }
293
TerminateAbilityResultInner(MessageParcel & data,MessageParcel & reply)294 int AbilityManagerStub::TerminateAbilityResultInner(MessageParcel &data, MessageParcel &reply)
295 {
296 sptr<IRemoteObject> token = data.ReadRemoteObject();
297 int startId = data.ReadInt32();
298 int32_t result = TerminateAbilityResult(token, startId);
299 reply.WriteInt32(result);
300 return NO_ERROR;
301 }
302
ScheduleCommandAbilityDoneInner(MessageParcel & data,MessageParcel & reply)303 int AbilityManagerStub::ScheduleCommandAbilityDoneInner(MessageParcel &data, MessageParcel &reply)
304 {
305 auto token = data.ReadRemoteObject();
306 int32_t result = ScheduleCommandAbilityDone(token);
307 reply.WriteInt32(result);
308 return NO_ERROR;
309 }
310
AcquireDataAbilityInner(MessageParcel & data,MessageParcel & reply)311 int AbilityManagerStub::AcquireDataAbilityInner(MessageParcel &data, MessageParcel &reply)
312 {
313 std::unique_ptr<Uri> uri(new Uri(data.ReadString()));
314 bool tryBind = data.ReadBool();
315 sptr<IRemoteObject> callerToken = data.ReadRemoteObject();
316 sptr<IAbilityScheduler> result = AcquireDataAbility(*uri, tryBind, callerToken);
317 HILOG_DEBUG("acquire data ability %{public}s", result ? "ok" : "failed");
318 if (result) {
319 reply.WriteRemoteObject(result->AsObject());
320 } else {
321 reply.WriteParcelable(nullptr);
322 }
323 return NO_ERROR;
324 }
325
ReleaseDataAbilityInner(MessageParcel & data,MessageParcel & reply)326 int AbilityManagerStub::ReleaseDataAbilityInner(MessageParcel &data, MessageParcel &reply)
327 {
328 auto scheduler = iface_cast<IAbilityScheduler>(data.ReadRemoteObject());
329 auto callerToken = data.ReadRemoteObject();
330 int32_t result = ReleaseDataAbility(scheduler, callerToken);
331 HILOG_DEBUG("release data ability ret = %d", result);
332 reply.WriteInt32(result);
333 return NO_ERROR;
334 }
335
KillProcessInner(MessageParcel & data,MessageParcel & reply)336 int AbilityManagerStub::KillProcessInner(MessageParcel &data, MessageParcel &reply)
337 {
338 std::string bundleName = Str16ToStr8(data.ReadString16());
339 int result = KillProcess(bundleName);
340 if (!reply.WriteInt32(result)) {
341 HILOG_ERROR("remove stack error");
342 return ERR_INVALID_VALUE;
343 }
344 return NO_ERROR;
345 }
346
ClearUpApplicationDataInner(MessageParcel & data,MessageParcel & reply)347 int AbilityManagerStub::ClearUpApplicationDataInner(MessageParcel &data, MessageParcel &reply)
348 {
349 std::string bundleName = Str16ToStr8(data.ReadString16());
350 int result = ClearUpApplicationData(bundleName);
351 if (!reply.WriteInt32(result)) {
352 HILOG_ERROR("ClearUpApplicationData error");
353 return ERR_INVALID_VALUE;
354 }
355 return NO_ERROR;
356 }
357
UninstallAppInner(MessageParcel & data,MessageParcel & reply)358 int AbilityManagerStub::UninstallAppInner(MessageParcel &data, MessageParcel &reply)
359 {
360 std::string bundleName = Str16ToStr8(data.ReadString16());
361 int32_t uid = data.ReadInt32();
362 int result = UninstallApp(bundleName, uid);
363 if (!reply.WriteInt32(result)) {
364 HILOG_ERROR("remove stack error");
365 return ERR_INVALID_VALUE;
366 }
367 return NO_ERROR;
368 }
369
StartAbilityInner(MessageParcel & data,MessageParcel & reply)370 int AbilityManagerStub::StartAbilityInner(MessageParcel &data, MessageParcel &reply)
371 {
372 Want *want = data.ReadParcelable<Want>();
373 if (want == nullptr) {
374 HILOG_ERROR("want is nullptr");
375 return ERR_INVALID_VALUE;
376 }
377 int32_t userId = data.ReadInt32();
378 int requestCode = data.ReadInt32();
379 int32_t result = StartAbility(*want, userId, requestCode);
380 reply.WriteInt32(result);
381 delete want;
382 return NO_ERROR;
383 }
384
StartExtensionAbilityInner(MessageParcel & data,MessageParcel & reply)385 int AbilityManagerStub::StartExtensionAbilityInner(MessageParcel &data, MessageParcel &reply)
386 {
387 Want *want = data.ReadParcelable<Want>();
388 if (want == nullptr) {
389 HILOG_ERROR("want is nullptr");
390 return ERR_INVALID_VALUE;
391 }
392 sptr<IRemoteObject> callerToken = nullptr;
393 if (data.ReadBool()) {
394 callerToken = data.ReadRemoteObject();
395 }
396 int32_t userId = data.ReadInt32();
397 int32_t extensionType = data.ReadInt32();
398 int32_t result = StartExtensionAbility(*want, callerToken, userId,
399 static_cast<AppExecFwk::ExtensionAbilityType>(extensionType));
400 reply.WriteInt32(result);
401 delete want;
402 return NO_ERROR;
403 }
404
StopExtensionAbilityInner(MessageParcel & data,MessageParcel & reply)405 int AbilityManagerStub::StopExtensionAbilityInner(MessageParcel& data, MessageParcel& reply)
406 {
407 Want* want = data.ReadParcelable<Want>();
408 if (want == nullptr) {
409 HILOG_ERROR("want is nullptr");
410 return ERR_INVALID_VALUE;
411 }
412 sptr<IRemoteObject> callerToken = nullptr;
413 if (data.ReadBool()) {
414 callerToken = data.ReadRemoteObject();
415 }
416 int32_t userId = data.ReadInt32();
417 int32_t extensionType = data.ReadInt32();
418 int32_t result =
419 StopExtensionAbility(*want, callerToken, userId, static_cast<AppExecFwk::ExtensionAbilityType>(extensionType));
420 reply.WriteInt32(result);
421 delete want;
422 return NO_ERROR;
423 }
424
StartAbilityAddCallerInner(MessageParcel & data,MessageParcel & reply)425 int AbilityManagerStub::StartAbilityAddCallerInner(MessageParcel &data, MessageParcel &reply)
426 {
427 Want *want = data.ReadParcelable<Want>();
428 if (want == nullptr) {
429 HILOG_ERROR("want is nullptr");
430 return ERR_INVALID_VALUE;
431 }
432
433 sptr<IRemoteObject> callerToken = nullptr;
434 if (data.ReadBool()) {
435 callerToken = data.ReadRemoteObject();
436 }
437
438 int32_t userId = data.ReadInt32();
439 int requestCode = data.ReadInt32();
440 int32_t result = StartAbility(*want, callerToken, userId, requestCode);
441 reply.WriteInt32(result);
442 delete want;
443 return NO_ERROR;
444 }
445
ConnectAbilityInner(MessageParcel & data,MessageParcel & reply)446 int AbilityManagerStub::ConnectAbilityInner(MessageParcel &data, MessageParcel &reply)
447 {
448 Want *want = data.ReadParcelable<Want>();
449 if (want == nullptr) {
450 HILOG_ERROR("want is nullptr");
451 return ERR_INVALID_VALUE;
452 }
453 sptr<IAbilityConnection> callback = nullptr;
454 sptr<IRemoteObject> token = nullptr;
455 if (data.ReadBool()) {
456 callback = iface_cast<IAbilityConnection>(data.ReadRemoteObject());
457 }
458 if (data.ReadBool()) {
459 token = data.ReadRemoteObject();
460 }
461 int32_t userId = data.ReadInt32();
462 int32_t result = ConnectAbilityCommon(*want, callback, token, AppExecFwk::ExtensionAbilityType::SERVICE, userId);
463 reply.WriteInt32(result);
464 if (want != nullptr) {
465 delete want;
466 }
467 return NO_ERROR;
468 }
469
ConnectAbilityWithTypeInner(MessageParcel & data,MessageParcel & reply)470 int AbilityManagerStub::ConnectAbilityWithTypeInner(MessageParcel &data, MessageParcel &reply)
471 {
472 Want *want = data.ReadParcelable<Want>();
473 if (want == nullptr) {
474 HILOG_ERROR("%{public}s, want is nullptr", __func__);
475 return ERR_INVALID_VALUE;
476 }
477 sptr<IAbilityConnection> callback = nullptr;
478 sptr<IRemoteObject> token = nullptr;
479 if (data.ReadBool()) {
480 callback = iface_cast<IAbilityConnection>(data.ReadRemoteObject());
481 }
482 if (data.ReadBool()) {
483 token = data.ReadRemoteObject();
484 }
485 int32_t userId = data.ReadInt32();
486 AppExecFwk::ExtensionAbilityType extensionType = static_cast<AppExecFwk::ExtensionAbilityType>(data.ReadInt32());
487 int32_t result = ConnectAbilityCommon(*want, callback, token, extensionType, userId);
488 reply.WriteInt32(result);
489 if (want != nullptr) {
490 delete want;
491 }
492 return NO_ERROR;
493 }
494
DisconnectAbilityInner(MessageParcel & data,MessageParcel & reply)495 int AbilityManagerStub::DisconnectAbilityInner(MessageParcel &data, MessageParcel &reply)
496 {
497 auto callback = iface_cast<IAbilityConnection>(data.ReadRemoteObject());
498 int32_t result = DisconnectAbility(callback);
499 HILOG_DEBUG("disconnect ability ret = %d", result);
500 reply.WriteInt32(result);
501 return NO_ERROR;
502 }
503
StopServiceAbilityInner(MessageParcel & data,MessageParcel & reply)504 int AbilityManagerStub::StopServiceAbilityInner(MessageParcel &data, MessageParcel &reply)
505 {
506 Want *want = data.ReadParcelable<Want>();
507 if (want == nullptr) {
508 HILOG_ERROR("want is nullptr");
509 return ERR_INVALID_VALUE;
510 }
511 int32_t userId = data.ReadInt32();
512 int32_t result = StopServiceAbility(*want, userId);
513 reply.WriteInt32(result);
514 delete want;
515 return NO_ERROR;
516 }
517
DumpSysStateInner(MessageParcel & data,MessageParcel & reply)518 int AbilityManagerStub::DumpSysStateInner(MessageParcel &data, MessageParcel &reply)
519 {
520 std::vector<std::string> result;
521 std::string args = Str16ToStr8(data.ReadString16());
522 std::vector<std::string> argList;
523
524 auto isClient = data.ReadBool();
525 auto isUserID = data.ReadBool();
526 auto UserID = data.ReadInt32();
527 SplitStr(args, " ", argList);
528 if (argList.empty()) {
529 return ERR_INVALID_VALUE;
530 }
531 DumpSysState(args, result, isClient, isUserID, UserID);
532 reply.WriteInt32(result.size());
533 for (auto stack : result) {
534 reply.WriteString16(Str8ToStr16(stack));
535 }
536 return NO_ERROR;
537 }
538
DumpStateInner(MessageParcel & data,MessageParcel & reply)539 int AbilityManagerStub::DumpStateInner(MessageParcel &data, MessageParcel &reply)
540 {
541 std::vector<std::string> result;
542 std::string args = Str16ToStr8(data.ReadString16());
543 std::vector<std::string> argList;
544 SplitStr(args, " ", argList);
545 if (argList.empty()) {
546 return ERR_INVALID_VALUE;
547 }
548 DumpState(args, result);
549 reply.WriteInt32(result.size());
550 for (auto stack : result) {
551 reply.WriteString16(Str8ToStr16(stack));
552 }
553 return NO_ERROR;
554 }
555
StartAbilityForSettingsInner(MessageParcel & data,MessageParcel & reply)556 int AbilityManagerStub::StartAbilityForSettingsInner(MessageParcel &data, MessageParcel &reply)
557 {
558 Want *want = data.ReadParcelable<Want>();
559 if (want == nullptr) {
560 HILOG_ERROR("want is nullptr");
561 return ERR_INVALID_VALUE;
562 }
563 AbilityStartSetting *abilityStartSetting = data.ReadParcelable<AbilityStartSetting>();
564 if (abilityStartSetting == nullptr) {
565 HILOG_ERROR("abilityStartSetting is nullptr");
566 delete want;
567 return ERR_INVALID_VALUE;
568 }
569 sptr<IRemoteObject> callerToken = nullptr;
570 if (data.ReadBool()) {
571 callerToken = data.ReadRemoteObject();
572 }
573 int32_t userId = data.ReadInt32();
574 int requestCode = data.ReadInt32();
575 int32_t result = StartAbility(*want, *abilityStartSetting, callerToken, userId, requestCode);
576 reply.WriteInt32(result);
577 delete want;
578 delete abilityStartSetting;
579 return NO_ERROR;
580 }
581
StartAbilityForOptionsInner(MessageParcel & data,MessageParcel & reply)582 int AbilityManagerStub::StartAbilityForOptionsInner(MessageParcel &data, MessageParcel &reply)
583 {
584 Want *want = data.ReadParcelable<Want>();
585 if (want == nullptr) {
586 HILOG_ERROR("want is nullptr");
587 return ERR_INVALID_VALUE;
588 }
589 StartOptions *startOptions = data.ReadParcelable<StartOptions>();
590 if (startOptions == nullptr) {
591 HILOG_ERROR("startOptions is nullptr");
592 delete want;
593 return ERR_INVALID_VALUE;
594 }
595 sptr<IRemoteObject> callerToken = nullptr;
596 if (data.ReadBool()) {
597 callerToken = data.ReadRemoteObject();
598 }
599 int32_t userId = data.ReadInt32();
600 int requestCode = data.ReadInt32();
601 int32_t result = StartAbility(*want, *startOptions, callerToken, userId, requestCode);
602 reply.WriteInt32(result);
603 delete want;
604 delete startOptions;
605 return NO_ERROR;
606 }
607
GetWantSenderInner(MessageParcel & data,MessageParcel & reply)608 int AbilityManagerStub::GetWantSenderInner(MessageParcel &data, MessageParcel &reply)
609 {
610 std::unique_ptr<WantSenderInfo> wantSenderInfo(data.ReadParcelable<WantSenderInfo>());
611 if (wantSenderInfo == nullptr) {
612 HILOG_ERROR("wantSenderInfo is nullptr");
613 return ERR_INVALID_VALUE;
614 }
615 sptr<IRemoteObject> callerToken = nullptr;
616 if (data.ReadBool()) {
617 callerToken = data.ReadRemoteObject();
618 }
619 sptr<IWantSender> wantSender = GetWantSender(*wantSenderInfo, callerToken);
620 if (!reply.WriteRemoteObject(((wantSender == nullptr) ? nullptr : wantSender->AsObject()))) {
621 HILOG_ERROR("failed to reply wantSender instance to client, for write parcel error");
622 return ERR_INVALID_VALUE;
623 }
624 return NO_ERROR;
625 }
626
SendWantSenderInner(MessageParcel & data,MessageParcel & reply)627 int AbilityManagerStub::SendWantSenderInner(MessageParcel &data, MessageParcel &reply)
628 {
629 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
630 if (wantSender == nullptr) {
631 HILOG_ERROR("wantSender is nullptr");
632 return ERR_INVALID_VALUE;
633 }
634 std::unique_ptr<SenderInfo> senderInfo(data.ReadParcelable<SenderInfo>());
635 if (senderInfo == nullptr) {
636 HILOG_ERROR("senderInfo is nullptr");
637 return ERR_INVALID_VALUE;
638 }
639 int32_t result = SendWantSender(wantSender, *senderInfo);
640 reply.WriteInt32(result);
641 return NO_ERROR;
642 }
643
CancelWantSenderInner(MessageParcel & data,MessageParcel & reply)644 int AbilityManagerStub::CancelWantSenderInner(MessageParcel &data, MessageParcel &reply)
645 {
646 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
647 if (wantSender == nullptr) {
648 HILOG_ERROR("wantSender is nullptr");
649 return ERR_INVALID_VALUE;
650 }
651 CancelWantSender(wantSender);
652 return NO_ERROR;
653 }
654
GetPendingWantUidInner(MessageParcel & data,MessageParcel & reply)655 int AbilityManagerStub::GetPendingWantUidInner(MessageParcel &data, MessageParcel &reply)
656 {
657 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
658 if (wantSender == nullptr) {
659 HILOG_ERROR("wantSender is nullptr");
660 return ERR_INVALID_VALUE;
661 }
662
663 int32_t uid = GetPendingWantUid(wantSender);
664 reply.WriteInt32(uid);
665 return NO_ERROR;
666 }
667
GetPendingWantUserIdInner(MessageParcel & data,MessageParcel & reply)668 int AbilityManagerStub::GetPendingWantUserIdInner(MessageParcel &data, MessageParcel &reply)
669 {
670 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
671 if (wantSender == nullptr) {
672 HILOG_ERROR("wantSender is nullptr");
673 return ERR_INVALID_VALUE;
674 }
675
676 int32_t userId = GetPendingWantUserId(wantSender);
677 reply.WriteInt32(userId);
678 return NO_ERROR;
679 }
680
GetPendingWantBundleNameInner(MessageParcel & data,MessageParcel & reply)681 int AbilityManagerStub::GetPendingWantBundleNameInner(MessageParcel &data, MessageParcel &reply)
682 {
683 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
684 if (wantSender == nullptr) {
685 HILOG_ERROR("wantSender is nullptr");
686 return ERR_INVALID_VALUE;
687 }
688
689 std::string bundleName = GetPendingWantBundleName(wantSender);
690 reply.WriteString16(Str8ToStr16(bundleName));
691 return NO_ERROR;
692 }
693
GetPendingWantCodeInner(MessageParcel & data,MessageParcel & reply)694 int AbilityManagerStub::GetPendingWantCodeInner(MessageParcel &data, MessageParcel &reply)
695 {
696 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
697 if (wantSender == nullptr) {
698 HILOG_ERROR("wantSender is nullptr");
699 return ERR_INVALID_VALUE;
700 }
701
702 int32_t code = GetPendingWantCode(wantSender);
703 reply.WriteInt32(code);
704 return NO_ERROR;
705 }
706
GetPendingWantTypeInner(MessageParcel & data,MessageParcel & reply)707 int AbilityManagerStub::GetPendingWantTypeInner(MessageParcel &data, MessageParcel &reply)
708 {
709 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
710 if (wantSender == nullptr) {
711 HILOG_ERROR("wantSender is nullptr");
712 return ERR_INVALID_VALUE;
713 }
714
715 int32_t type = GetPendingWantType(wantSender);
716 reply.WriteInt32(type);
717 return NO_ERROR;
718 }
719
RegisterCancelListenerInner(MessageParcel & data,MessageParcel & reply)720 int AbilityManagerStub::RegisterCancelListenerInner(MessageParcel &data, MessageParcel &reply)
721 {
722 sptr<IWantSender> sender = iface_cast<IWantSender>(data.ReadRemoteObject());
723 if (sender == nullptr) {
724 HILOG_ERROR("sender is nullptr");
725 return ERR_INVALID_VALUE;
726 }
727 sptr<IWantReceiver> receiver = iface_cast<IWantReceiver>(data.ReadRemoteObject());
728 if (receiver == nullptr) {
729 HILOG_ERROR("receiver is nullptr");
730 return ERR_INVALID_VALUE;
731 }
732 RegisterCancelListener(sender, receiver);
733 return NO_ERROR;
734 }
735
UnregisterCancelListenerInner(MessageParcel & data,MessageParcel & reply)736 int AbilityManagerStub::UnregisterCancelListenerInner(MessageParcel &data, MessageParcel &reply)
737 {
738 sptr<IWantSender> sender = iface_cast<IWantSender>(data.ReadRemoteObject());
739 if (sender == nullptr) {
740 HILOG_ERROR("sender is nullptr");
741 return ERR_INVALID_VALUE;
742 }
743 sptr<IWantReceiver> receiver = iface_cast<IWantReceiver>(data.ReadRemoteObject());
744 if (receiver == nullptr) {
745 HILOG_ERROR("receiver is nullptr");
746 return ERR_INVALID_VALUE;
747 }
748 UnregisterCancelListener(sender, receiver);
749 return NO_ERROR;
750 }
751
GetPendingRequestWantInner(MessageParcel & data,MessageParcel & reply)752 int AbilityManagerStub::GetPendingRequestWantInner(MessageParcel &data, MessageParcel &reply)
753 {
754 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
755 if (wantSender == nullptr) {
756 HILOG_ERROR("wantSender is nullptr");
757 return ERR_INVALID_VALUE;
758 }
759
760 std::shared_ptr<Want> want(data.ReadParcelable<Want>());
761 int32_t result = GetPendingRequestWant(wantSender, want);
762 if (result != NO_ERROR) {
763 HILOG_ERROR("GetPendingRequestWant is failed");
764 return ERR_INVALID_VALUE;
765 }
766 reply.WriteParcelable(want.get());
767 return NO_ERROR;
768 }
769
GetWantSenderInfoInner(MessageParcel & data,MessageParcel & reply)770 int AbilityManagerStub::GetWantSenderInfoInner(MessageParcel &data, MessageParcel &reply)
771 {
772 sptr<IWantSender> wantSender = iface_cast<IWantSender>(data.ReadRemoteObject());
773 if (wantSender == nullptr) {
774 HILOG_ERROR("wantSender is nullptr");
775 return ERR_INVALID_VALUE;
776 }
777
778 std::shared_ptr<WantSenderInfo> info(data.ReadParcelable<WantSenderInfo>());
779 int32_t result = GetWantSenderInfo(wantSender, info);
780 if (result != NO_ERROR) {
781 HILOG_ERROR("GetWantSenderInfo is failed");
782 return ERR_INVALID_VALUE;
783 }
784 reply.WriteParcelable(info.get());
785 return NO_ERROR;
786 }
787
GetAppMemorySizeInner(MessageParcel & data,MessageParcel & reply)788 int AbilityManagerStub::GetAppMemorySizeInner(MessageParcel &data, MessageParcel &reply)
789 {
790 int32_t result = GetAppMemorySize();
791 HILOG_INFO("GetAppMemorySizeInner result %{public}d", result);
792 if (!reply.WriteInt32(result)) {
793 HILOG_ERROR("GetAppMemorySize error");
794 return ERR_INVALID_VALUE;
795 }
796 return NO_ERROR;
797 }
798
IsRamConstrainedDeviceInner(MessageParcel & data,MessageParcel & reply)799 int AbilityManagerStub::IsRamConstrainedDeviceInner(MessageParcel &data, MessageParcel &reply)
800 {
801 auto result = IsRamConstrainedDevice();
802 if (!reply.WriteBool(result)) {
803 HILOG_ERROR("reply write failed.");
804 return ERR_INVALID_VALUE;
805 }
806 return NO_ERROR;
807 }
808
ContinueMissionInner(MessageParcel & data,MessageParcel & reply)809 int AbilityManagerStub::ContinueMissionInner(MessageParcel &data, MessageParcel &reply)
810 {
811 std::string srcDeviceId = data.ReadString();
812 std::string dstDeviceId = data.ReadString();
813 int32_t missionId = data.ReadInt32();
814 sptr<IRemoteObject> callback = data.ReadRemoteObject();
815 if (callback == nullptr) {
816 HILOG_ERROR("ContinueMissionInner callback readParcelable failed!");
817 return ERR_NULL_OBJECT;
818 }
819 std::unique_ptr<WantParams> wantParams(data.ReadParcelable<WantParams>());
820 if (wantParams == nullptr) {
821 HILOG_ERROR("ContinueMissionInner wantParams readParcelable failed!");
822 return ERR_NULL_OBJECT;
823 }
824 int32_t result = ContinueMission(srcDeviceId, dstDeviceId, missionId, callback, *wantParams);
825 HILOG_INFO("ContinueMissionInner result = %{public}d", result);
826 return result;
827 }
828
ContinueAbilityInner(MessageParcel & data,MessageParcel & reply)829 int AbilityManagerStub::ContinueAbilityInner(MessageParcel &data, MessageParcel &reply)
830 {
831 std::string deviceId = data.ReadString();
832 int32_t missionId = data.ReadInt32();
833 uint32_t versionCode = data.ReadUint32();
834 int32_t result = ContinueAbility(deviceId, missionId, versionCode);
835 HILOG_INFO("ContinueAbilityInner result = %{public}d", result);
836 return result;
837 }
838
StartContinuationInner(MessageParcel & data,MessageParcel & reply)839 int AbilityManagerStub::StartContinuationInner(MessageParcel &data, MessageParcel &reply)
840 {
841 std::unique_ptr<Want> want(data.ReadParcelable<Want>());
842 if (want == nullptr) {
843 HILOG_ERROR("StartContinuationInner want readParcelable failed!");
844 return ERR_NULL_OBJECT;
845 }
846
847 sptr<IRemoteObject> abilityToken = data.ReadRemoteObject();
848 if (abilityToken == nullptr) {
849 HILOG_ERROR("Get abilityToken failed!");
850 return ERR_NULL_OBJECT;
851 }
852 int32_t status = data.ReadInt32();
853 int32_t result = StartContinuation(*want, abilityToken, status);
854 HILOG_INFO("StartContinuationInner result = %{public}d", result);
855
856 return result;
857 }
858
NotifyCompleteContinuationInner(MessageParcel & data,MessageParcel & reply)859 int AbilityManagerStub::NotifyCompleteContinuationInner(MessageParcel &data, MessageParcel &reply)
860 {
861 std::string devId = data.ReadString();
862 int32_t sessionId = data.ReadInt32();
863 bool isSuccess = data.ReadBool();
864
865 NotifyCompleteContinuation(devId, sessionId, isSuccess);
866 HILOG_INFO("NotifyCompleteContinuationInner end");
867 return NO_ERROR;
868 }
869
NotifyContinuationResultInner(MessageParcel & data,MessageParcel & reply)870 int AbilityManagerStub::NotifyContinuationResultInner(MessageParcel &data, MessageParcel &reply)
871 {
872 int32_t missionId = data.ReadInt32();
873 int32_t continuationResult = data.ReadInt32();
874
875 int32_t result = NotifyContinuationResult(missionId, continuationResult);
876 HILOG_INFO("StartContinuationInner result = %{public}d", result);
877 return result;
878 }
879
LockMissionForCleanupInner(MessageParcel & data,MessageParcel & reply)880 int AbilityManagerStub::LockMissionForCleanupInner(MessageParcel &data, MessageParcel &reply)
881 {
882 int32_t id = data.ReadInt32();
883 int result = LockMissionForCleanup(id);
884 if (!reply.WriteInt32(result)) {
885 HILOG_ERROR("AbilityManagerStub: lock mission failed.");
886 return ERR_INVALID_VALUE;
887 }
888 return NO_ERROR;
889 }
890
UnlockMissionForCleanupInner(MessageParcel & data,MessageParcel & reply)891 int AbilityManagerStub::UnlockMissionForCleanupInner(MessageParcel &data, MessageParcel &reply)
892 {
893 int32_t id = data.ReadInt32();
894 int result = UnlockMissionForCleanup(id);
895 if (!reply.WriteInt32(result)) {
896 HILOG_ERROR("AbilityManagerStub: unlock mission failed.");
897 return ERR_INVALID_VALUE;
898 }
899 return NO_ERROR;
900 }
901
RegisterMissionListenerInner(MessageParcel & data,MessageParcel & reply)902 int AbilityManagerStub::RegisterMissionListenerInner(MessageParcel &data, MessageParcel &reply)
903 {
904 sptr<IMissionListener> listener = iface_cast<IMissionListener>(data.ReadRemoteObject());
905 if (listener == nullptr) {
906 HILOG_ERROR("stub register mission listener, listener is nullptr.");
907 return ERR_INVALID_VALUE;
908 }
909
910 int32_t result = RegisterMissionListener(listener);
911 reply.WriteInt32(result);
912 return NO_ERROR;
913 }
914
UnRegisterMissionListenerInner(MessageParcel & data,MessageParcel & reply)915 int AbilityManagerStub::UnRegisterMissionListenerInner(MessageParcel &data, MessageParcel &reply)
916 {
917 sptr<IMissionListener> listener = iface_cast<IMissionListener>(data.ReadRemoteObject());
918 if (listener == nullptr) {
919 HILOG_ERROR("stub unregister mission listener, listener is nullptr.");
920 return ERR_INVALID_VALUE;
921 }
922
923 int32_t result = UnRegisterMissionListener(listener);
924 reply.WriteInt32(result);
925 return NO_ERROR;
926 }
927
GetMissionInfosInner(MessageParcel & data,MessageParcel & reply)928 int AbilityManagerStub::GetMissionInfosInner(MessageParcel &data, MessageParcel &reply)
929 {
930 std::string deviceId = Str16ToStr8(data.ReadString16());
931 int numMax = data.ReadInt32();
932 std::vector<MissionInfo> missionInfos;
933 int32_t result = GetMissionInfos(deviceId, numMax, missionInfos);
934 reply.WriteInt32(missionInfos.size());
935 for (auto &it : missionInfos) {
936 if (!reply.WriteParcelable(&it)) {
937 return ERR_INVALID_VALUE;
938 }
939 }
940 if (!reply.WriteInt32(result)) {
941 return ERR_INVALID_VALUE;
942 }
943 return result;
944 }
945
GetMissionInfoInner(MessageParcel & data,MessageParcel & reply)946 int AbilityManagerStub::GetMissionInfoInner(MessageParcel &data, MessageParcel &reply)
947 {
948 MissionInfo info;
949 std::string deviceId = Str16ToStr8(data.ReadString16());
950 int32_t missionId = data.ReadInt32();
951 int result = GetMissionInfo(deviceId, missionId, info);
952 if (!reply.WriteParcelable(&info)) {
953 HILOG_ERROR("GetMissionInfo error");
954 return ERR_INVALID_VALUE;
955 }
956
957 if (!reply.WriteInt32(result)) {
958 HILOG_ERROR("GetMissionInfo result error");
959 return ERR_INVALID_VALUE;
960 }
961 return NO_ERROR;
962 }
963
CleanMissionInner(MessageParcel & data,MessageParcel & reply)964 int AbilityManagerStub::CleanMissionInner(MessageParcel &data, MessageParcel &reply)
965 {
966 int32_t missionId = data.ReadInt32();
967 int result = CleanMission(missionId);
968 if (!reply.WriteInt32(result)) {
969 HILOG_ERROR("CleanMission failed.");
970 return ERR_INVALID_VALUE;
971 }
972 return NO_ERROR;
973 }
974
CleanAllMissionsInner(MessageParcel & data,MessageParcel & reply)975 int AbilityManagerStub::CleanAllMissionsInner(MessageParcel &data, MessageParcel &reply)
976 {
977 int result = CleanAllMissions();
978 if (!reply.WriteInt32(result)) {
979 HILOG_ERROR("CleanAllMissions failed.");
980 return ERR_INVALID_VALUE;
981 }
982 return NO_ERROR;
983 }
984
MoveMissionToFrontInner(MessageParcel & data,MessageParcel & reply)985 int AbilityManagerStub::MoveMissionToFrontInner(MessageParcel &data, MessageParcel &reply)
986 {
987 int32_t missionId = data.ReadInt32();
988 int result = MoveMissionToFront(missionId);
989 if (!reply.WriteInt32(result)) {
990 HILOG_ERROR("MoveMissionToFront failed.");
991 return ERR_INVALID_VALUE;
992 }
993 return NO_ERROR;
994 }
995
GetMissionIdByTokenInner(MessageParcel & data,MessageParcel & reply)996 int AbilityManagerStub::GetMissionIdByTokenInner(MessageParcel &data, MessageParcel &reply)
997 {
998 sptr<IRemoteObject> token = data.ReadRemoteObject();
999 int32_t missionId = GetMissionIdByToken(token);
1000 if (!reply.WriteInt32(missionId)) {
1001 HILOG_ERROR("GetMissionIdByToken write missionId failed.");
1002 return ERR_INVALID_VALUE;
1003 }
1004 return NO_ERROR;
1005 }
1006
MoveMissionToFrontByOptionsInner(MessageParcel & data,MessageParcel & reply)1007 int AbilityManagerStub::MoveMissionToFrontByOptionsInner(MessageParcel &data, MessageParcel &reply)
1008 {
1009 int32_t missionId = data.ReadInt32();
1010 std::unique_ptr<StartOptions> startOptions(data.ReadParcelable<StartOptions>());
1011 if (startOptions == nullptr) {
1012 HILOG_ERROR("startOptions is nullptr");
1013 return ERR_INVALID_VALUE;
1014 }
1015 int result = MoveMissionToFront(missionId, *startOptions);
1016 if (!reply.WriteInt32(result)) {
1017 HILOG_ERROR("MoveMissionToFront failed.");
1018 return ERR_INVALID_VALUE;
1019 }
1020 return NO_ERROR;
1021 }
1022
StartAbilityByCallInner(MessageParcel & data,MessageParcel & reply)1023 int AbilityManagerStub::StartAbilityByCallInner(MessageParcel &data, MessageParcel &reply)
1024 {
1025 HILOG_DEBUG("AbilityManagerStub::StartAbilityByCallInner begin.");
1026 Want *want = data.ReadParcelable<Want>();
1027 if (want == nullptr) {
1028 HILOG_ERROR("want is nullptr");
1029 return ERR_INVALID_VALUE;
1030 }
1031
1032 auto callback = iface_cast<IAbilityConnection>(data.ReadRemoteObject());
1033 sptr<IRemoteObject> callerToken = nullptr;
1034 if (data.ReadBool()) {
1035 callerToken = data.ReadRemoteObject();
1036 }
1037 int32_t result = StartAbilityByCall(*want, callback, callerToken);
1038
1039 HILOG_DEBUG("resolve call ability ret = %d", result);
1040
1041 reply.WriteInt32(result);
1042 delete want;
1043
1044 HILOG_DEBUG("AbilityManagerStub::StartAbilityByCallInner end.");
1045
1046 return NO_ERROR;
1047 }
1048
CallRequestDoneInner(MessageParcel & data,MessageParcel & reply)1049 int AbilityManagerStub::CallRequestDoneInner(MessageParcel &data, MessageParcel &reply)
1050 {
1051 sptr<IRemoteObject> token = data.ReadRemoteObject();
1052 sptr<IRemoteObject> callStub = data.ReadRemoteObject();
1053 CallRequestDone(token, callStub);
1054 return NO_ERROR;
1055 }
1056
ReleaseCallInner(MessageParcel & data,MessageParcel & reply)1057 int AbilityManagerStub::ReleaseCallInner(MessageParcel &data, MessageParcel &reply)
1058 {
1059 auto callback = iface_cast<IAbilityConnection>(data.ReadRemoteObject());
1060 if (callback == nullptr) {
1061 HILOG_ERROR("callback is nullptr");
1062 return ERR_INVALID_VALUE;
1063 }
1064
1065 std::unique_ptr<AppExecFwk::ElementName> element(data.ReadParcelable<AppExecFwk::ElementName>());
1066 if (element == nullptr) {
1067 HILOG_ERROR("callback stub receive element is nullptr");
1068 return ERR_INVALID_VALUE;
1069 }
1070 int32_t result = ReleaseCall(callback, *element);
1071
1072 HILOG_DEBUG("release call ability ret = %d", result);
1073
1074 reply.WriteInt32(result);
1075
1076 return NO_ERROR;
1077 }
1078
StartUserInner(MessageParcel & data,MessageParcel & reply)1079 int AbilityManagerStub::StartUserInner(MessageParcel &data, MessageParcel &reply)
1080 {
1081 int32_t userId = data.ReadInt32();
1082 int result = StartUser(userId);
1083 if (!reply.WriteInt32(result)) {
1084 HILOG_ERROR("StartUser failed.");
1085 return ERR_INVALID_VALUE;
1086 }
1087 return NO_ERROR;
1088 }
1089
StopUserInner(MessageParcel & data,MessageParcel & reply)1090 int AbilityManagerStub::StopUserInner(MessageParcel &data, MessageParcel &reply)
1091 {
1092 int32_t userId = data.ReadInt32();
1093 sptr<IStopUserCallback> callback = nullptr;
1094 if (data.ReadBool()) {
1095 callback = iface_cast<IStopUserCallback>(data.ReadRemoteObject());
1096 }
1097 int result = StopUser(userId, callback);
1098 if (!reply.WriteInt32(result)) {
1099 HILOG_ERROR("StopUser failed.");
1100 return ERR_INVALID_VALUE;
1101 }
1102 return NO_ERROR;
1103 }
1104
GetAbilityRunningInfosInner(MessageParcel & data,MessageParcel & reply)1105 int AbilityManagerStub::GetAbilityRunningInfosInner(MessageParcel &data, MessageParcel &reply)
1106 {
1107 std::vector<AbilityRunningInfo> abilityRunningInfos;
1108 auto result = GetAbilityRunningInfos(abilityRunningInfos);
1109 reply.WriteInt32(abilityRunningInfos.size());
1110 for (auto &it : abilityRunningInfos) {
1111 if (!reply.WriteParcelable(&it)) {
1112 return ERR_INVALID_VALUE;
1113 }
1114 }
1115 if (!reply.WriteInt32(result)) {
1116 return ERR_INVALID_VALUE;
1117 }
1118 return result;
1119 }
1120
GetExtensionRunningInfosInner(MessageParcel & data,MessageParcel & reply)1121 int AbilityManagerStub::GetExtensionRunningInfosInner(MessageParcel &data, MessageParcel &reply)
1122 {
1123 auto upperLimit = data.ReadInt32();
1124 std::vector<ExtensionRunningInfo> infos;
1125 auto result = GetExtensionRunningInfos(upperLimit, infos);
1126 reply.WriteInt32(infos.size());
1127 for (auto &it : infos) {
1128 if (!reply.WriteParcelable(&it)) {
1129 return ERR_INVALID_VALUE;
1130 }
1131 }
1132 if (!reply.WriteInt32(result)) {
1133 return ERR_INVALID_VALUE;
1134 }
1135 return result;
1136 }
1137
GetProcessRunningInfosInner(MessageParcel & data,MessageParcel & reply)1138 int AbilityManagerStub::GetProcessRunningInfosInner(MessageParcel &data, MessageParcel &reply)
1139 {
1140 std::vector<AppExecFwk::RunningProcessInfo> infos;
1141 auto result = GetProcessRunningInfos(infos);
1142 reply.WriteInt32(infos.size());
1143 for (auto &it : infos) {
1144 if (!reply.WriteParcelable(&it)) {
1145 return ERR_INVALID_VALUE;
1146 }
1147 }
1148 if (!reply.WriteInt32(result)) {
1149 return ERR_INVALID_VALUE;
1150 }
1151 return NO_ERROR;
1152 }
1153
StartSyncRemoteMissionsInner(MessageParcel & data,MessageParcel & reply)1154 int AbilityManagerStub::StartSyncRemoteMissionsInner(MessageParcel &data, MessageParcel &reply)
1155 {
1156 std::string deviceId = data.ReadString();
1157 bool fixConflict = data.ReadBool();
1158 int64_t tag = data.ReadInt64();
1159 int result = StartSyncRemoteMissions(deviceId, fixConflict, tag);
1160 if (!reply.WriteInt32(result)) {
1161 HILOG_ERROR("StartSyncRemoteMissionsInner failed.");
1162 return ERR_INVALID_VALUE;
1163 }
1164 return NO_ERROR;
1165 }
1166
StopSyncRemoteMissionsInner(MessageParcel & data,MessageParcel & reply)1167 int AbilityManagerStub::StopSyncRemoteMissionsInner(MessageParcel &data, MessageParcel &reply)
1168 {
1169 int result = StopSyncRemoteMissions(data.ReadString());
1170 if (!reply.WriteInt32(result)) {
1171 HILOG_ERROR("StopSyncRemoteMissionsInner failed.");
1172 return ERR_INVALID_VALUE;
1173 }
1174 return NO_ERROR;
1175 }
1176
RegisterRemoteMissionListenerInner(MessageParcel & data,MessageParcel & reply)1177 int AbilityManagerStub::RegisterRemoteMissionListenerInner(MessageParcel &data, MessageParcel &reply)
1178 {
1179 std::string deviceId = data.ReadString();
1180 if (deviceId.empty()) {
1181 HILOG_ERROR("AbilityManagerStub: RegisterRemoteMissionListenerInner deviceId empty!");
1182 return ERR_NULL_OBJECT;
1183 }
1184 sptr<IRemoteMissionListener> listener = iface_cast<IRemoteMissionListener>(data.ReadRemoteObject());
1185 if (listener == nullptr) {
1186 HILOG_ERROR("AbilityManagerStub: RegisterRemoteMissionListenerInner listener readParcelable failed!");
1187 return ERR_NULL_OBJECT;
1188 }
1189 int32_t result = RegisterMissionListener(deviceId, listener);
1190 HILOG_INFO("AbilityManagerStub: RegisterRemoteMissionListenerInner result = %{public}d", result);
1191 return result;
1192 }
1193
UnRegisterRemoteMissionListenerInner(MessageParcel & data,MessageParcel & reply)1194 int AbilityManagerStub::UnRegisterRemoteMissionListenerInner(MessageParcel &data, MessageParcel &reply)
1195 {
1196 std::string deviceId = data.ReadString();
1197 if (deviceId.empty()) {
1198 HILOG_ERROR("AbilityManagerStub: UnRegisterRemoteMissionListenerInner deviceId empty!");
1199 return ERR_NULL_OBJECT;
1200 }
1201 sptr<IRemoteMissionListener> listener = iface_cast<IRemoteMissionListener>(data.ReadRemoteObject());
1202 if (listener == nullptr) {
1203 HILOG_ERROR("AbilityManagerStub: UnRegisterRemoteMissionListenerInner listener readParcelable failed!");
1204 return ERR_NULL_OBJECT;
1205 }
1206 int32_t result = UnRegisterMissionListener(deviceId, listener);
1207 HILOG_INFO("AbilityManagerStub: UnRegisterRemoteMissionListenerInner result = %{public}d", result);
1208 return result;
1209 }
1210
RegisterSnapshotHandlerInner(MessageParcel & data,MessageParcel & reply)1211 int AbilityManagerStub::RegisterSnapshotHandlerInner(MessageParcel &data, MessageParcel &reply)
1212 {
1213 sptr<ISnapshotHandler> handler = iface_cast<ISnapshotHandler>(data.ReadRemoteObject());
1214 if (handler == nullptr) {
1215 HILOG_ERROR("snapshot: AbilityManagerStub read snapshot handler failed!");
1216 return ERR_NULL_OBJECT;
1217 }
1218 int32_t result = RegisterSnapshotHandler(handler);
1219 HILOG_INFO("snapshot: AbilityManagerStub register snapshot handler result = %{public}d", result);
1220 return result;
1221 }
1222
GetMissionSnapshotInfoInner(MessageParcel & data,MessageParcel & reply)1223 int AbilityManagerStub::GetMissionSnapshotInfoInner(MessageParcel &data, MessageParcel &reply)
1224 {
1225 std::string deviceId = data.ReadString();
1226 int32_t missionId = data.ReadInt32();
1227 bool isLowResolution = data.ReadBool();
1228 MissionSnapshot missionSnapshot;
1229 int32_t result = GetMissionSnapshot(deviceId, missionId, missionSnapshot, isLowResolution);
1230 HILOG_INFO("snapshot: AbilityManagerStub get snapshot result = %{public}d", result);
1231 if (!reply.WriteParcelable(&missionSnapshot)) {
1232 HILOG_ERROR("GetMissionSnapshot error");
1233 return ERR_INVALID_VALUE;
1234 }
1235 if (!reply.WriteInt32(result)) {
1236 HILOG_ERROR("GetMissionSnapshot result error");
1237 return ERR_INVALID_VALUE;
1238 }
1239 return NO_ERROR;
1240 }
1241
SetAbilityControllerInner(MessageParcel & data,MessageParcel & reply)1242 int AbilityManagerStub::SetAbilityControllerInner(MessageParcel &data, MessageParcel &reply)
1243 {
1244 sptr<AppExecFwk::IAbilityController> controller =
1245 iface_cast<AppExecFwk::IAbilityController>(data.ReadRemoteObject());
1246 if (controller == nullptr) {
1247 HILOG_ERROR("AbilityManagerStub: setAbilityControllerInner controller readParcelable failed!");
1248 return ERR_NULL_OBJECT;
1249 }
1250 bool imAStabilityTest = data.ReadBool();
1251 int32_t result = SetAbilityController(controller, imAStabilityTest);
1252 HILOG_INFO("AbilityManagerStub: setAbilityControllerInner result = %{public}d", result);
1253 if (!reply.WriteInt32(result)) {
1254 HILOG_ERROR("setAbilityControllerInner failed.");
1255 return ERR_INVALID_VALUE;
1256 }
1257 return NO_ERROR;
1258 }
1259
SetComponentInterceptionInner(MessageParcel & data,MessageParcel & reply)1260 int AbilityManagerStub::SetComponentInterceptionInner(MessageParcel &data, MessageParcel &reply)
1261 {
1262 sptr<AppExecFwk::IComponentInterception> componentInterception =
1263 iface_cast<AppExecFwk::IComponentInterception>(data.ReadRemoteObject());
1264 if (componentInterception == nullptr) {
1265 HILOG_ERROR("AbilityManagerStub: SetComponentInterceptionInner readParcelable failed!");
1266 return ERR_NULL_OBJECT;
1267 }
1268 int32_t result = SetComponentInterception(componentInterception);
1269 HILOG_INFO("AbilityManagerStub: SetComponentInterceptionInner result = %{public}d", result);
1270 if (!reply.WriteInt32(result)) {
1271 HILOG_ERROR("SetComponentInterceptionInner failed.");
1272 return ERR_INVALID_VALUE;
1273 }
1274 return NO_ERROR;
1275 }
1276
SendResultToAbilityByTokenInner(MessageParcel & data,MessageParcel & reply)1277 int AbilityManagerStub::SendResultToAbilityByTokenInner(MessageParcel &data, MessageParcel &reply)
1278 {
1279 std::unique_ptr<Want> want(data.ReadParcelable<Want>());
1280 if (want == nullptr) {
1281 HILOG_ERROR("want is nullptr");
1282 return ERR_INVALID_VALUE;
1283 }
1284 sptr<IRemoteObject> abilityToken = data.ReadRemoteObject();
1285 int32_t requestCode = data.ReadInt32();
1286 int32_t resultCode = data.ReadInt32();
1287 int32_t userId = data.ReadInt32();
1288 int32_t result = SendResultToAbilityByToken(*want, abilityToken, requestCode, resultCode, userId);
1289 reply.WriteInt32(result);
1290 return NO_ERROR;
1291 }
1292
IsRunningInStabilityTestInner(MessageParcel & data,MessageParcel & reply)1293 int AbilityManagerStub::IsRunningInStabilityTestInner(MessageParcel &data, MessageParcel &reply)
1294 {
1295 bool result = IsRunningInStabilityTest();
1296 HILOG_INFO("AbilityManagerStub: IsRunningInStabilityTest result = %{public}d", result);
1297 if (!reply.WriteBool(result)) {
1298 HILOG_ERROR("IsRunningInStabilityTest failed.");
1299 return ERR_INVALID_VALUE;
1300 }
1301 return NO_ERROR;
1302 }
1303
StartUserTestInner(MessageParcel & data,MessageParcel & reply)1304 int AbilityManagerStub::StartUserTestInner(MessageParcel &data, MessageParcel &reply)
1305 {
1306 std::unique_ptr<Want> want(data.ReadParcelable<Want>());
1307 if (want == nullptr) {
1308 HILOG_ERROR("want is nullptr");
1309 return ERR_INVALID_VALUE;
1310 }
1311 auto observer = data.ReadRemoteObject();
1312 int32_t result = StartUserTest(*want, observer);
1313 reply.WriteInt32(result);
1314 return result;
1315 }
1316
FinishUserTestInner(MessageParcel & data,MessageParcel & reply)1317 int AbilityManagerStub::FinishUserTestInner(MessageParcel &data, MessageParcel &reply)
1318 {
1319 std::string msg = data.ReadString();
1320 int64_t resultCode = data.ReadInt64();
1321 std::string bundleName = data.ReadString();
1322 int32_t result = FinishUserTest(msg, resultCode, bundleName);
1323 reply.WriteInt32(result);
1324 return result;
1325 }
1326
GetTopAbilityTokenInner(MessageParcel & data,MessageParcel & reply)1327 int AbilityManagerStub::GetTopAbilityTokenInner(MessageParcel &data, MessageParcel &reply)
1328 {
1329 sptr<IRemoteObject> token;
1330 auto result = GetTopAbility(token);
1331 if (!reply.WriteRemoteObject(token)) {
1332 HILOG_ERROR("data write failed.");
1333 return ERR_INVALID_VALUE;
1334 }
1335 reply.WriteInt32(result);
1336
1337 return NO_ERROR;
1338 }
1339
DelegatorDoAbilityForegroundInner(MessageParcel & data,MessageParcel & reply)1340 int AbilityManagerStub::DelegatorDoAbilityForegroundInner(MessageParcel &data, MessageParcel &reply)
1341 {
1342 sptr<IRemoteObject> token = data.ReadRemoteObject();
1343 auto result = DelegatorDoAbilityForeground(token);
1344 reply.WriteInt32(result);
1345
1346 return NO_ERROR;
1347 }
1348
DelegatorDoAbilityBackgroundInner(MessageParcel & data,MessageParcel & reply)1349 int AbilityManagerStub::DelegatorDoAbilityBackgroundInner(MessageParcel &data, MessageParcel &reply)
1350 {
1351 sptr<IRemoteObject> token = data.ReadRemoteObject();
1352 auto result = DelegatorDoAbilityBackground(token);
1353 reply.WriteInt32(result);
1354 return NO_ERROR;
1355 }
1356
DoAbilityForeground(const sptr<IRemoteObject> & token,uint32_t flag)1357 int AbilityManagerStub::DoAbilityForeground(const sptr<IRemoteObject> &token, uint32_t flag)
1358 {
1359 return 0;
1360 }
1361
DoAbilityBackground(const sptr<IRemoteObject> & token,uint32_t flag)1362 int AbilityManagerStub::DoAbilityBackground(const sptr<IRemoteObject> &token, uint32_t flag)
1363 {
1364 return 0;
1365 }
1366
DoAbilityForegroundInner(MessageParcel & data,MessageParcel & reply)1367 int AbilityManagerStub::DoAbilityForegroundInner(MessageParcel &data, MessageParcel &reply)
1368 {
1369 sptr<IRemoteObject> token = data.ReadRemoteObject();
1370 uint32_t flag = data.ReadUint32();
1371 auto result = DoAbilityForeground(token, flag);
1372 reply.WriteInt32(result);
1373
1374 return NO_ERROR;
1375 }
1376
DoAbilityBackgroundInner(MessageParcel & data,MessageParcel & reply)1377 int AbilityManagerStub::DoAbilityBackgroundInner(MessageParcel &data, MessageParcel &reply)
1378 {
1379 sptr<IRemoteObject> token = data.ReadRemoteObject();
1380 uint32_t flag = data.ReadUint32();
1381 auto result = DoAbilityBackground(token, flag);
1382 reply.WriteInt32(result);
1383 return NO_ERROR;
1384 }
1385
SendANRProcessIDInner(MessageParcel & data,MessageParcel & reply)1386 int AbilityManagerStub::SendANRProcessIDInner(MessageParcel &data, MessageParcel &reply)
1387 {
1388 int32_t pid = data.ReadInt32();
1389 int32_t result = SendANRProcessID(pid);
1390 if (!reply.WriteInt32(result)) {
1391 HILOG_ERROR("reply write failed.");
1392 return ERR_INVALID_VALUE;
1393 }
1394 return NO_ERROR;
1395 }
1396
RegisterObserver(const sptr<AbilityRuntime::IConnectionObserver> & observer)1397 int AbilityManagerStub::RegisterObserver(const sptr<AbilityRuntime::IConnectionObserver> &observer)
1398 {
1399 // should implement in child.
1400 return NO_ERROR;
1401 }
1402
UnregisterObserver(const sptr<AbilityRuntime::IConnectionObserver> & observer)1403 int AbilityManagerStub::UnregisterObserver(const sptr<AbilityRuntime::IConnectionObserver> &observer)
1404 {
1405 // should implement in child
1406 return NO_ERROR;
1407 }
1408
GetDlpConnectionInfos(std::vector<AbilityRuntime::DlpConnectionInfo> & infos)1409 int AbilityManagerStub::GetDlpConnectionInfos(std::vector<AbilityRuntime::DlpConnectionInfo> &infos)
1410 {
1411 // should implement in child
1412 return NO_ERROR;
1413 }
1414
1415 #ifdef ABILITY_COMMAND_FOR_TEST
ForceTimeoutForTestInner(MessageParcel & data,MessageParcel & reply)1416 int AbilityManagerStub::ForceTimeoutForTestInner(MessageParcel &data, MessageParcel &reply)
1417 {
1418 std::string abilityName = Str16ToStr8(data.ReadString16());
1419 std::string state = Str16ToStr8(data.ReadString16());
1420 int result = ForceTimeoutForTest(abilityName, state);
1421 if (!reply.WriteInt32(result)) {
1422 HILOG_ERROR("force ability timeout error");
1423 return ERR_INVALID_VALUE;
1424 }
1425 return NO_ERROR;
1426 }
1427
BlockAbilityInner(MessageParcel & data,MessageParcel & reply)1428 int AbilityManagerStub::BlockAbilityInner(MessageParcel &data, MessageParcel &reply)
1429 {
1430 int32_t abilityRecordId = data.ReadInt32();
1431 int32_t result = BlockAbility(abilityRecordId);
1432 if (!reply.WriteInt32(result)) {
1433 HILOG_ERROR("reply write failed.");
1434 return ERR_INVALID_VALUE;
1435 }
1436 return NO_ERROR;
1437 }
1438
BlockAmsServiceInner(MessageParcel & data,MessageParcel & reply)1439 int AbilityManagerStub::BlockAmsServiceInner(MessageParcel &data, MessageParcel &reply)
1440 {
1441 int32_t result = BlockAmsService();
1442 if (!reply.WriteInt32(result)) {
1443 HILOG_ERROR("reply write failed.");
1444 return ERR_INVALID_VALUE;
1445 }
1446 return NO_ERROR;
1447 }
1448
BlockAppServiceInner(MessageParcel & data,MessageParcel & reply)1449 int AbilityManagerStub::BlockAppServiceInner(MessageParcel &data, MessageParcel &reply)
1450 {
1451 int32_t result = BlockAppService();
1452 if (!reply.WriteInt32(result)) {
1453 HILOG_ERROR("reply write failed.");
1454 return ERR_INVALID_VALUE;
1455 }
1456 return NO_ERROR;
1457 }
1458 #endif
1459
FreeInstallAbilityFromRemoteInner(MessageParcel & data,MessageParcel & reply)1460 int AbilityManagerStub::FreeInstallAbilityFromRemoteInner(MessageParcel &data, MessageParcel &reply)
1461 {
1462 std::unique_ptr<AAFwk::Want> want(data.ReadParcelable<AAFwk::Want>());
1463 if (want == nullptr) {
1464 HILOG_ERROR("want is nullptr");
1465 return ERR_INVALID_VALUE;
1466 }
1467 want->SetParam(FROM_REMOTE_KEY, true);
1468
1469 auto callback = data.ReadRemoteObject();
1470 if (callback == nullptr) {
1471 HILOG_ERROR("callback is nullptr");
1472 return ERR_INVALID_VALUE;
1473 }
1474
1475 int32_t userId = data.ReadInt32();
1476 int32_t requestCode = data.ReadInt32();
1477 int32_t result = FreeInstallAbilityFromRemote(*want, callback, userId, requestCode);
1478 if (!reply.WriteInt32(result)) {
1479 HILOG_ERROR("reply write failed.");
1480 return ERR_INVALID_VALUE;
1481 }
1482 return NO_ERROR;
1483 }
1484
DumpAbilityInfoDoneInner(MessageParcel & data,MessageParcel & reply)1485 int AbilityManagerStub::DumpAbilityInfoDoneInner(MessageParcel &data, MessageParcel &reply)
1486 {
1487 std::vector<std::string> infos;
1488 data.ReadStringVector(&infos);
1489 sptr<IRemoteObject> callerToken = data.ReadRemoteObject();
1490 int32_t result = DumpAbilityInfoDone(infos, callerToken);
1491 if (!reply.WriteInt32(result)) {
1492 HILOG_ERROR("reply write failed.");
1493 return ERR_INVALID_VALUE;
1494 }
1495 return NO_ERROR;
1496 }
1497
UpdateMissionSnapShotInner(MessageParcel & data,MessageParcel & reply)1498 int AbilityManagerStub::UpdateMissionSnapShotInner(MessageParcel &data, MessageParcel &reply)
1499 {
1500 sptr<IRemoteObject> token = data.ReadRemoteObject();
1501 if (!token) {
1502 HILOG_ERROR("UpdateMissionSnapShot read ability token failed.");
1503 return ERR_NULL_OBJECT;
1504 }
1505 UpdateMissionSnapShot(token);
1506 return NO_ERROR;
1507 }
1508
EnableRecoverAbilityInner(MessageParcel & data,MessageParcel & reply)1509 int AbilityManagerStub::EnableRecoverAbilityInner(MessageParcel &data, MessageParcel &reply)
1510 {
1511 sptr<IRemoteObject> token = data.ReadRemoteObject();
1512 if (!token) {
1513 HILOG_ERROR("EnableRecoverAbilityInner read ability token failed.");
1514 return ERR_NULL_OBJECT;
1515 }
1516 EnableRecoverAbility(token);
1517 return NO_ERROR;
1518 }
1519
ScheduleRecoverAbilityInner(MessageParcel & data,MessageParcel & reply)1520 int AbilityManagerStub::ScheduleRecoverAbilityInner(MessageParcel &data, MessageParcel &reply)
1521 {
1522 sptr<IRemoteObject> token = data.ReadRemoteObject();
1523 if (!token) {
1524 HILOG_ERROR("ScheduleRecoverAbility read ability token failed.");
1525 return ERR_NULL_OBJECT;
1526 }
1527
1528 int reason = data.ReadInt32();
1529 ScheduleRecoverAbility(token, reason);
1530 return NO_ERROR;
1531 }
1532
RegisterConnectionObserverInner(MessageParcel & data,MessageParcel & reply)1533 int AbilityManagerStub::RegisterConnectionObserverInner(MessageParcel &data, MessageParcel &reply)
1534 {
1535 sptr<AbilityRuntime::IConnectionObserver> observer = iface_cast<AbilityRuntime::IConnectionObserver>(
1536 data.ReadRemoteObject());
1537 if (!observer) {
1538 HILOG_ERROR("RegisterConnectionObserverInner read observer failed.");
1539 return ERR_NULL_OBJECT;
1540 }
1541
1542 return RegisterObserver(observer);
1543 }
1544
UnregisterConnectionObserverInner(MessageParcel & data,MessageParcel & reply)1545 int AbilityManagerStub::UnregisterConnectionObserverInner(MessageParcel &data, MessageParcel &reply)
1546 {
1547 sptr<AbilityRuntime::IConnectionObserver> observer = iface_cast<AbilityRuntime::IConnectionObserver>(
1548 data.ReadRemoteObject());
1549 if (!observer) {
1550 HILOG_ERROR("UnregisterConnectionObserverInner read observer failed.");
1551 return ERR_NULL_OBJECT;
1552 }
1553
1554 return UnregisterObserver(observer);
1555 }
1556
GetDlpConnectionInfosInner(MessageParcel & data,MessageParcel & reply)1557 int AbilityManagerStub::GetDlpConnectionInfosInner(MessageParcel &data, MessageParcel &reply)
1558 {
1559 std::vector<AbilityRuntime::DlpConnectionInfo> infos;
1560 auto result = GetDlpConnectionInfos(infos);
1561 if (!reply.WriteInt32(result)) {
1562 HILOG_ERROR("write result failed");
1563 return ERR_INVALID_VALUE;
1564 }
1565
1566 if (!reply.WriteInt32(infos.size())) {
1567 HILOG_ERROR("write infos size failed");
1568 return ERR_INVALID_VALUE;
1569 }
1570
1571 for (auto &item : infos) {
1572 if (!reply.WriteParcelable(&item)) {
1573 HILOG_ERROR("write info item failed");
1574 return ERR_INVALID_VALUE;
1575 }
1576 }
1577
1578 return ERR_OK;
1579 }
1580
1581 #ifdef SUPPORT_GRAPHICS
SetMissionLabelInner(MessageParcel & data,MessageParcel & reply)1582 int AbilityManagerStub::SetMissionLabelInner(MessageParcel &data, MessageParcel &reply)
1583 {
1584 sptr<IRemoteObject> token = data.ReadRemoteObject();
1585 if (!token) {
1586 HILOG_ERROR("SetMissionLabelInner read ability token failed.");
1587 return ERR_NULL_OBJECT;
1588 }
1589
1590 std::string label = Str16ToStr8(data.ReadString16());
1591 int result = SetMissionLabel(token, label);
1592 if (!reply.WriteInt32(result)) {
1593 HILOG_ERROR("SetMissionLabel failed.");
1594 return ERR_INVALID_VALUE;
1595 }
1596 return NO_ERROR;
1597 }
1598
SetMissionIconInner(MessageParcel & data,MessageParcel & reply)1599 int AbilityManagerStub::SetMissionIconInner(MessageParcel &data, MessageParcel &reply)
1600 {
1601 sptr<IRemoteObject> token = data.ReadRemoteObject();
1602 if (!token) {
1603 HILOG_ERROR("SetMissionIconInner read ability token failed.");
1604 return ERR_NULL_OBJECT;
1605 }
1606
1607 std::shared_ptr<Media::PixelMap> icon(data.ReadParcelable<Media::PixelMap>());
1608 if (!icon) {
1609 HILOG_ERROR("SetMissionIconInner read icon failed.");
1610 return ERR_NULL_OBJECT;
1611 }
1612
1613 int result = SetMissionIcon(token, icon);
1614 if (!reply.WriteInt32(result)) {
1615 HILOG_ERROR("SetMissionIcon failed.");
1616 return ERR_INVALID_VALUE;
1617 }
1618 return NO_ERROR;
1619 }
1620
RegisterWindowManagerServiceHandlerInner(MessageParcel & data,MessageParcel & reply)1621 int AbilityManagerStub::RegisterWindowManagerServiceHandlerInner(MessageParcel &data, MessageParcel &reply)
1622 {
1623 sptr<IWindowManagerServiceHandler> handler = iface_cast<IWindowManagerServiceHandler>(data.ReadRemoteObject());
1624 if (handler == nullptr) {
1625 HILOG_ERROR("%{public}s read WMS handler failed!", __func__);
1626 return ERR_NULL_OBJECT;
1627 }
1628 return RegisterWindowManagerServiceHandler(handler);
1629 }
1630
CompleteFirstFrameDrawingInner(MessageParcel & data,MessageParcel & reply)1631 int AbilityManagerStub::CompleteFirstFrameDrawingInner(MessageParcel &data, MessageParcel &reply)
1632 {
1633 HILOG_DEBUG("%{public}s is called.", __func__);
1634 sptr<IRemoteObject> abilityToken = data.ReadRemoteObject();
1635 if (abilityToken == nullptr) {
1636 HILOG_ERROR("%{public}s read abilityToken failed!", __func__);
1637 return ERR_NULL_OBJECT;
1638 }
1639 CompleteFirstFrameDrawing(abilityToken);
1640 return 0;
1641 }
1642 #endif
1643 } // namespace AAFwk
1644 } // namespace OHOS
1645