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_client.h"
17
18 #include "string_ex.h"
19 #include "ability_manager_interface.h"
20 #ifdef WITH_DLP
21 #include "dlp_file_kits.h"
22 #endif // WITH_DLP
23 #include "hilog_wrapper.h"
24 #include "if_system_ability_manager.h"
25 #include "ipc_skeleton.h"
26 #include "iservice_registry.h"
27 #include "string_ex.h"
28 #include "system_ability_definition.h"
29 #include "hitrace_meter.h"
30
31 namespace OHOS {
32 namespace AAFwk {
33 std::shared_ptr<AbilityManagerClient> AbilityManagerClient::instance_ = nullptr;
34 std::recursive_mutex AbilityManagerClient::mutex_;
35 #ifdef WITH_DLP
36 const std::string DLP_PARAMS_SANDBOX = "ohos.dlp.params.sandbox";
37 #endif // WITH_DLP
38
39 #define CHECK_POINTER_RETURN(object) \
40 if (!object) { \
41 HILOG_ERROR("proxy is nullptr"); \
42 return; \
43 }
44
45 #define CHECK_POINTER_RETURN_NOT_CONNECTED(object) \
46 if (!object) { \
47 HILOG_ERROR("proxy is nullptr."); \
48 return ABILITY_SERVICE_NOT_CONNECTED; \
49 }
50
GetInstance()51 std::shared_ptr<AbilityManagerClient> AbilityManagerClient::GetInstance()
52 {
53 if (instance_ == nullptr) {
54 std::lock_guard<std::recursive_mutex> lock_l(mutex_);
55 if (instance_ == nullptr) {
56 instance_ = std::make_shared<AbilityManagerClient>();
57 }
58 }
59 return instance_;
60 }
61
AbilityManagerClient()62 AbilityManagerClient::AbilityManagerClient()
63 {}
64
~AbilityManagerClient()65 AbilityManagerClient::~AbilityManagerClient()
66 {}
67
AttachAbilityThread(const sptr<IAbilityScheduler> & scheduler,const sptr<IRemoteObject> & token)68 ErrCode AbilityManagerClient::AttachAbilityThread(
69 const sptr<IAbilityScheduler> &scheduler, const sptr<IRemoteObject> &token)
70 {
71 auto abms = GetAbilityManager();
72 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
73 return abms->AttachAbilityThread(scheduler, token);
74 }
75
AbilityTransitionDone(const sptr<IRemoteObject> & token,int state,const PacMap & saveData)76 ErrCode AbilityManagerClient::AbilityTransitionDone(const sptr<IRemoteObject> &token, int state, const PacMap &saveData)
77 {
78 auto abms = GetAbilityManager();
79 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
80 return abms->AbilityTransitionDone(token, state, saveData);
81 }
82
ScheduleConnectAbilityDone(const sptr<IRemoteObject> & token,const sptr<IRemoteObject> & remoteObject)83 ErrCode AbilityManagerClient::ScheduleConnectAbilityDone(
84 const sptr<IRemoteObject> &token, const sptr<IRemoteObject> &remoteObject)
85 {
86 auto abms = GetAbilityManager();
87 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
88 return abms->ScheduleConnectAbilityDone(token, remoteObject);
89 }
90
ScheduleDisconnectAbilityDone(const sptr<IRemoteObject> & token)91 ErrCode AbilityManagerClient::ScheduleDisconnectAbilityDone(const sptr<IRemoteObject> &token)
92 {
93 auto abms = GetAbilityManager();
94 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
95 return abms->ScheduleDisconnectAbilityDone(token);
96 }
97
ScheduleCommandAbilityDone(const sptr<IRemoteObject> & token)98 ErrCode AbilityManagerClient::ScheduleCommandAbilityDone(const sptr<IRemoteObject> &token)
99 {
100 auto abms = GetAbilityManager();
101 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
102 return abms->ScheduleCommandAbilityDone(token);
103 }
104
StartAbility(const Want & want,int requestCode,int32_t userId)105 ErrCode AbilityManagerClient::StartAbility(const Want &want, int requestCode, int32_t userId)
106 {
107 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
108 auto abms = GetAbilityManager();
109 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
110 HandleDlpApp(const_cast<Want &>(want));
111 return abms->StartAbility(want, userId, requestCode);
112 }
113
StartAbility(const Want & want,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)114 ErrCode AbilityManagerClient::StartAbility(
115 const Want &want, const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
116 {
117 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
118 auto abms = GetAbilityManager();
119 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
120 HILOG_INFO("Start ability come, ability:%{public}s, userId:%{public}d.",
121 want.GetElement().GetAbilityName().c_str(), userId);
122 HandleDlpApp(const_cast<Want &>(want));
123 return abms->StartAbility(want, callerToken, userId, requestCode);
124 }
125
StartAbility(const Want & want,const AbilityStartSetting & abilityStartSetting,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)126 ErrCode AbilityManagerClient::StartAbility(const Want &want, const AbilityStartSetting &abilityStartSetting,
127 const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
128 {
129 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
130 auto abms = GetAbilityManager();
131 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
132 HandleDlpApp(const_cast<Want &>(want));
133 return abms->StartAbility(want, abilityStartSetting, callerToken, userId, requestCode);
134 }
135
StartAbility(const Want & want,const StartOptions & startOptions,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)136 ErrCode AbilityManagerClient::StartAbility(const Want &want, const StartOptions &startOptions,
137 const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
138 {
139 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
140 auto abms = GetAbilityManager();
141 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
142 HILOG_INFO("%{public}s come, abilityName=%{public}s, userId=%{public}d.",
143 __func__, want.GetElement().GetAbilityName().c_str(), userId);
144 HandleDlpApp(const_cast<Want &>(want));
145 return abms->StartAbility(want, startOptions, callerToken, userId, requestCode);
146 }
147
SendResultToAbility(int requestCode,int resultCode,Want & resultWant)148 ErrCode AbilityManagerClient::SendResultToAbility(int requestCode, int resultCode, Want& resultWant)
149 {
150 auto abms = GetAbilityManager();
151 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
152 HILOG_INFO("startSendResultToAbility come.");
153 return abms->SendResultToAbility(requestCode, resultCode, resultWant);
154 }
155
StartExtensionAbility(const Want & want,const sptr<IRemoteObject> & callerToken,int32_t userId,AppExecFwk::ExtensionAbilityType extensionType)156 ErrCode AbilityManagerClient::StartExtensionAbility(const Want &want, const sptr<IRemoteObject> &callerToken,
157 int32_t userId, AppExecFwk::ExtensionAbilityType extensionType)
158 {
159 auto abms = GetAbilityManager();
160 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
161 HILOG_INFO("%{public}s come, bundleName=%{public}s, abilityName=%{public}s, userId=%{public}d.",
162 __func__, want.GetElement().GetAbilityName().c_str(), want.GetElement().GetBundleName().c_str(), userId);
163 return abms->StartExtensionAbility(want, callerToken, userId, extensionType);
164 }
165
StopExtensionAbility(const Want & want,const sptr<IRemoteObject> & callerToken,int32_t userId,AppExecFwk::ExtensionAbilityType extensionType)166 ErrCode AbilityManagerClient::StopExtensionAbility(const Want &want, const sptr<IRemoteObject> &callerToken,
167 int32_t userId, AppExecFwk::ExtensionAbilityType extensionType)
168 {
169 auto abms = GetAbilityManager();
170 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
171 HILOG_INFO("%{public}s come, bundleName=%{public}s, abilityName=%{public}s, userId=%{public}d.",
172 __func__, want.GetElement().GetAbilityName().c_str(), want.GetElement().GetBundleName().c_str(), userId);
173 return abms->StopExtensionAbility(want, callerToken, userId, extensionType);
174 }
175
TerminateAbility(const sptr<IRemoteObject> & token,int resultCode,const Want * resultWant)176 ErrCode AbilityManagerClient::TerminateAbility(const sptr<IRemoteObject> &token, int resultCode, const Want *resultWant)
177 {
178 auto abms = GetAbilityManager();
179 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
180 HILOG_INFO("Terminate ability come.");
181 return abms->TerminateAbility(token, resultCode, resultWant);
182 }
183
TerminateAbility(const sptr<IRemoteObject> & callerToken,int requestCode)184 ErrCode AbilityManagerClient::TerminateAbility(const sptr<IRemoteObject> &callerToken, int requestCode)
185 {
186 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
187 auto abms = GetAbilityManager();
188 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
189 return abms->TerminateAbilityByCaller(callerToken, requestCode);
190 }
191
TerminateAbilityResult(const sptr<IRemoteObject> & token,int startId)192 ErrCode AbilityManagerClient::TerminateAbilityResult(const sptr<IRemoteObject> &token, int startId)
193 {
194 auto abms = GetAbilityManager();
195 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
196 return abms->TerminateAbilityResult(token, startId);
197 }
198
CloseAbility(const sptr<IRemoteObject> & token,int resultCode,const Want * resultWant)199 ErrCode AbilityManagerClient::CloseAbility(const sptr<IRemoteObject> &token, int resultCode, const Want *resultWant)
200 {
201 auto abms = GetAbilityManager();
202 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
203 HILOG_INFO("Close ability come.");
204 return abms->CloseAbility(token, resultCode, resultWant);
205 }
206
MinimizeAbility(const sptr<IRemoteObject> & token,bool fromUser)207 ErrCode AbilityManagerClient::MinimizeAbility(const sptr<IRemoteObject> &token, bool fromUser)
208 {
209 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
210 auto abms = GetAbilityManager();
211 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
212 HILOG_INFO("Minimize ability, fromUser:%{public}d.", fromUser);
213 return abms->MinimizeAbility(token, fromUser);
214 }
215
ConnectAbility(const Want & want,const sptr<IAbilityConnection> & connect,int32_t userId)216 ErrCode AbilityManagerClient::ConnectAbility(const Want &want, const sptr<IAbilityConnection> &connect, int32_t userId)
217 {
218 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
219 auto abms = GetAbilityManager();
220 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
221 HILOG_INFO("Connect ability called, bundleName:%{public}s, abilityName:%{public}s, userId:%{public}d.",
222 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
223 return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::SERVICE, userId);
224 }
225
ConnectAbility(const Want & want,const sptr<IAbilityConnection> & connect,const sptr<IRemoteObject> & callerToken,int32_t userId)226 ErrCode AbilityManagerClient::ConnectAbility(
227 const Want &want, const sptr<IAbilityConnection> &connect, const sptr<IRemoteObject> &callerToken, int32_t userId)
228 {
229 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
230 auto abms = GetAbilityManager();
231 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
232 HILOG_INFO("Connect ability called, bundleName:%{public}s, abilityName:%{public}s, userId:%{public}d.",
233 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
234 return abms->ConnectAbilityCommon(want, connect, callerToken, AppExecFwk::ExtensionAbilityType::SERVICE, userId);
235 }
236
ConnectDataShareExtensionAbility(const Want & want,const sptr<IAbilityConnection> & connect,int32_t userId)237 ErrCode AbilityManagerClient::ConnectDataShareExtensionAbility(const Want &want,
238 const sptr<IAbilityConnection> &connect, int32_t userId)
239 {
240 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
241 auto abms = GetAbilityManager();
242 if (abms == nullptr) {
243 HILOG_ERROR("Connect failed, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
244 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
245 want.GetUriString().c_str());
246 return ABILITY_SERVICE_NOT_CONNECTED;
247 }
248
249 HILOG_INFO("Connect called, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
250 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
251 want.GetUriString().c_str());
252 return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::DATASHARE, userId);
253 }
254
ConnectExtensionAbility(const Want & want,const sptr<IAbilityConnection> & connect,int32_t userId)255 ErrCode AbilityManagerClient::ConnectExtensionAbility(const Want &want, const sptr<IAbilityConnection> &connect,
256 int32_t userId)
257 {
258 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
259 auto abms = GetAbilityManager();
260 if (abms == nullptr) {
261 HILOG_ERROR("Connect failed, bundleName:%{public}s, abilityName:%{public}s",
262 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str());
263 return ABILITY_SERVICE_NOT_CONNECTED;
264 }
265
266 HILOG_INFO("Connect called, bundleName:%{public}s, abilityName:%{public}s, userId:%{public}d.",
267 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
268 return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::UNSPECIFIED, userId);
269 }
270
DisconnectAbility(const sptr<IAbilityConnection> & connect)271 ErrCode AbilityManagerClient::DisconnectAbility(const sptr<IAbilityConnection> &connect)
272 {
273 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
274 auto abms = GetAbilityManager();
275 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
276 HILOG_INFO("Disconnect ability begin.");
277 return abms->DisconnectAbility(connect);
278 }
279
AcquireDataAbility(const Uri & uri,bool tryBind,const sptr<IRemoteObject> & callerToken)280 sptr<IAbilityScheduler> AbilityManagerClient::AcquireDataAbility(
281 const Uri &uri, bool tryBind, const sptr<IRemoteObject> &callerToken)
282 {
283 auto abms = GetAbilityManager();
284 if (!abms) {
285 return nullptr;
286 }
287 return abms->AcquireDataAbility(uri, tryBind, callerToken);
288 }
289
ReleaseDataAbility(sptr<IAbilityScheduler> dataAbilityScheduler,const sptr<IRemoteObject> & callerToken)290 ErrCode AbilityManagerClient::ReleaseDataAbility(
291 sptr<IAbilityScheduler> dataAbilityScheduler, const sptr<IRemoteObject> &callerToken)
292 {
293 auto abms = GetAbilityManager();
294 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
295 return abms->ReleaseDataAbility(dataAbilityScheduler, callerToken);
296 }
297
DumpState(const std::string & args,std::vector<std::string> & state)298 ErrCode AbilityManagerClient::DumpState(const std::string &args, std::vector<std::string> &state)
299 {
300 auto abms = GetAbilityManager();
301 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
302 abms->DumpState(args, state);
303 return ERR_OK;
304 }
305
DumpSysState(const std::string & args,std::vector<std::string> & state,bool isClient,bool isUserID,int UserID)306 ErrCode AbilityManagerClient::DumpSysState(
307 const std::string& args, std::vector<std::string>& state, bool isClient, bool isUserID, int UserID)
308 {
309 auto abms = GetAbilityManager();
310 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
311 abms->DumpSysState(args, state, isClient, isUserID, UserID);
312 return ERR_OK;
313 }
314
Connect()315 ErrCode AbilityManagerClient::Connect()
316 {
317 std::lock_guard<std::recursive_mutex> lock(mutex_);
318 if (proxy_ != nullptr) {
319 return ERR_OK;
320 }
321 sptr<ISystemAbilityManager> systemManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
322 if (systemManager == nullptr) {
323 HILOG_ERROR("Fail to get registry.");
324 return GET_ABILITY_SERVICE_FAILED;
325 }
326 sptr<IRemoteObject> remoteObj = systemManager->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
327 if (remoteObj == nullptr) {
328 HILOG_ERROR("Fail to connect ability manager service.");
329 return GET_ABILITY_SERVICE_FAILED;
330 }
331
332 deathRecipient_ = sptr<IRemoteObject::DeathRecipient>(new AbilityMgrDeathRecipient());
333 if (deathRecipient_ == nullptr) {
334 HILOG_ERROR("%{public}s :Failed to create AbilityMgrDeathRecipient!", __func__);
335 return GET_ABILITY_SERVICE_FAILED;
336 }
337 if ((remoteObj->IsProxyObject()) && (!remoteObj->AddDeathRecipient(deathRecipient_))) {
338 HILOG_ERROR("%{public}s :Add death recipient to AbilityManagerService failed.", __func__);
339 return GET_ABILITY_SERVICE_FAILED;
340 }
341
342 proxy_ = iface_cast<IAbilityManager>(remoteObj);
343 HILOG_DEBUG("Connect ability manager service success.");
344 return ERR_OK;
345 }
346
StopServiceAbility(const Want & want)347 ErrCode AbilityManagerClient::StopServiceAbility(const Want &want)
348 {
349 auto abms = GetAbilityManager();
350 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
351 return abms->StopServiceAbility(want);
352 }
353
KillProcess(const std::string & bundleName)354 ErrCode AbilityManagerClient::KillProcess(const std::string &bundleName)
355 {
356 HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__);
357 auto abms = GetAbilityManager();
358 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
359 return abms->KillProcess(bundleName);
360 }
361
362 #ifdef ABILITY_COMMAND_FOR_TEST
ForceTimeoutForTest(const std::string & abilityName,const std::string & state)363 ErrCode AbilityManagerClient::ForceTimeoutForTest(const std::string &abilityName, const std::string &state)
364 {
365 HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__);
366 auto abms = GetAbilityManager();
367 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
368 return abms->ForceTimeoutForTest(abilityName, state);
369 }
370 #endif
371
ClearUpApplicationData(const std::string & bundleName)372 ErrCode AbilityManagerClient::ClearUpApplicationData(const std::string &bundleName)
373 {
374 auto abms = GetAbilityManager();
375 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
376 return abms->ClearUpApplicationData(bundleName);
377 }
378
GetWantSender(const WantSenderInfo & wantSenderInfo,const sptr<IRemoteObject> & callerToken)379 sptr<IWantSender> AbilityManagerClient::GetWantSender(
380 const WantSenderInfo &wantSenderInfo, const sptr<IRemoteObject> &callerToken)
381 {
382 auto abms = GetAbilityManager();
383 if (!abms) {
384 return nullptr;
385 }
386 return abms->GetWantSender(wantSenderInfo, callerToken);
387 }
388
SendWantSender(const sptr<IWantSender> & target,const SenderInfo & senderInfo)389 ErrCode AbilityManagerClient::SendWantSender(const sptr<IWantSender> &target, const SenderInfo &senderInfo)
390 {
391 auto abms = GetAbilityManager();
392 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
393 return abms->SendWantSender(target, senderInfo);
394 }
395
CancelWantSender(const sptr<IWantSender> & sender)396 void AbilityManagerClient::CancelWantSender(const sptr<IWantSender> &sender)
397 {
398 auto abms = GetAbilityManager();
399 CHECK_POINTER_RETURN(abms);
400 abms->CancelWantSender(sender);
401 }
402
GetPendingWantUid(const sptr<IWantSender> & target,int32_t & uid)403 ErrCode AbilityManagerClient::GetPendingWantUid(const sptr<IWantSender> &target, int32_t &uid)
404 {
405 if (target == nullptr) {
406 HILOG_ERROR("target is nullptr.");
407 return ABILITY_SERVICE_NOT_CONNECTED;
408 }
409 auto abms = GetAbilityManager();
410 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
411 uid = abms->GetPendingWantUid(target);
412 return ERR_OK;
413 }
414
GetPendingWantUserId(const sptr<IWantSender> & target,int32_t & userId)415 ErrCode AbilityManagerClient::GetPendingWantUserId(const sptr<IWantSender> &target, int32_t &userId)
416 {
417 if (target == nullptr) {
418 HILOG_ERROR("target is nullptr.");
419 return ABILITY_SERVICE_NOT_CONNECTED;
420 }
421 auto abms = GetAbilityManager();
422 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
423 userId = abms->GetPendingWantUserId(target);
424 return ERR_OK;
425 }
426
GetPendingWantBundleName(const sptr<IWantSender> & target,std::string & bundleName)427 ErrCode AbilityManagerClient::GetPendingWantBundleName(const sptr<IWantSender> &target, std::string &bundleName)
428 {
429 if (target == nullptr) {
430 HILOG_ERROR("target is nullptr.");
431 return ABILITY_SERVICE_NOT_CONNECTED;
432 }
433 auto abms = GetAbilityManager();
434 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
435 bundleName = abms->GetPendingWantBundleName(target);
436 return ERR_OK;
437 }
438
GetPendingWantCode(const sptr<IWantSender> & target,int32_t & code)439 ErrCode AbilityManagerClient::GetPendingWantCode(const sptr<IWantSender> &target, int32_t &code)
440 {
441 if (target == nullptr) {
442 HILOG_ERROR("target is nullptr.");
443 return ABILITY_SERVICE_NOT_CONNECTED;
444 }
445 auto abms = GetAbilityManager();
446 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
447 code = abms->GetPendingWantCode(target);
448 return ERR_OK;
449 }
450
GetPendingWantType(const sptr<IWantSender> & target,int32_t & type)451 ErrCode AbilityManagerClient::GetPendingWantType(const sptr<IWantSender> &target, int32_t &type)
452 {
453 if (target == nullptr) {
454 HILOG_ERROR("target is nullptr.");
455 return ABILITY_SERVICE_NOT_CONNECTED;
456 }
457 auto abms = GetAbilityManager();
458 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
459 type = abms->GetPendingWantType(target);
460 type < 0 ? type = 0 : type;
461 return ERR_OK;
462 }
463
RegisterCancelListener(const sptr<IWantSender> & sender,const sptr<IWantReceiver> & recevier)464 void AbilityManagerClient::RegisterCancelListener(const sptr<IWantSender> &sender, const sptr<IWantReceiver> &recevier)
465 {
466 if (sender == nullptr) {
467 HILOG_ERROR("sender is nullptr.");
468 return;
469 }
470 if (recevier == nullptr) {
471 HILOG_ERROR("recevier is nullptr.");
472 return;
473 }
474 auto abms = GetAbilityManager();
475 CHECK_POINTER_RETURN(abms);
476 abms->RegisterCancelListener(sender, recevier);
477 }
478
UnregisterCancelListener(const sptr<IWantSender> & sender,const sptr<IWantReceiver> & recevier)479 void AbilityManagerClient::UnregisterCancelListener(
480 const sptr<IWantSender> &sender, const sptr<IWantReceiver> &recevier)
481 {
482 if (sender == nullptr) {
483 HILOG_ERROR("sender is nullptr.");
484 return;
485 }
486 if (recevier == nullptr) {
487 HILOG_ERROR("recevier is nullptr.");
488 return;
489 }
490 auto abms = GetAbilityManager();
491 CHECK_POINTER_RETURN(abms);
492 abms->UnregisterCancelListener(sender, recevier);
493 }
494
GetPendingRequestWant(const sptr<IWantSender> & target,std::shared_ptr<Want> & want)495 ErrCode AbilityManagerClient::GetPendingRequestWant(const sptr<IWantSender> &target, std::shared_ptr<Want> &want)
496 {
497 if (target == nullptr) {
498 HILOG_ERROR("target is nullptr.");
499 return ABILITY_SERVICE_NOT_CONNECTED;
500 }
501 if (want == nullptr) {
502 HILOG_ERROR("want is nullptr.");
503 return ABILITY_SERVICE_NOT_CONNECTED;
504 }
505 auto abms = GetAbilityManager();
506 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
507 return abms->GetPendingRequestWant(target, want);
508 }
509
GetWantSenderInfo(const sptr<IWantSender> & target,std::shared_ptr<WantSenderInfo> & info)510 ErrCode AbilityManagerClient::GetWantSenderInfo(const sptr<IWantSender> &target, std::shared_ptr<WantSenderInfo> &info)
511 {
512 if (target == nullptr) {
513 HILOG_ERROR("target is nullptr.");
514 return ABILITY_SERVICE_NOT_CONNECTED;
515 }
516 if (info == nullptr) {
517 HILOG_ERROR("info is nullptr.");
518 return ABILITY_SERVICE_NOT_CONNECTED;
519 }
520 auto abms = GetAbilityManager();
521 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
522 return abms->GetWantSenderInfo(target, info);
523 }
524
GetAppMemorySize()525 ErrCode AbilityManagerClient::GetAppMemorySize()
526 {
527 auto abms = GetAbilityManager();
528 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
529 auto ret = abms->GetAppMemorySize();
530 return ret;
531 }
532
IsRamConstrainedDevice()533 bool AbilityManagerClient::IsRamConstrainedDevice()
534 {
535 auto abms = GetAbilityManager();
536 if (!abms) {
537 HILOG_ERROR("abms is nullptr.");
538 return false;
539 }
540 auto ret = abms->IsRamConstrainedDevice();
541 return ret;
542 }
543
ContinueMission(const std::string & srcDeviceId,const std::string & dstDeviceId,int32_t missionId,const sptr<IRemoteObject> & callback,AAFwk::WantParams & wantParams)544 ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, const std::string &dstDeviceId,
545 int32_t missionId, const sptr<IRemoteObject> &callback, AAFwk::WantParams &wantParams)
546 {
547 if (srcDeviceId.empty() || dstDeviceId.empty() || callback == nullptr) {
548 HILOG_ERROR("srcDeviceId or dstDeviceId or callback is null!");
549 return ERR_INVALID_VALUE;
550 }
551
552 auto abms = GetAbilityManager();
553 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
554 int result = abms->ContinueMission(srcDeviceId, dstDeviceId, missionId, callback, wantParams);
555 return result;
556 }
557
StartContinuation(const Want & want,const sptr<IRemoteObject> & abilityToken,int32_t status)558 ErrCode AbilityManagerClient::StartContinuation(const Want &want, const sptr<IRemoteObject> &abilityToken,
559 int32_t status)
560 {
561 auto abms = GetAbilityManager();
562 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
563 int result = abms->StartContinuation(want, abilityToken, status);
564 return result;
565 }
566
NotifyCompleteContinuation(const std::string & deviceId,int32_t sessionId,bool isSuccess)567 void AbilityManagerClient::NotifyCompleteContinuation(const std::string &deviceId,
568 int32_t sessionId, bool isSuccess)
569 {
570 auto abms = GetAbilityManager();
571 CHECK_POINTER_RETURN(abms);
572 abms->NotifyCompleteContinuation(deviceId, sessionId, isSuccess);
573 }
574
ContinueAbility(const std::string & deviceId,int32_t missionId,uint32_t versionCode)575 ErrCode AbilityManagerClient::ContinueAbility(const std::string &deviceId, int32_t missionId, uint32_t versionCode)
576 {
577 auto abms = GetAbilityManager();
578 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
579 return abms->ContinueAbility(deviceId, missionId, versionCode);
580 }
581
NotifyContinuationResult(int32_t missionId,int32_t result)582 ErrCode AbilityManagerClient::NotifyContinuationResult(int32_t missionId, int32_t result)
583 {
584 auto abms = GetAbilityManager();
585 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
586 return abms->NotifyContinuationResult(missionId, result);
587 }
588
LockMissionForCleanup(int32_t missionId)589 ErrCode AbilityManagerClient::LockMissionForCleanup(int32_t missionId)
590 {
591 auto abms = GetAbilityManager();
592 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
593 return abms->LockMissionForCleanup(missionId);
594 }
595
UnlockMissionForCleanup(int32_t missionId)596 ErrCode AbilityManagerClient::UnlockMissionForCleanup(int32_t missionId)
597 {
598 auto abms = GetAbilityManager();
599 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
600 return abms->UnlockMissionForCleanup(missionId);
601 }
602
RegisterMissionListener(const sptr<IMissionListener> & listener)603 ErrCode AbilityManagerClient::RegisterMissionListener(const sptr<IMissionListener> &listener)
604 {
605 auto abms = GetAbilityManager();
606 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
607 return abms->RegisterMissionListener(listener);
608 }
609
UnRegisterMissionListener(const sptr<IMissionListener> & listener)610 ErrCode AbilityManagerClient::UnRegisterMissionListener(const sptr<IMissionListener> &listener)
611 {
612 auto abms = GetAbilityManager();
613 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
614 return abms->UnRegisterMissionListener(listener);
615 }
616
RegisterMissionListener(const std::string & deviceId,const sptr<IRemoteMissionListener> & listener)617 ErrCode AbilityManagerClient::RegisterMissionListener(const std::string &deviceId,
618 const sptr<IRemoteMissionListener> &listener)
619 {
620 auto abms = GetAbilityManager();
621 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
622 return abms->RegisterMissionListener(deviceId, listener);
623 }
624
UnRegisterMissionListener(const std::string & deviceId,const sptr<IRemoteMissionListener> & listener)625 ErrCode AbilityManagerClient::UnRegisterMissionListener(const std::string &deviceId,
626 const sptr<IRemoteMissionListener> &listener)
627 {
628 auto abms = GetAbilityManager();
629 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
630 return abms->UnRegisterMissionListener(deviceId, listener);
631 }
632
GetMissionInfos(const std::string & deviceId,int32_t numMax,std::vector<MissionInfo> & missionInfos)633 ErrCode AbilityManagerClient::GetMissionInfos(const std::string& deviceId, int32_t numMax,
634 std::vector<MissionInfo> &missionInfos)
635 {
636 auto abms = GetAbilityManager();
637 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
638 return abms->GetMissionInfos(deviceId, numMax, missionInfos);
639 }
640
GetMissionInfo(const std::string & deviceId,int32_t missionId,MissionInfo & missionInfo)641 ErrCode AbilityManagerClient::GetMissionInfo(const std::string& deviceId, int32_t missionId,
642 MissionInfo &missionInfo)
643 {
644 auto abms = GetAbilityManager();
645 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
646 return abms->GetMissionInfo(deviceId, missionId, missionInfo);
647 }
648
CleanMission(int32_t missionId)649 ErrCode AbilityManagerClient::CleanMission(int32_t missionId)
650 {
651 auto abms = GetAbilityManager();
652 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
653 return abms->CleanMission(missionId);
654 }
655
CleanAllMissions()656 ErrCode AbilityManagerClient::CleanAllMissions()
657 {
658 auto abms = GetAbilityManager();
659 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
660 return abms->CleanAllMissions();
661 }
662
MoveMissionToFront(int32_t missionId)663 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId)
664 {
665 auto abms = GetAbilityManager();
666 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
667 return abms->MoveMissionToFront(missionId);
668 }
669
MoveMissionToFront(int32_t missionId,const StartOptions & startOptions)670 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId, const StartOptions &startOptions)
671 {
672 auto abms = GetAbilityManager();
673 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
674 return abms->MoveMissionToFront(missionId, startOptions);
675 }
676
GetMissionIdByToken(const sptr<IRemoteObject> & token,int32_t & missionId)677 ErrCode AbilityManagerClient::GetMissionIdByToken(const sptr<IRemoteObject> &token, int32_t &missionId)
678 {
679 auto abms = GetAbilityManager();
680 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
681 missionId = abms->GetMissionIdByToken(token);
682 if (missionId <= 0) {
683 HILOG_ERROR("get missionid by token failed!");
684 return MISSION_NOT_FOUND;
685 }
686 return ERR_OK;
687 }
688
StartAbilityByCall(const Want & want,const sptr<IAbilityConnection> & connect)689 ErrCode AbilityManagerClient::StartAbilityByCall(const Want &want, const sptr<IAbilityConnection> &connect)
690 {
691 auto abms = GetAbilityManager();
692 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
693 HILOG_DEBUG("AbilityManagerClient::StartAbilityByCall called.");
694 return abms->StartAbilityByCall(want, connect, nullptr);
695 }
696
StartAbilityByCall(const Want & want,const sptr<IAbilityConnection> & connect,const sptr<IRemoteObject> & callToken)697 ErrCode AbilityManagerClient::StartAbilityByCall(
698 const Want &want, const sptr<IAbilityConnection> &connect, const sptr<IRemoteObject> &callToken)
699 {
700 auto abms = GetAbilityManager();
701 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
702 HILOG_DEBUG("AbilityManagerClient::StartAbilityByCall called.");
703 return abms->StartAbilityByCall(want, connect, callToken);
704 }
705
CallRequestDone(const sptr<IRemoteObject> & token,const sptr<IRemoteObject> & callStub)706 void AbilityManagerClient::CallRequestDone(const sptr<IRemoteObject> &token, const sptr<IRemoteObject> &callStub)
707 {
708 auto abms = GetAbilityManager();
709 CHECK_POINTER_RETURN(abms);
710 abms->CallRequestDone(token, callStub);
711 }
712
ReleaseCall(const sptr<IAbilityConnection> & connect,const AppExecFwk::ElementName & element)713 ErrCode AbilityManagerClient::ReleaseCall(
714 const sptr<IAbilityConnection> &connect, const AppExecFwk::ElementName &element)
715 {
716 auto abms = GetAbilityManager();
717 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
718 return abms->ReleaseCall(connect, element);
719 }
720
GetAbilityRunningInfos(std::vector<AbilityRunningInfo> & info)721 ErrCode AbilityManagerClient::GetAbilityRunningInfos(std::vector<AbilityRunningInfo> &info)
722 {
723 auto abms = GetAbilityManager();
724 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
725 return abms->GetAbilityRunningInfos(info);
726 }
727
GetExtensionRunningInfos(int upperLimit,std::vector<ExtensionRunningInfo> & info)728 ErrCode AbilityManagerClient::GetExtensionRunningInfos(int upperLimit, std::vector<ExtensionRunningInfo> &info)
729 {
730 auto abms = GetAbilityManager();
731 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
732 return abms->GetExtensionRunningInfos(upperLimit, info);
733 }
734
GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> & info)735 ErrCode AbilityManagerClient::GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> &info)
736 {
737 auto abms = GetAbilityManager();
738 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
739 return abms->GetProcessRunningInfos(info);
740 }
741
742 /**
743 * Start synchronizing remote device mission
744 * @param devId, deviceId.
745 * @param fixConflict, resolve synchronizing conflicts flag.
746 * @param tag, call tag.
747 * @return Returns ERR_OK on success, others on failure.
748 */
StartSyncRemoteMissions(const std::string & devId,bool fixConflict,int64_t tag)749 ErrCode AbilityManagerClient::StartSyncRemoteMissions(const std::string &devId, bool fixConflict, int64_t tag)
750 {
751 auto abms = GetAbilityManager();
752 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
753 return abms->StartSyncRemoteMissions(devId, fixConflict, tag);
754 }
755 /**
756 * Stop synchronizing remote device mission
757 * @param devId, deviceId.
758 * @return Returns ERR_OK on success, others on failure.
759 */
StopSyncRemoteMissions(const std::string & devId)760 ErrCode AbilityManagerClient::StopSyncRemoteMissions(const std::string &devId)
761 {
762 auto abms = GetAbilityManager();
763 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
764 return abms->StopSyncRemoteMissions(devId);
765 }
766
StartUser(int accountId)767 ErrCode AbilityManagerClient::StartUser(int accountId)
768 {
769 auto abms = GetAbilityManager();
770 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
771 return abms->StartUser(accountId);
772 }
StopUser(int accountId,const sptr<IStopUserCallback> & callback)773 ErrCode AbilityManagerClient::StopUser(int accountId, const sptr<IStopUserCallback> &callback)
774 {
775 auto abms = GetAbilityManager();
776 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
777 return abms->StopUser(accountId, callback);
778 }
779
RegisterSnapshotHandler(const sptr<ISnapshotHandler> & handler)780 ErrCode AbilityManagerClient::RegisterSnapshotHandler(const sptr<ISnapshotHandler>& handler)
781 {
782 auto abms = GetAbilityManager();
783 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
784 return abms->RegisterSnapshotHandler(handler);
785 }
786
GetMissionSnapshot(const std::string & deviceId,int32_t missionId,MissionSnapshot & snapshot,bool isLowResolution)787 ErrCode AbilityManagerClient::GetMissionSnapshot(const std::string& deviceId, int32_t missionId,
788 MissionSnapshot& snapshot, bool isLowResolution)
789 {
790 auto abms = GetAbilityManager();
791 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
792 return abms->GetMissionSnapshot(deviceId, missionId, snapshot, isLowResolution);
793 }
794
StartUserTest(const Want & want,const sptr<IRemoteObject> & observer)795 ErrCode AbilityManagerClient::StartUserTest(const Want &want, const sptr<IRemoteObject> &observer)
796 {
797 auto abms = GetAbilityManager();
798 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
799 return abms->StartUserTest(want, observer);
800 }
801
FinishUserTest(const std::string & msg,const int64_t & resultCode,const std::string & bundleName)802 ErrCode AbilityManagerClient::FinishUserTest(
803 const std::string &msg, const int64_t &resultCode, const std::string &bundleName)
804 {
805 auto abms = GetAbilityManager();
806 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
807 return abms->FinishUserTest(msg, resultCode, bundleName);
808 }
809
GetTopAbility(sptr<IRemoteObject> & token)810 ErrCode AbilityManagerClient::GetTopAbility(sptr<IRemoteObject> &token)
811 {
812 auto abms = GetAbilityManager();
813 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
814 return abms->GetTopAbility(token);
815 }
816
DelegatorDoAbilityForeground(const sptr<IRemoteObject> & token)817 ErrCode AbilityManagerClient::DelegatorDoAbilityForeground(const sptr<IRemoteObject> &token)
818 {
819 auto abms = GetAbilityManager();
820 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
821 return abms->DelegatorDoAbilityForeground(token);
822 }
823
DelegatorDoAbilityBackground(const sptr<IRemoteObject> & token)824 ErrCode AbilityManagerClient::DelegatorDoAbilityBackground(const sptr<IRemoteObject> &token)
825 {
826 auto abms = GetAbilityManager();
827 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
828 return abms->DelegatorDoAbilityBackground(token);
829 }
830
831 #ifdef SUPPORT_GRAPHICS
SetMissionLabel(const sptr<IRemoteObject> & token,const std::string & label)832 ErrCode AbilityManagerClient::SetMissionLabel(const sptr<IRemoteObject> &token, const std::string& label)
833 {
834 auto abms = GetAbilityManager();
835 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
836 return abms->SetMissionLabel(token, label);
837 }
838
SetMissionIcon(const sptr<IRemoteObject> & abilityToken,const std::shared_ptr<OHOS::Media::PixelMap> & icon)839 ErrCode AbilityManagerClient::SetMissionIcon(
840 const sptr<IRemoteObject> &abilityToken, const std::shared_ptr<OHOS::Media::PixelMap> &icon)
841 {
842 auto abms = GetAbilityManager();
843 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
844 return abms->SetMissionIcon(abilityToken, icon);
845 }
846
RegisterWindowManagerServiceHandler(const sptr<IWindowManagerServiceHandler> & handler)847 ErrCode AbilityManagerClient::RegisterWindowManagerServiceHandler(const sptr<IWindowManagerServiceHandler>& handler)
848 {
849 auto abms = GetAbilityManager();
850 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
851 return abms->RegisterWindowManagerServiceHandler(handler);
852 }
853
CompleteFirstFrameDrawing(const sptr<IRemoteObject> & abilityToken)854 void AbilityManagerClient::CompleteFirstFrameDrawing(const sptr<IRemoteObject> &abilityToken)
855 {
856 auto abms = GetAbilityManager();
857 CHECK_POINTER_RETURN(abms);
858 abms->CompleteFirstFrameDrawing(abilityToken);
859 }
860 #endif
861
DoAbilityForeground(const sptr<IRemoteObject> & token,uint32_t flag)862 ErrCode AbilityManagerClient::DoAbilityForeground(const sptr<IRemoteObject> &token, uint32_t flag)
863 {
864 auto abms = GetAbilityManager();
865 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
866 return abms->DoAbilityForeground(token, flag);
867 }
868
DoAbilityBackground(const sptr<IRemoteObject> & token,uint32_t flag)869 ErrCode AbilityManagerClient::DoAbilityBackground(const sptr<IRemoteObject> &token, uint32_t flag)
870 {
871 auto abms = GetAbilityManager();
872 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
873 return abms->DoAbilityBackground(token, flag);
874 }
875
SetAbilityController(const sptr<AppExecFwk::IAbilityController> & abilityController,bool imAStabilityTest)876 ErrCode AbilityManagerClient::SetAbilityController(const sptr<AppExecFwk::IAbilityController> &abilityController,
877 bool imAStabilityTest)
878 {
879 auto abms = GetAbilityManager();
880 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
881 return abms->SetAbilityController(abilityController, imAStabilityTest);
882 }
883
SendANRProcessID(int pid)884 ErrCode AbilityManagerClient::SendANRProcessID(int pid)
885 {
886 auto abms = GetAbilityManager();
887 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
888 return abms->SendANRProcessID(pid);
889 }
890
UpdateMissionSnapShot(const sptr<IRemoteObject> & token)891 void AbilityManagerClient::UpdateMissionSnapShot(const sptr<IRemoteObject>& token)
892 {
893 auto abms = GetAbilityManager();
894 CHECK_POINTER_RETURN(abms);
895 return abms->UpdateMissionSnapShot(token);
896 }
897
EnableRecoverAbility(const sptr<IRemoteObject> & token)898 void AbilityManagerClient::EnableRecoverAbility(const sptr<IRemoteObject>& token)
899 {
900 auto abms = GetAbilityManager();
901 CHECK_POINTER_RETURN(abms);
902 return abms->EnableRecoverAbility(token);
903 }
904
ScheduleRecoverAbility(const sptr<IRemoteObject> & token,int32_t reason)905 void AbilityManagerClient::ScheduleRecoverAbility(const sptr<IRemoteObject>& token, int32_t reason)
906 {
907 auto abms = GetAbilityManager();
908 CHECK_POINTER_RETURN(abms);
909 return abms->ScheduleRecoverAbility(token, reason);
910 }
911
912 #ifdef ABILITY_COMMAND_FOR_TEST
BlockAmsService()913 ErrCode AbilityManagerClient::BlockAmsService()
914 {
915 HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__);
916 auto abms = GetAbilityManager();
917 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
918 return abms->BlockAmsService();
919 }
920
BlockAbility(int32_t abilityRecordId)921 ErrCode AbilityManagerClient::BlockAbility(int32_t abilityRecordId)
922 {
923 HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__);
924 auto abms = GetAbilityManager();
925 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
926 return abms->BlockAbility(abilityRecordId);
927 }
928
BlockAppService()929 ErrCode AbilityManagerClient::BlockAppService()
930 {
931 HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__);
932 auto abms = GetAbilityManager();
933 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
934 return abms->BlockAppService();
935 }
936 #endif
937
GetAbilityManager()938 sptr<IAbilityManager> AbilityManagerClient::GetAbilityManager()
939 {
940 std::lock_guard<std::recursive_mutex> lock(mutex_);
941 if (!proxy_) {
942 (void)Connect();
943 }
944
945 return proxy_;
946 }
947
ResetProxy(const wptr<IRemoteObject> & remote)948 void AbilityManagerClient::ResetProxy(const wptr<IRemoteObject>& remote)
949 {
950 std::lock_guard<std::recursive_mutex> lock(mutex_);
951 if (!proxy_) {
952 return;
953 }
954
955 auto serviceRemote = proxy_->AsObject();
956 if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) {
957 serviceRemote->RemoveDeathRecipient(deathRecipient_);
958 proxy_ = nullptr;
959 }
960 }
961
OnRemoteDied(const wptr<IRemoteObject> & remote)962 void AbilityManagerClient::AbilityMgrDeathRecipient::OnRemoteDied(const wptr<IRemoteObject>& remote)
963 {
964 HILOG_INFO("AbilityMgrDeathRecipient handle remote died.");
965 AbilityManagerClient::GetInstance()->ResetProxy(remote);
966 }
967
FreeInstallAbilityFromRemote(const Want & want,const sptr<IRemoteObject> & callback,int32_t userId,int requestCode)968 ErrCode AbilityManagerClient::FreeInstallAbilityFromRemote(const Want &want, const sptr<IRemoteObject> &callback,
969 int32_t userId, int requestCode)
970 {
971 HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__);
972 auto abms = GetAbilityManager();
973 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
974 return abms->FreeInstallAbilityFromRemote(want, callback, userId, requestCode);
975 }
976
GetTopAbility()977 AppExecFwk::ElementName AbilityManagerClient::GetTopAbility()
978 {
979 HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__);
980 auto abms = GetAbilityManager();
981 if (abms == nullptr) {
982 HILOG_ERROR("[%{public}s] abms == nullptr", __FUNCTION__);
983 return {};
984 }
985
986 return abms->GetTopAbility();
987 }
988
DumpAbilityInfoDone(std::vector<std::string> & infos,const sptr<IRemoteObject> & callerToken)989 ErrCode AbilityManagerClient::DumpAbilityInfoDone(std::vector<std::string> &infos,
990 const sptr<IRemoteObject> &callerToken)
991 {
992 HILOG_INFO("DumpAbilityInfoDone begin.");
993 auto abms = GetAbilityManager();
994 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
995 return abms->DumpAbilityInfoDone(infos, callerToken);
996 }
997
HandleDlpApp(Want & want)998 void AbilityManagerClient::HandleDlpApp(Want &want)
999 {
1000 #ifdef WITH_DLP
1001 bool sandboxFlag = Security::DlpPermission::DlpFileKits::GetSandboxFlag(want);
1002 want.SetParam(DLP_PARAMS_SANDBOX, sandboxFlag);
1003 #endif // WITH_DLP
1004 }
1005 } // namespace AAFwk
1006 } // namespace OHOS
1007