• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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