• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "ability_manager_client.h"
17 
18 #ifdef WITH_DLP
19 #include "dlp_file_kits.h"
20 #endif // WITH_DLP
21 #include "hilog_tag_wrapper.h"
22 #include "hitrace_meter.h"
23 #include "iservice_registry.h"
24 #include "scene_board_judgement.h"
25 #include "session_manager_lite.h"
26 #include "status_bar_delegate_interface.h"
27 #include "system_ability_definition.h"
28 
29 namespace OHOS {
30 namespace AAFwk {
31 namespace {
32 static std::unordered_map<Rosen::WSError, int32_t> SCB_TO_MISSION_ERROR_CODE_MAP {
33     { Rosen::WSError::WS_ERROR_INVALID_PERMISSION, CHECK_PERMISSION_FAILED },
34     { Rosen::WSError::WS_ERROR_NOT_SYSTEM_APP, ERR_NOT_SYSTEM_APP },
35     { Rosen::WSError::WS_ERROR_INVALID_PARAM, INVALID_PARAMETERS_ERR },
36 };
37 }
38 
39 using OHOS::Rosen::SessionManagerLite;
40 std::shared_ptr<AbilityManagerClient> AbilityManagerClient::instance_ = nullptr;
41 std::once_flag AbilityManagerClient::singletonFlag_;
42 #ifdef WITH_DLP
43 const std::string DLP_PARAMS_SANDBOX = "ohos.dlp.params.sandbox";
44 #endif // WITH_DLP
45 
46 #define CHECK_POINTER_RETURN(object)                        \
47     if (!object) {                                          \
48         TAG_LOGE(AAFwkTag::ABILITYMGR, "proxy is nullptr"); \
49         return;                                             \
50     }
51 
52 #define CHECK_POINTER_RETURN_NOT_CONNECTED(object)           \
53     if (!object) {                                           \
54         TAG_LOGE(AAFwkTag::ABILITYMGR, "proxy is nullptr."); \
55         return ABILITY_SERVICE_NOT_CONNECTED;                \
56     }
57 
58 #define CHECK_POINTER_RETURN_INVALID_VALUE(object)           \
59     if (!object) {                                           \
60         TAG_LOGE(AAFwkTag::ABILITYMGR, "proxy is nullptr."); \
61         return ERR_INVALID_VALUE;                            \
62     }
63 
GetInstance()64 std::shared_ptr<AbilityManagerClient> AbilityManagerClient::GetInstance()
65 {
66     std::call_once(singletonFlag_, [] () {
67         instance_ = std::shared_ptr<AbilityManagerClient>(new AbilityManagerClient());
68     });
69     return instance_;
70 }
71 
AbilityManagerClient()72 AbilityManagerClient::AbilityManagerClient()
73 {}
74 
~AbilityManagerClient()75 AbilityManagerClient::~AbilityManagerClient()
76 {
77     TAG_LOGI(AAFwkTag::ABILITYMGR, "Remove DeathRecipient");
78     RemoveDeathRecipient();
79 }
80 
AttachAbilityThread(sptr<IAbilityScheduler> scheduler,sptr<IRemoteObject> token)81 ErrCode AbilityManagerClient::AttachAbilityThread(
82     sptr<IAbilityScheduler> scheduler, sptr<IRemoteObject> token)
83 {
84     auto abms = GetAbilityManager();
85     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
86     return abms->AttachAbilityThread(scheduler, token);
87 }
88 
AbilityTransitionDone(sptr<IRemoteObject> token,int state,const PacMap & saveData)89 ErrCode AbilityManagerClient::AbilityTransitionDone(sptr<IRemoteObject> token, int state, const PacMap &saveData)
90 {
91     auto abms = GetAbilityManager();
92     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
93     return abms->AbilityTransitionDone(token, state, saveData);
94 }
95 
AbilityWindowConfigTransitionDone(sptr<IRemoteObject> token,const WindowConfig & windowConfig)96 ErrCode AbilityManagerClient::AbilityWindowConfigTransitionDone(
97     sptr<IRemoteObject> token, const WindowConfig &windowConfig)
98 {
99     auto abms = GetAbilityManager();
100     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
101     return abms->AbilityWindowConfigTransitionDone(token, windowConfig);
102 }
103 
ScheduleConnectAbilityDone(sptr<IRemoteObject> token,sptr<IRemoteObject> remoteObject)104 ErrCode AbilityManagerClient::ScheduleConnectAbilityDone(
105     sptr<IRemoteObject> token, sptr<IRemoteObject> remoteObject)
106 {
107     auto abms = GetAbilityManager();
108     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
109     return abms->ScheduleConnectAbilityDone(token, remoteObject);
110 }
111 
ScheduleDisconnectAbilityDone(sptr<IRemoteObject> token)112 ErrCode AbilityManagerClient::ScheduleDisconnectAbilityDone(sptr<IRemoteObject> token)
113 {
114     auto abms = GetAbilityManager();
115     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
116     return abms->ScheduleDisconnectAbilityDone(token);
117 }
118 
ScheduleCommandAbilityDone(sptr<IRemoteObject> token)119 ErrCode AbilityManagerClient::ScheduleCommandAbilityDone(sptr<IRemoteObject> token)
120 {
121     auto abms = GetAbilityManager();
122     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
123     return abms->ScheduleCommandAbilityDone(token);
124 }
125 
ScheduleCommandAbilityWindowDone(sptr<IRemoteObject> token,sptr<SessionInfo> sessionInfo,WindowCommand winCmd,AbilityCommand abilityCmd)126 ErrCode AbilityManagerClient::ScheduleCommandAbilityWindowDone(
127     sptr<IRemoteObject> token,
128     sptr<SessionInfo> sessionInfo,
129     WindowCommand winCmd,
130     AbilityCommand abilityCmd)
131 {
132     auto abms = GetAbilityManager();
133     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
134     return abms->ScheduleCommandAbilityWindowDone(token, sessionInfo, winCmd, abilityCmd);
135 }
136 
StartAbility(const Want & want,int requestCode,int32_t userId)137 ErrCode AbilityManagerClient::StartAbility(const Want &want, 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     HandleDlpApp(const_cast<Want &>(want));
143     return abms->StartAbility(want, userId, requestCode);
144 }
145 
StartAbility(const Want & want,sptr<IRemoteObject> callerToken,int requestCode,int32_t userId)146 ErrCode AbilityManagerClient::StartAbility(
147     const Want &want, sptr<IRemoteObject> callerToken, int requestCode, int32_t userId)
148 {
149     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
150     auto abms = GetAbilityManager();
151     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
152     TAG_LOGD(AAFwkTag::ABILITYMGR, "ability:%{public}s, userId:%{public}d",
153         want.GetElement().GetAbilityName().c_str(), userId);
154     HandleDlpApp(const_cast<Want &>(want));
155     return abms->StartAbility(want, callerToken, userId, requestCode);
156 }
157 
StartAbilityByInsightIntent(const Want & want,sptr<IRemoteObject> callerToken,uint64_t intentId,int32_t userId)158 ErrCode AbilityManagerClient::StartAbilityByInsightIntent(
159     const Want &want, sptr<IRemoteObject> callerToken, uint64_t intentId, int32_t userId)
160 {
161     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
162     auto abms = GetAbilityManager();
163     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
164     TAG_LOGD(AAFwkTag::ABILITYMGR, "ability:%{public}s, bundle:%{public}s, intentId:%{public}" PRIu64,
165         want.GetElement().GetAbilityName().c_str(), want.GetElement().GetBundleName().c_str(), intentId);
166     HandleDlpApp(const_cast<Want &>(want));
167     return abms->StartAbilityByInsightIntent(want, callerToken, intentId, userId);
168 }
169 
StartAbility(const Want & want,const AbilityStartSetting & abilityStartSetting,sptr<IRemoteObject> callerToken,int requestCode,int32_t userId)170 ErrCode AbilityManagerClient::StartAbility(const Want &want, const AbilityStartSetting &abilityStartSetting,
171     sptr<IRemoteObject> callerToken, int requestCode, int32_t userId)
172 {
173     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
174     auto abms = GetAbilityManager();
175     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
176     HandleDlpApp(const_cast<Want &>(want));
177     return abms->StartAbility(want, abilityStartSetting, callerToken, userId, requestCode);
178 }
179 
StartAbility(const Want & want,const StartOptions & startOptions,sptr<IRemoteObject> callerToken,int requestCode,int32_t userId)180 ErrCode AbilityManagerClient::StartAbility(const Want &want, const StartOptions &startOptions,
181     sptr<IRemoteObject> callerToken, int requestCode, int32_t userId)
182 {
183     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
184     auto abms = GetAbilityManager();
185     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
186     TAG_LOGI(AAFwkTag::ABILITYMGR, "abilityName:%{public}s, userId:%{public}d.",
187         want.GetElement().GetAbilityName().c_str(), userId);
188     HandleDlpApp(const_cast<Want &>(want));
189     return abms->StartAbility(want, startOptions, callerToken, userId, requestCode);
190 }
191 
StartAbilityAsCaller(const Want & want,sptr<IRemoteObject> callerToken,sptr<IRemoteObject> asCallerSourceToken,int requestCode,int32_t userId)192 ErrCode AbilityManagerClient::StartAbilityAsCaller(
193     const Want &want, sptr<IRemoteObject> callerToken,
194     sptr<IRemoteObject> asCallerSourceToken, int requestCode, int32_t userId)
195 {
196     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
197     auto abms = GetAbilityManager();
198     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
199     TAG_LOGI(AAFwkTag::ABILITYMGR,
200         "ability:%{public}s, userId:%{public}d.", want.GetElement().GetAbilityName().c_str(), userId);
201     HandleDlpApp(const_cast<Want &>(want));
202     return abms->StartAbilityAsCaller(want, callerToken, asCallerSourceToken, userId, requestCode);
203 }
204 
StartAbilityAsCaller(const Want & want,const StartOptions & startOptions,sptr<IRemoteObject> callerToken,sptr<IRemoteObject> asCallerSourceToken,int requestCode,int32_t userId)205 ErrCode AbilityManagerClient::StartAbilityAsCaller(const Want &want, const StartOptions &startOptions,
206     sptr<IRemoteObject> callerToken, sptr<IRemoteObject> asCallerSourceToken,
207     int requestCode, int32_t userId)
208 {
209     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
210     auto abms = GetAbilityManager();
211     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
212     TAG_LOGI(AAFwkTag::ABILITYMGR, "abilityName:%{public}s, userId:%{public}d",
213         want.GetElement().GetAbilityName().c_str(), userId);
214     HandleDlpApp(const_cast<Want &>(want));
215     return abms->StartAbilityAsCaller(want, startOptions, callerToken, asCallerSourceToken, userId, requestCode);
216 }
217 
StartAbilityForResultAsCaller(const Want & want,sptr<IRemoteObject> callerToken,int requestCode,int32_t userId)218 ErrCode AbilityManagerClient::StartAbilityForResultAsCaller(
219     const Want &want, sptr<IRemoteObject> callerToken, int requestCode, int32_t userId)
220 {
221     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
222     auto abms = GetAbilityManager();
223     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
224     TAG_LOGD(AAFwkTag::ABILITYMGR, "The abilityName:%{public}s, userId:%{public}d",
225         want.GetElement().GetAbilityName().c_str(), userId);
226     HandleDlpApp(const_cast<Want &>(want));
227     return abms->StartAbilityForResultAsCaller(want, callerToken, requestCode, userId);
228 }
229 
StartAbilityForResultAsCaller(const Want & want,const StartOptions & startOptions,sptr<IRemoteObject> callerToken,int requestCode,int32_t userId)230 ErrCode AbilityManagerClient::StartAbilityForResultAsCaller(const Want &want, const StartOptions &startOptions,
231     sptr<IRemoteObject> callerToken, int requestCode, int32_t userId)
232 {
233     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
234     auto abms = GetAbilityManager();
235     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
236     TAG_LOGD(AAFwkTag::ABILITYMGR, "The abilityName:%{public}s, userId:%{public}d",
237         want.GetElement().GetAbilityName().c_str(), userId);
238     HandleDlpApp(const_cast<Want &>(want));
239     return abms->StartAbilityForResultAsCaller(want, startOptions, callerToken, requestCode, userId);
240 }
241 
StartAbilityByUIContentSession(const Want & want,const StartOptions & startOptions,sptr<IRemoteObject> callerToken,sptr<AAFwk::SessionInfo> sessionInfo,int requestCode,int32_t userId)242 ErrCode AbilityManagerClient::StartAbilityByUIContentSession(const Want &want, const StartOptions &startOptions,
243     sptr<IRemoteObject> callerToken, sptr<AAFwk::SessionInfo> sessionInfo,
244     int requestCode, int32_t userId)
245 {
246     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
247     auto abms = GetAbilityManager();
248     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
249     TAG_LOGI(AAFwkTag::ABILITYMGR, "abilityName:%{public}s, userId:%{public}d.",
250         want.GetElement().GetAbilityName().c_str(), userId);
251     HandleDlpApp(const_cast<Want &>(want));
252     return abms->StartAbilityByUIContentSession(want, startOptions, callerToken, sessionInfo, userId, requestCode);
253 }
254 
StartAbilityByUIContentSession(const Want & want,sptr<IRemoteObject> callerToken,sptr<AAFwk::SessionInfo> sessionInfo,int requestCode,int32_t userId)255 ErrCode AbilityManagerClient::StartAbilityByUIContentSession(const Want &want, sptr<IRemoteObject> callerToken,
256     sptr<AAFwk::SessionInfo> sessionInfo, int requestCode, int32_t userId)
257 {
258     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
259     auto abms = GetAbilityManager();
260     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
261     TAG_LOGI(AAFwkTag::ABILITYMGR, "ability:%{public}s, userId:%{public}d",
262         want.GetElement().GetAbilityName().c_str(), userId);
263     HandleDlpApp(const_cast<Want &>(want));
264     return abms->StartAbilityByUIContentSession(want, callerToken, sessionInfo, userId, requestCode);
265 }
266 
StartAbilityOnlyUIAbility(const Want & want,sptr<IRemoteObject> callerToken,uint32_t specifyTokenId)267 ErrCode AbilityManagerClient::StartAbilityOnlyUIAbility(const Want &want, sptr<IRemoteObject> callerToken,
268     uint32_t specifyTokenId)
269 {
270     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
271     auto abms = GetAbilityManager();
272     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
273     TAG_LOGI(AAFwkTag::ABILITYMGR, "ability:%{public}s",
274         want.GetElement().GetAbilityName().c_str());
275     HandleDlpApp(const_cast<Want &>(want));
276     return abms->StartAbilityOnlyUIAbility(want, callerToken, specifyTokenId);
277 }
278 
SendResultToAbility(int requestCode,int resultCode,Want & resultWant)279 ErrCode AbilityManagerClient::SendResultToAbility(int requestCode, int resultCode, Want& resultWant)
280 {
281     auto abms = GetAbilityManager();
282     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
283     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
284     return abms->SendResultToAbility(requestCode, resultCode, resultWant);
285 }
286 
StartExtensionAbility(const Want & want,sptr<IRemoteObject> callerToken,int32_t userId,AppExecFwk::ExtensionAbilityType extensionType)287 ErrCode AbilityManagerClient::StartExtensionAbility(const Want &want, sptr<IRemoteObject> callerToken,
288     int32_t userId, AppExecFwk::ExtensionAbilityType extensionType)
289 {
290     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
291     auto abms = GetAbilityManager();
292     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
293     TAG_LOGI(AAFwkTag::SERVICE_EXT, "name:%{public}s %{public}s, userId=%{public}d.",
294         want.GetElement().GetAbilityName().c_str(), want.GetElement().GetBundleName().c_str(), userId);
295     return abms->StartExtensionAbility(want, callerToken, userId, extensionType);
296 }
297 
RequestModalUIExtension(const Want & want)298 ErrCode AbilityManagerClient::RequestModalUIExtension(const Want &want)
299 {
300     auto abms = GetAbilityManager();
301     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
302     return abms->RequestModalUIExtension(want);
303 }
304 
PreloadUIExtensionAbility(const Want & want,std::string & hostBundleName,int32_t userId)305 ErrCode AbilityManagerClient::PreloadUIExtensionAbility(const Want &want, std::string &hostBundleName, int32_t userId)
306 {
307     auto abms = GetAbilityManager();
308     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
309     TAG_LOGD(AAFwkTag::ABILITYMGR, "elementName:%{public}s, hostBundleName:%{public}s.",
310         want.GetElement().GetURI().c_str(), hostBundleName.c_str());
311     return abms->PreloadUIExtensionAbility(want, hostBundleName, userId);
312 }
313 
ChangeAbilityVisibility(sptr<IRemoteObject> token,bool isShow)314 ErrCode AbilityManagerClient::ChangeAbilityVisibility(sptr<IRemoteObject> token, bool isShow)
315 {
316     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
317     auto abms = GetAbilityManager();
318     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
319     return abms->ChangeAbilityVisibility(token, isShow);
320 }
321 
ChangeUIAbilityVisibilityBySCB(sptr<SessionInfo> sessionInfo,bool isShow)322 ErrCode AbilityManagerClient::ChangeUIAbilityVisibilityBySCB(sptr<SessionInfo> sessionInfo, bool isShow)
323 {
324     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
325     if (sessionInfo == nullptr) {
326         TAG_LOGE(AAFwkTag::ABILITYMGR, "sessionInfo is nullptr");
327         return ERR_INVALID_VALUE;
328     }
329     auto abms = GetAbilityManager();
330     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
331     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, ChangeUIAbilityVisibilityBySCB abilityName: %{public}s,"
332         "isShow: %{public}d", sessionInfo->want.GetElement().GetAbilityName().c_str(), isShow);
333     return abms->ChangeUIAbilityVisibilityBySCB(sessionInfo, isShow);
334 }
335 
StartUIExtensionAbility(sptr<SessionInfo> extensionSessionInfo,int32_t userId)336 ErrCode AbilityManagerClient::StartUIExtensionAbility(sptr<SessionInfo> extensionSessionInfo, int32_t userId)
337 {
338     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
339     auto abms = GetAbilityManager();
340     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
341     CHECK_POINTER_RETURN_INVALID_VALUE(extensionSessionInfo);
342     TAG_LOGI(AAFwkTag::ABILITYMGR, "name: %{public}s %{public}s, persistentId: %{public}d, userId: %{public}d.",
343         extensionSessionInfo->want.GetElement().GetAbilityName().c_str(),
344         extensionSessionInfo->want.GetElement().GetBundleName().c_str(), extensionSessionInfo->persistentId, userId);
345     return abms->StartUIExtensionAbility(extensionSessionInfo, userId);
346 }
347 
StartUIAbilityBySCB(sptr<SessionInfo> sessionInfo,bool & isColdStart,uint32_t sceneFlag)348 ErrCode AbilityManagerClient::StartUIAbilityBySCB(sptr<SessionInfo> sessionInfo, bool &isColdStart, uint32_t sceneFlag)
349 {
350     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
351     if (sessionInfo == nullptr) {
352         TAG_LOGE(AAFwkTag::ABILITYMGR, "sessionInfo is nullptr");
353         return ERR_INVALID_VALUE;
354     }
355     auto abms = GetAbilityManager();
356     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
357     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, StartUIAbilityBySCB target: %{public}s.",
358         sessionInfo->want.GetElement().GetURI().c_str());
359     return abms->StartUIAbilityBySCB(sessionInfo, isColdStart, sceneFlag);
360 }
361 
StopExtensionAbility(const Want & want,sptr<IRemoteObject> callerToken,int32_t userId,AppExecFwk::ExtensionAbilityType extensionType)362 ErrCode AbilityManagerClient::StopExtensionAbility(const Want &want, sptr<IRemoteObject> callerToken,
363     int32_t userId, AppExecFwk::ExtensionAbilityType extensionType)
364 {
365     auto abms = GetAbilityManager();
366     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
367     TAG_LOGI(AAFwkTag::SERVICE_EXT, "name:%{public}s %{public}s, userId=%{public}d.",
368         want.GetElement().GetAbilityName().c_str(), want.GetElement().GetBundleName().c_str(), userId);
369     return abms->StopExtensionAbility(want, callerToken, userId, extensionType);
370 }
371 
TerminateAbility(sptr<IRemoteObject> token,int resultCode,const Want * resultWant)372 ErrCode AbilityManagerClient::TerminateAbility(sptr<IRemoteObject> token, int resultCode, const Want *resultWant)
373 {
374     auto abms = GetAbilityManager();
375     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
376     TAG_LOGD(AAFwkTag::ABILITYMGR, "call");
377     return abms->TerminateAbility(token, resultCode, resultWant);
378 }
379 
BackToCallerAbilityWithResult(const sptr<IRemoteObject> & token,int resultCode,const Want * resultWant,int64_t callerRequestCode)380 ErrCode AbilityManagerClient::BackToCallerAbilityWithResult(const sptr<IRemoteObject> &token, int resultCode,
381     const Want *resultWant, int64_t callerRequestCode)
382 {
383     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
384     auto abms = GetAbilityManager();
385     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
386     return abms->BackToCallerAbilityWithResult(token, resultCode, resultWant, callerRequestCode);
387 }
388 
TerminateUIServiceExtensionAbility(sptr<IRemoteObject> token)389 ErrCode AbilityManagerClient::TerminateUIServiceExtensionAbility(sptr<IRemoteObject> token)
390 {
391     auto abms = GetAbilityManager();
392     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
393     TAG_LOGD(AAFwkTag::ABILITYMGR, "call");
394     return abms->TerminateUIServiceExtensionAbility(token);
395 }
396 
TerminateUIExtensionAbility(sptr<SessionInfo> extensionSessionInfo,int resultCode,const Want * resultWant)397 ErrCode AbilityManagerClient::TerminateUIExtensionAbility(sptr<SessionInfo> extensionSessionInfo,
398     int resultCode, const Want *resultWant)
399 {
400     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
401     auto abms = GetAbilityManager();
402     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
403     CHECK_POINTER_RETURN_INVALID_VALUE(extensionSessionInfo);
404     TAG_LOGI(AAFwkTag::ABILITYMGR, "name: %{public}s %{public}s, persistentId: %{public}d",
405         extensionSessionInfo->want.GetElement().GetAbilityName().c_str(),
406         extensionSessionInfo->want.GetElement().GetBundleName().c_str(), extensionSessionInfo->persistentId);
407     return abms->TerminateUIExtensionAbility(extensionSessionInfo, resultCode, resultWant);
408 }
409 
CloseUIExtensionAbilityBySCB(const sptr<IRemoteObject> token)410 ErrCode AbilityManagerClient::CloseUIExtensionAbilityBySCB(const sptr<IRemoteObject> token)
411 {
412     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
413     if (token == nullptr) {
414         TAG_LOGE(AAFwkTag::ABILITYMGR, "null token");
415         return ERR_INVALID_VALUE;
416     }
417     auto abms = GetAbilityManager();
418     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
419     TAG_LOGI(AAFwkTag::ABILITYMGR, "CloseUIExtensionAbilityBySCB");
420     return abms->CloseUIExtensionAbilityBySCB(token);
421 }
422 
MoveAbilityToBackground(sptr<IRemoteObject> token)423 ErrCode AbilityManagerClient::MoveAbilityToBackground(sptr<IRemoteObject> token)
424 {
425     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
426     auto abms = GetAbilityManager();
427     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
428     return abms->MoveAbilityToBackground(token);
429 }
430 
MoveUIAbilityToBackground(const sptr<IRemoteObject> token)431 ErrCode AbilityManagerClient::MoveUIAbilityToBackground(const sptr<IRemoteObject> token)
432 {
433     TAG_LOGI(AAFwkTag::ABILITYMGR, "MoveUIAbilityToBackground call");
434     auto abms = GetAbilityManager();
435     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
436     return abms->MoveUIAbilityToBackground(token);
437 }
438 
CloseAbility(sptr<IRemoteObject> token,int resultCode,const Want * resultWant)439 ErrCode AbilityManagerClient::CloseAbility(sptr<IRemoteObject> token, int resultCode, const Want *resultWant)
440 {
441     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
442         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
443         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
444         sptr<AAFwk::SessionInfo> info = new AAFwk::SessionInfo();
445         info->want = *resultWant;
446         info->resultCode = resultCode;
447         info->sessionToken = token;
448         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CloseAbility");
449         auto ret = static_cast<int>(sceneSessionManager->TerminateSessionNew(info, false));
450         if (ret != ERR_OK) {
451             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, CloseAbility err: %{public}d", ret);
452         }
453         return ret;
454     }
455     auto abms = GetAbilityManager();
456     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
457     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
458     return abms->CloseAbility(token, resultCode, resultWant);
459 }
460 
CloseUIAbilityBySCB(sptr<SessionInfo> sessionInfo)461 ErrCode AbilityManagerClient::CloseUIAbilityBySCB(sptr<SessionInfo> sessionInfo)
462 {
463     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
464     if (sessionInfo == nullptr) {
465         TAG_LOGE(AAFwkTag::ABILITYMGR, "failed, sessionInfo is nullptr");
466         return ERR_INVALID_VALUE;
467     }
468     auto abms = GetAbilityManager();
469     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
470     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CloseUIAbilityBySCB");
471     return abms->CloseUIAbilityBySCB(sessionInfo);
472 }
473 
MinimizeAbility(sptr<IRemoteObject> token,bool fromUser)474 ErrCode AbilityManagerClient::MinimizeAbility(sptr<IRemoteObject> token, bool fromUser)
475 {
476     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
477     auto abms = GetAbilityManager();
478     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
479     TAG_LOGI(AAFwkTag::ABILITYMGR, "fromUser:%{public}d.", fromUser);
480     return abms->MinimizeAbility(token, fromUser);
481 }
482 
MinimizeUIExtensionAbility(sptr<SessionInfo> extensionSessionInfo,bool fromUser)483 ErrCode AbilityManagerClient::MinimizeUIExtensionAbility(sptr<SessionInfo> extensionSessionInfo, bool fromUser)
484 {
485     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
486     auto abms = GetAbilityManager();
487     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
488     CHECK_POINTER_RETURN_INVALID_VALUE(extensionSessionInfo);
489     TAG_LOGI(AAFwkTag::ABILITYMGR, "name: %{public}s %{public}s, persistentId: %{public}d, fromUser: %{public}d",
490         extensionSessionInfo->want.GetElement().GetAbilityName().c_str(),
491         extensionSessionInfo->want.GetElement().GetBundleName().c_str(), extensionSessionInfo->persistentId, fromUser);
492     return abms->MinimizeUIExtensionAbility(extensionSessionInfo, fromUser);
493 }
494 
MinimizeUIAbilityBySCB(sptr<SessionInfo> sessionInfo,bool fromUser,uint32_t sceneFlag)495 ErrCode AbilityManagerClient::MinimizeUIAbilityBySCB(sptr<SessionInfo> sessionInfo, bool fromUser, uint32_t sceneFlag)
496 {
497     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
498     if (sessionInfo == nullptr) {
499         TAG_LOGE(AAFwkTag::ABILITYMGR, "failed, sessionInfo is nullptr");
500         return ERR_INVALID_VALUE;
501     }
502     auto abms = GetAbilityManager();
503     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
504     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, MinimizeUIAbilityBySCB target: %{public}s",
505         sessionInfo->want.GetElement().GetURI().c_str());
506     return abms->MinimizeUIAbilityBySCB(sessionInfo, fromUser, sceneFlag);
507 }
508 
ConnectAbility(const Want & want,sptr<IAbilityConnection> connect,int32_t userId)509 ErrCode AbilityManagerClient::ConnectAbility(const Want &want, sptr<IAbilityConnection> connect, int32_t userId)
510 {
511     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
512     auto abms = GetAbilityManager();
513     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
514     TAG_LOGI(AAFwkTag::SERVICE_EXT, "name:%{public}s %{public}s, userId:%{public}d",
515         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
516     return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::SERVICE, userId);
517 }
518 
ConnectAbility(const Want & want,sptr<IAbilityConnection> connect,sptr<IRemoteObject> callerToken,int32_t userId)519 ErrCode AbilityManagerClient::ConnectAbility(
520     const Want &want, sptr<IAbilityConnection> connect, sptr<IRemoteObject> callerToken, int32_t userId)
521 {
522     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
523     auto abms = GetAbilityManager();
524     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
525     TAG_LOGI(AAFwkTag::SERVICE_EXT, "name:%{public}s %{public}s, userId:%{public}d.",
526         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
527     return abms->ConnectAbilityCommon(want, connect, callerToken, AppExecFwk::ExtensionAbilityType::SERVICE, userId);
528 }
529 
ConnectUIServiceExtesnionAbility(const Want & want,sptr<IAbilityConnection> connect,sptr<IRemoteObject> callerToken,int32_t userId)530 ErrCode AbilityManagerClient::ConnectUIServiceExtesnionAbility(
531     const Want &want, sptr<IAbilityConnection> connect, sptr<IRemoteObject> callerToken, int32_t userId)
532 {
533     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
534     auto abms = GetAbilityManager();
535     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
536     TAG_LOGI(AAFwkTag::ABILITYMGR, "name:%{public}s %{public}s, userId:%{public}d",
537         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
538     return abms->ConnectAbilityCommon(want, connect, callerToken,
539         AppExecFwk::ExtensionAbilityType::UI_SERVICE, userId);
540 }
541 
ConnectDataShareExtensionAbility(const Want & want,sptr<IAbilityConnection> connect,int32_t userId)542 ErrCode AbilityManagerClient::ConnectDataShareExtensionAbility(const Want &want,
543     sptr<IAbilityConnection> connect, int32_t userId)
544 {
545     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
546     auto abms = GetAbilityManager();
547     if (abms == nullptr) {
548         TAG_LOGE(AAFwkTag::SERVICE_EXT,
549             "Connect failed, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
550             want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
551             want.GetUriString().c_str());
552         return ABILITY_SERVICE_NOT_CONNECTED;
553     }
554 
555     TAG_LOGI(AAFwkTag::SERVICE_EXT, "name:%{public}s %{public}s, uri:%{public}s.",
556         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
557         want.GetUriString().c_str());
558     return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::DATASHARE, userId);
559 }
560 
ConnectExtensionAbility(const Want & want,sptr<IAbilityConnection> connect,int32_t userId)561 ErrCode AbilityManagerClient::ConnectExtensionAbility(const Want &want, sptr<IAbilityConnection> connect,
562     int32_t userId)
563 {
564     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
565     auto abms = GetAbilityManager();
566     if (abms == nullptr) {
567         TAG_LOGE(AAFwkTag::SERVICE_EXT, "Connect failed, bundleName:%{public}s, abilityName:%{public}s",
568             want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str());
569         return ABILITY_SERVICE_NOT_CONNECTED;
570     }
571 
572     TAG_LOGI(AAFwkTag::SERVICE_EXT, "name:%{public}s %{public}s, userId:%{public}d.",
573         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
574     return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::UNSPECIFIED, userId);
575 }
576 
ConnectUIExtensionAbility(const Want & want,sptr<IAbilityConnection> connect,sptr<SessionInfo> sessionInfo,int32_t userId,sptr<UIExtensionAbilityConnectInfo> connectInfo)577 ErrCode AbilityManagerClient::ConnectUIExtensionAbility(const Want &want, sptr<IAbilityConnection> connect,
578     sptr<SessionInfo> sessionInfo, int32_t userId, sptr<UIExtensionAbilityConnectInfo> connectInfo)
579 {
580     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
581     auto abms = GetAbilityManager();
582     if (abms == nullptr) {
583         TAG_LOGE(AAFwkTag::ABILITYMGR, "Connect failed, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
584             want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
585             want.GetUriString().c_str());
586         return ABILITY_SERVICE_NOT_CONNECTED;
587     }
588 
589     TAG_LOGI(AAFwkTag::ABILITYMGR, "name:%{public}s %{public}s, uri:%{public}s.",
590         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
591         want.GetUriString().c_str());
592     return abms->ConnectUIExtensionAbility(want, connect, sessionInfo, userId, connectInfo);
593 }
594 
DisconnectAbility(sptr<IAbilityConnection> connect)595 ErrCode AbilityManagerClient::DisconnectAbility(sptr<IAbilityConnection> connect)
596 {
597     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
598     auto abms = GetAbilityManager();
599     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
600     TAG_LOGI(AAFwkTag::SERVICE_EXT, "DisconnectAbility call");
601     return abms->DisconnectAbility(connect);
602 }
603 
AcquireDataAbility(const Uri & uri,bool tryBind,sptr<IRemoteObject> callerToken)604 sptr<IAbilityScheduler> AbilityManagerClient::AcquireDataAbility(
605     const Uri &uri, bool tryBind, sptr<IRemoteObject> callerToken)
606 {
607     auto abms = GetAbilityManager();
608     if (!abms) {
609         return nullptr;
610     }
611     return abms->AcquireDataAbility(uri, tryBind, callerToken);
612 }
613 
ReleaseDataAbility(sptr<IAbilityScheduler> dataAbilityScheduler,sptr<IRemoteObject> callerToken)614 ErrCode AbilityManagerClient::ReleaseDataAbility(
615     sptr<IAbilityScheduler> dataAbilityScheduler, sptr<IRemoteObject> callerToken)
616 {
617     auto abms = GetAbilityManager();
618     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
619     return abms->ReleaseDataAbility(dataAbilityScheduler, callerToken);
620 }
621 
DumpState(const std::string & args,std::vector<std::string> & state)622 ErrCode AbilityManagerClient::DumpState(const std::string &args, std::vector<std::string> &state)
623 {
624     auto abms = GetAbilityManager();
625     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
626     abms->DumpState(args, state);
627     return ERR_OK;
628 }
629 
DumpSysState(const std::string & args,std::vector<std::string> & state,bool isClient,bool isUserID,int UserID)630 ErrCode AbilityManagerClient::DumpSysState(
631     const std::string& args, std::vector<std::string>& state, bool isClient, bool isUserID, int UserID)
632 {
633     auto abms = GetAbilityManager();
634     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
635     abms->DumpSysState(args, state, isClient, isUserID, UserID);
636     return ERR_OK;
637 }
638 
Connect()639 ErrCode AbilityManagerClient::Connect()
640 {
641     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
642     std::lock_guard<std::recursive_mutex> lock(mutex_);
643     if (proxy_ != nullptr) {
644         return ERR_OK;
645     }
646     sptr<ISystemAbilityManager> systemManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
647     if (systemManager == nullptr) {
648         TAG_LOGE(AAFwkTag::ABILITYMGR, "Fail to get registry.");
649         return GET_ABILITY_SERVICE_FAILED;
650     }
651     sptr<IRemoteObject> remoteObj = systemManager->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
652     if (remoteObj == nullptr) {
653         TAG_LOGE(AAFwkTag::ABILITYMGR, "Fail to connect ability manager service.");
654         return GET_ABILITY_SERVICE_FAILED;
655     }
656 
657     deathRecipient_ = sptr<IRemoteObject::DeathRecipient>(new AbilityMgrDeathRecipient());
658     if (deathRecipient_ == nullptr) {
659         TAG_LOGE(AAFwkTag::ABILITYMGR, "Failed to create AbilityMgrDeathRecipient!");
660         return GET_ABILITY_SERVICE_FAILED;
661     }
662     if ((remoteObj->IsProxyObject()) && (!remoteObj->AddDeathRecipient(deathRecipient_))) {
663         TAG_LOGE(AAFwkTag::ABILITYMGR, "Add death recipient to AbilityManagerService failed.");
664         return GET_ABILITY_SERVICE_FAILED;
665     }
666 
667     proxy_ = iface_cast<IAbilityManager>(remoteObj);
668     TAG_LOGD(AAFwkTag::ABILITYMGR, "Connect ability manager service success.");
669     return ERR_OK;
670 }
671 
RemoveDeathRecipient()672 void AbilityManagerClient::RemoveDeathRecipient()
673 {
674     TAG_LOGI(AAFwkTag::ABILITYMGR, "RemoveDeathRecipient");
675     std::lock_guard<std::recursive_mutex> lock(mutex_);
676     if (proxy_ == nullptr) {
677         TAG_LOGI(AAFwkTag::ABILITYMGR, "AbilityMgrProxy do not exist");
678         return;
679     }
680     if (deathRecipient_ == nullptr) {
681         TAG_LOGI(AAFwkTag::ABILITYMGR, "AbilityMgrDeathRecipient do not exist");
682         return;
683     }
684     auto serviceRemote = proxy_->AsObject();
685     if (serviceRemote != nullptr && serviceRemote->RemoveDeathRecipient(deathRecipient_)) {
686         proxy_ = nullptr;
687         deathRecipient_ = nullptr;
688         TAG_LOGI(AAFwkTag::ABILITYMGR, "Remove DeathRecipient success");
689     }
690 }
691 
StopServiceAbility(const Want & want,sptr<IRemoteObject> token)692 ErrCode AbilityManagerClient::StopServiceAbility(const Want &want, sptr<IRemoteObject> token)
693 {
694     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
695     auto abms = GetAbilityManager();
696     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
697     return abms->StopServiceAbility(want, -1, token);
698 }
699 
KillProcess(const std::string & bundleName,const bool clearPageStack)700 ErrCode AbilityManagerClient::KillProcess(const std::string &bundleName, const bool clearPageStack)
701 {
702     TAG_LOGI(AAFwkTag::ABILITYMGR, "enter");
703     auto abms = GetAbilityManager();
704     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
705     return abms->KillProcess(bundleName, clearPageStack);
706 }
707 
708 #ifdef ABILITY_COMMAND_FOR_TEST
ForceTimeoutForTest(const std::string & abilityName,const std::string & state)709 ErrCode AbilityManagerClient::ForceTimeoutForTest(const std::string &abilityName, const std::string &state)
710 {
711     TAG_LOGD(AAFwkTag::ABILITYMGR, "enter");
712     auto abms = GetAbilityManager();
713     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
714     return abms->ForceTimeoutForTest(abilityName, state);
715 }
716 #endif
717 
ContinueMission(const std::string & srcDeviceId,const std::string & dstDeviceId,int32_t missionId,sptr<IRemoteObject> callback,AAFwk::WantParams & wantParams)718 ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, const std::string &dstDeviceId,
719     int32_t missionId, sptr<IRemoteObject> callback, AAFwk::WantParams &wantParams)
720 {
721     if (srcDeviceId.empty() || dstDeviceId.empty() || callback == nullptr) {
722         TAG_LOGE(AAFwkTag::ABILITYMGR, "srcDeviceId or dstDeviceId or callback is null!");
723         return ERR_INVALID_VALUE;
724     }
725 
726     auto abms = GetAbilityManager();
727     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
728     int result = abms->ContinueMission(srcDeviceId, dstDeviceId, missionId, callback, wantParams);
729     return result;
730 }
731 
ContinueMission(AAFwk::ContinueMissionInfo continueMissionInfo,const sptr<IRemoteObject> & callback)732 ErrCode AbilityManagerClient::ContinueMission(AAFwk::ContinueMissionInfo continueMissionInfo,
733     const sptr<IRemoteObject> &callback)
734 
735 {
736     if (continueMissionInfo.srcDeviceId.empty() || continueMissionInfo.dstDeviceId.empty() || callback == nullptr) {
737         TAG_LOGE(AAFwkTag::ABILITYMGR, "srcDeviceId or dstDeviceId or callback is null!");
738         return ERR_INVALID_VALUE;
739     }
740 
741     auto abms = GetAbilityManager();
742     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
743     int result = abms->ContinueMission(continueMissionInfo, callback);
744     return result;
745 }
746 
StartContinuation(const Want & want,sptr<IRemoteObject> abilityToken,int32_t status)747 ErrCode AbilityManagerClient::StartContinuation(const Want &want, sptr<IRemoteObject> abilityToken,
748     int32_t status)
749 {
750     auto abms = GetAbilityManager();
751     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
752     int result = abms->StartContinuation(want, abilityToken, status);
753     return result;
754 }
755 
NotifyCompleteContinuation(const std::string & deviceId,int32_t sessionId,bool isSuccess)756 void AbilityManagerClient::NotifyCompleteContinuation(const std::string &deviceId,
757     int32_t sessionId, bool isSuccess)
758 {
759     auto abms = GetAbilityManager();
760     CHECK_POINTER_RETURN(abms);
761     abms->NotifyCompleteContinuation(deviceId, sessionId, isSuccess);
762 }
763 
ContinueAbility(const std::string & deviceId,int32_t missionId,uint32_t versionCode)764 ErrCode AbilityManagerClient::ContinueAbility(const std::string &deviceId, int32_t missionId, uint32_t versionCode)
765 {
766     auto abms = GetAbilityManager();
767     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
768     return abms->ContinueAbility(deviceId, missionId, versionCode);
769 }
770 
NotifyContinuationResult(int32_t missionId,int32_t result)771 ErrCode AbilityManagerClient::NotifyContinuationResult(int32_t missionId, int32_t result)
772 {
773     auto abms = GetAbilityManager();
774     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
775     return abms->NotifyContinuationResult(missionId, result);
776 }
777 
LockMissionForCleanup(int32_t missionId)778 ErrCode AbilityManagerClient::LockMissionForCleanup(int32_t missionId)
779 {
780     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
781         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
782         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
783         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, LockMissionForCleanup");
784         auto err = sceneSessionManager->LockSession(missionId);
785         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
786             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, LockMissionForCleanup err");
787             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
788         }
789         return static_cast<int>(err);
790     }
791     auto abms = GetAbilityManager();
792     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
793     return abms->LockMissionForCleanup(missionId);
794 }
795 
UnlockMissionForCleanup(int32_t missionId)796 ErrCode AbilityManagerClient::UnlockMissionForCleanup(int32_t missionId)
797 {
798     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
799     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
800         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
801         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
802         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, UnlockMissionForCleanup");
803         auto err = sceneSessionManager->UnlockSession(missionId);
804         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
805             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, UnlockMissionForCleanup err");
806             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
807         }
808         return static_cast<int>(err);
809     }
810     auto abms = GetAbilityManager();
811     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
812     return abms->UnlockMissionForCleanup(missionId);
813 }
814 
SetLockedState(int32_t sessionId,bool lockedState)815 void AbilityManagerClient::SetLockedState(int32_t sessionId, bool lockedState)
816 {
817     auto abms = GetAbilityManager();
818     CHECK_POINTER_RETURN(abms);
819     abms->SetLockedState(sessionId, lockedState);
820 }
821 
RegisterMissionListener(sptr<IMissionListener> listener)822 ErrCode AbilityManagerClient::RegisterMissionListener(sptr<IMissionListener> listener)
823 {
824     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
825         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
826         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
827         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, RegisterMissionListener");
828         auto err = sceneSessionManager->RegisterSessionListener(listener);
829         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
830             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, RegisterMissionListener err");
831             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
832         }
833         return static_cast<int>(err);
834     }
835     auto abms = GetAbilityManager();
836     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
837     return abms->RegisterMissionListener(listener);
838 }
839 
UnRegisterMissionListener(sptr<IMissionListener> listener)840 ErrCode AbilityManagerClient::UnRegisterMissionListener(sptr<IMissionListener> listener)
841 {
842     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
843         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
844         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
845         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, UnRegisterMissionListener");
846         auto err = sceneSessionManager->UnRegisterSessionListener(listener);
847         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
848             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, UnRegisterMissionListener err");
849             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
850         }
851         return static_cast<int>(err);
852     }
853     auto abms = GetAbilityManager();
854     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
855     return abms->UnRegisterMissionListener(listener);
856 }
857 
RegisterMissionListener(const std::string & deviceId,sptr<IRemoteMissionListener> listener)858 ErrCode AbilityManagerClient::RegisterMissionListener(const std::string &deviceId,
859     sptr<IRemoteMissionListener> listener)
860 {
861     auto abms = GetAbilityManager();
862     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
863     return abms->RegisterMissionListener(deviceId, listener);
864 }
865 
RegisterOnListener(const std::string & type,sptr<IRemoteOnListener> listener)866 ErrCode AbilityManagerClient::RegisterOnListener(const std::string &type,
867     sptr<IRemoteOnListener> listener)
868 {
869     auto abms = GetAbilityManager();
870     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
871     return abms->RegisterOnListener(type, listener);
872 }
873 
RegisterOffListener(const std::string & type,sptr<IRemoteOnListener> listener)874 ErrCode AbilityManagerClient::RegisterOffListener(const std::string &type,
875     sptr<IRemoteOnListener> listener)
876 {
877     auto abms = GetAbilityManager();
878     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
879     return abms->RegisterOffListener(type, listener);
880 }
881 
UnRegisterMissionListener(const std::string & deviceId,sptr<IRemoteMissionListener> listener)882 ErrCode AbilityManagerClient::UnRegisterMissionListener(const std::string &deviceId,
883     sptr<IRemoteMissionListener> listener)
884 {
885     auto abms = GetAbilityManager();
886     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
887     return abms->UnRegisterMissionListener(deviceId, listener);
888 }
889 
GetMissionInfos(const std::string & deviceId,int32_t numMax,std::vector<MissionInfo> & missionInfos)890 ErrCode AbilityManagerClient::GetMissionInfos(const std::string& deviceId, int32_t numMax,
891     std::vector<MissionInfo> &missionInfos)
892 {
893     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
894     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
895         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
896         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
897         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfos");
898         auto err = sceneSessionManager->GetSessionInfos(deviceId, numMax, missionInfos);
899         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
900             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfos err");
901             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
902         }
903         return static_cast<int>(err);
904     }
905     auto abms = GetAbilityManager();
906     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
907     return abms->GetMissionInfos(deviceId, numMax, missionInfos);
908 }
909 
GetMissionInfo(const std::string & deviceId,int32_t missionId,MissionInfo & missionInfo)910 ErrCode AbilityManagerClient::GetMissionInfo(const std::string& deviceId, int32_t missionId,
911     MissionInfo &missionInfo)
912 {
913     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
914     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
915         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
916         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
917         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfo");
918         auto err = sceneSessionManager->GetSessionInfo(deviceId, missionId, missionInfo);
919         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
920             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfo err");
921             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
922         }
923         return static_cast<int>(err);
924     }
925     auto abms = GetAbilityManager();
926     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
927     return abms->GetMissionInfo(deviceId, missionId, missionInfo);
928 }
929 
CleanMission(int32_t missionId)930 ErrCode AbilityManagerClient::CleanMission(int32_t missionId)
931 {
932     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
933     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
934         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
935         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
936         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CleanMission");
937         auto err = sceneSessionManager->ClearSession(missionId);
938         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
939             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, CleanMission err");
940             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
941         }
942         return static_cast<int>(err);
943     }
944     auto abms = GetAbilityManager();
945     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
946     return abms->CleanMission(missionId);
947 }
948 
CleanAllMissions()949 ErrCode AbilityManagerClient::CleanAllMissions()
950 {
951     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
952     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
953         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
954         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
955         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CleanAllMissions");
956         auto err = sceneSessionManager->ClearAllSessions();
957         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
958             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, CleanAllMissions err");
959             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
960         }
961         return static_cast<int>(err);
962     }
963     auto abms = GetAbilityManager();
964     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
965     return abms->CleanAllMissions();
966 }
967 
MoveMissionToFront(int32_t missionId)968 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId)
969 {
970     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
971     auto abms = GetAbilityManager();
972     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
973     return abms->MoveMissionToFront(missionId);
974 }
975 
MoveMissionToFront(int32_t missionId,const StartOptions & startOptions)976 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId, const StartOptions &startOptions)
977 {
978     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
979     auto abms = GetAbilityManager();
980     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
981     return abms->MoveMissionToFront(missionId, startOptions);
982 }
983 
MoveMissionsToForeground(const std::vector<int32_t> & missionIds,int32_t topMissionId)984 ErrCode AbilityManagerClient::MoveMissionsToForeground(const std::vector<int32_t>& missionIds, int32_t topMissionId)
985 {
986     TAG_LOGI(AAFwkTag::ABILITYMGR, "MoveMissionsToForeground begin, topMissionId:%{public}d", topMissionId);
987     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
988         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
989         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
990         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToForeground");
991         auto err = sceneSessionManager->MoveSessionsToForeground(missionIds, topMissionId);
992         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
993             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToForeground err");
994             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
995         }
996         auto abms = GetAbilityManager();
997         CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
998         if (missionIds.empty()) {
999             return ERR_INVALID_VALUE;
1000         }
1001         int32_t missionId = topMissionId;
1002         if (topMissionId > 0) {
1003             missionId = topMissionId;
1004         } else {
1005             missionId = missionIds[0];
1006         }
1007         auto errAMS = abms->MoveMissionToFront(missionId);
1008         return static_cast<int>(errAMS);
1009     }
1010     auto abms = GetAbilityManager();
1011     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1012     return abms->MoveMissionsToForeground(missionIds, topMissionId);
1013 }
1014 
MoveMissionsToBackground(const std::vector<int32_t> & missionIds,std::vector<int32_t> & result)1015 ErrCode AbilityManagerClient::MoveMissionsToBackground(const std::vector<int32_t>& missionIds,
1016     std::vector<int32_t>& result)
1017 {
1018     TAG_LOGI(AAFwkTag::ABILITYMGR, "MoveMissionsToBackground begin.");
1019     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1020         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1021         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1022         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToBackground");
1023         auto err = sceneSessionManager->MoveSessionsToBackground(missionIds, result);
1024         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1025             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToBackground err");
1026             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1027         }
1028         return static_cast<int>(err);
1029     }
1030     auto abms = GetAbilityManager();
1031     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1032     return abms->MoveMissionsToBackground(missionIds, result);
1033 }
1034 
GetMissionIdByToken(sptr<IRemoteObject> token,int32_t & missionId)1035 ErrCode AbilityManagerClient::GetMissionIdByToken(sptr<IRemoteObject> token, int32_t &missionId)
1036 {
1037     auto abms = GetAbilityManager();
1038     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1039     missionId = abms->GetMissionIdByToken(token);
1040     if (missionId <= 0) {
1041         TAG_LOGE(AAFwkTag::ABILITYMGR, "get missionid by token failed!");
1042         return MISSION_NOT_FOUND;
1043     }
1044     return ERR_OK;
1045 }
1046 
StartAbilityByCall(const Want & want,sptr<IAbilityConnection> connect)1047 ErrCode AbilityManagerClient::StartAbilityByCall(const Want &want, sptr<IAbilityConnection> connect)
1048 {
1049     auto abms = GetAbilityManager();
1050     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1051     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1052     return abms->StartAbilityByCall(want, connect, nullptr, DEFAULT_INVAL_VALUE);
1053 }
1054 
StartAbilityByCall(const Want & want,sptr<IAbilityConnection> connect,sptr<IRemoteObject> callToken,int32_t accountId)1055 ErrCode AbilityManagerClient::StartAbilityByCall(const Want &want, sptr<IAbilityConnection> connect,
1056     sptr<IRemoteObject> callToken, int32_t accountId)
1057 {
1058     auto abms = GetAbilityManager();
1059     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1060     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1061     return abms->StartAbilityByCall(want, connect, callToken, accountId);
1062 }
1063 
CallRequestDone(sptr<IRemoteObject> token,sptr<IRemoteObject> callStub)1064 void AbilityManagerClient::CallRequestDone(sptr<IRemoteObject> token, sptr<IRemoteObject> callStub)
1065 {
1066     auto abms = GetAbilityManager();
1067     CHECK_POINTER_RETURN(abms);
1068     abms->CallRequestDone(token, callStub);
1069 }
1070 
GetAbilityTokenByCalleeObj(sptr<IRemoteObject> callStub,sptr<IRemoteObject> & token)1071 void AbilityManagerClient::GetAbilityTokenByCalleeObj(sptr<IRemoteObject> callStub, sptr<IRemoteObject> &token)
1072 {
1073     auto abms = GetAbilityManager();
1074     CHECK_POINTER_RETURN(abms);
1075     abms->GetAbilityTokenByCalleeObj(callStub, token);
1076 }
1077 
ReleaseCall(sptr<IAbilityConnection> connect,const AppExecFwk::ElementName & element)1078 ErrCode AbilityManagerClient::ReleaseCall(
1079     sptr<IAbilityConnection> connect, const AppExecFwk::ElementName &element)
1080 {
1081     auto abms = GetAbilityManager();
1082     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1083     return abms->ReleaseCall(connect, element);
1084 }
1085 
GetAbilityRunningInfos(std::vector<AbilityRunningInfo> & info)1086 ErrCode AbilityManagerClient::GetAbilityRunningInfos(std::vector<AbilityRunningInfo> &info)
1087 {
1088     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1089     auto abms = GetAbilityManager();
1090     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1091     return abms->GetAbilityRunningInfos(info);
1092 }
1093 
GetExtensionRunningInfos(int upperLimit,std::vector<ExtensionRunningInfo> & info)1094 ErrCode AbilityManagerClient::GetExtensionRunningInfos(int upperLimit, std::vector<ExtensionRunningInfo> &info)
1095 {
1096     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1097     auto abms = GetAbilityManager();
1098     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1099     return abms->GetExtensionRunningInfos(upperLimit, info);
1100 }
1101 
GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> & info)1102 ErrCode AbilityManagerClient::GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> &info)
1103 {
1104     auto abms = GetAbilityManager();
1105     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1106     return abms->GetProcessRunningInfos(info);
1107 }
1108 
RequestDialogService(const Want & want,sptr<IRemoteObject> callerToken)1109 ErrCode AbilityManagerClient::RequestDialogService(
1110     const Want &want, sptr<IRemoteObject> callerToken)
1111 {
1112     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1113     auto abms = GetAbilityManager();
1114     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1115     TAG_LOGI(AAFwkTag::ABILITYMGR, "request is:%{public}s.", want.GetElement().GetURI().c_str());
1116     HandleDlpApp(const_cast<Want &>(want));
1117     return abms->RequestDialogService(want, callerToken);
1118 }
1119 
ReportDrawnCompleted(sptr<IRemoteObject> callerToken)1120 ErrCode AbilityManagerClient::ReportDrawnCompleted(sptr<IRemoteObject> callerToken)
1121 {
1122     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1123     auto abilityMgr = GetAbilityManager();
1124     CHECK_POINTER_RETURN_NOT_CONNECTED(abilityMgr);
1125     return abilityMgr->ReportDrawnCompleted(callerToken);
1126 }
1127 
1128 /**
1129  * Start synchronizing remote device mission
1130  * @param devId, deviceId.
1131  * @param fixConflict, resolve synchronizing conflicts flag.
1132  * @param tag, call tag.
1133  * @return Returns ERR_OK on success, others on failure.
1134  */
StartSyncRemoteMissions(const std::string & devId,bool fixConflict,int64_t tag)1135 ErrCode AbilityManagerClient::StartSyncRemoteMissions(const std::string &devId, bool fixConflict, int64_t tag)
1136 {
1137     auto abms = GetAbilityManager();
1138     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1139     return abms->StartSyncRemoteMissions(devId, fixConflict, tag);
1140 }
1141 
StopSyncRemoteMissions(const std::string & devId)1142 ErrCode AbilityManagerClient::StopSyncRemoteMissions(const std::string &devId)
1143 {
1144     auto abms = GetAbilityManager();
1145     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1146     return abms->StopSyncRemoteMissions(devId);
1147 }
1148 
StartUser(int accountId,sptr<IUserCallback> callback)1149 ErrCode AbilityManagerClient::StartUser(int accountId, sptr<IUserCallback> callback)
1150 {
1151     TAG_LOGI(AAFwkTag::ABILITYMGR, "StartUser in client:%{public}d.", accountId);
1152     auto abms = GetAbilityManager();
1153     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1154     return abms->StartUser(accountId, callback);
1155 }
1156 
StopUser(int accountId,sptr<IUserCallback> callback)1157 ErrCode AbilityManagerClient::StopUser(int accountId, sptr<IUserCallback> callback)
1158 {
1159     TAG_LOGI(AAFwkTag::ABILITYMGR, "StopUser in client:%{public}d.", accountId);
1160     auto abms = GetAbilityManager();
1161     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1162     return abms->StopUser(accountId, callback);
1163 }
1164 
LogoutUser(int32_t accountId)1165 ErrCode AbilityManagerClient::LogoutUser(int32_t accountId)
1166 {
1167     auto abms = GetAbilityManager();
1168     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1169     return abms->LogoutUser(accountId);
1170 }
1171 
RegisterSnapshotHandler(sptr<ISnapshotHandler> handler)1172 ErrCode AbilityManagerClient::RegisterSnapshotHandler(sptr<ISnapshotHandler> handler)
1173 {
1174     auto abms = GetAbilityManager();
1175     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1176     return abms->RegisterSnapshotHandler(handler);
1177 }
1178 
GetMissionSnapshot(const std::string & deviceId,int32_t missionId,MissionSnapshot & snapshot,bool isLowResolution)1179 ErrCode AbilityManagerClient::GetMissionSnapshot(const std::string& deviceId, int32_t missionId,
1180     MissionSnapshot& snapshot, bool isLowResolution)
1181 {
1182     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1183     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1184         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1185         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1186         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetMissionSnapshot");
1187         auto err = sceneSessionManager->GetSessionSnapshot(deviceId, missionId, snapshot, isLowResolution);
1188         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1189             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetMissionSnapshot err");
1190             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1191         }
1192         return static_cast<int>(err);
1193     }
1194     auto abms = GetAbilityManager();
1195     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1196     return abms->GetMissionSnapshot(deviceId, missionId, snapshot, isLowResolution);
1197 }
1198 
StartUserTest(const Want & want,sptr<IRemoteObject> observer)1199 ErrCode AbilityManagerClient::StartUserTest(const Want &want, sptr<IRemoteObject> observer)
1200 {
1201     auto abms = GetAbilityManager();
1202     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1203     return abms->StartUserTest(want, observer);
1204 }
1205 
FinishUserTest(const std::string & msg,const int64_t & resultCode,const std::string & bundleName)1206 ErrCode AbilityManagerClient::FinishUserTest(
1207     const std::string &msg, const int64_t &resultCode, const std::string &bundleName)
1208 {
1209     auto abms = GetAbilityManager();
1210     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1211     return abms->FinishUserTest(msg, resultCode, bundleName);
1212 }
1213 
GetTopAbility(sptr<IRemoteObject> & token)1214 ErrCode AbilityManagerClient::GetTopAbility(sptr<IRemoteObject> &token)
1215 {
1216     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1217     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1218         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1219         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1220         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetTopAbility");
1221         auto ret = static_cast<int>(sceneSessionManager->GetFocusSessionToken(token));
1222         if (ret != ERR_OK) {
1223             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetTopAbility err: %{public}d", ret);
1224         }
1225         return ret;
1226     }
1227     auto abms = GetAbilityManager();
1228     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1229     return abms->GetTopAbility(token);
1230 }
1231 
GetElementNameByToken(sptr<IRemoteObject> token,bool isNeedLocalDeviceId)1232 AppExecFwk::ElementName AbilityManagerClient::GetElementNameByToken(sptr<IRemoteObject> token,
1233     bool isNeedLocalDeviceId)
1234 {
1235     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1236     auto abms = GetAbilityManager();
1237     if (abms == nullptr) {
1238         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms == nullptr");
1239         return {};
1240     }
1241     return abms->GetElementNameByToken(token, isNeedLocalDeviceId);
1242 }
1243 
CheckUIExtensionIsFocused(uint32_t uiExtensionTokenId,bool & isFocused)1244 ErrCode AbilityManagerClient::CheckUIExtensionIsFocused(uint32_t uiExtensionTokenId, bool& isFocused)
1245 {
1246     auto abms = GetAbilityManager();
1247     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1248     return abms->CheckUIExtensionIsFocused(uiExtensionTokenId, isFocused);
1249 }
1250 
DelegatorDoAbilityForeground(sptr<IRemoteObject> token)1251 ErrCode AbilityManagerClient::DelegatorDoAbilityForeground(sptr<IRemoteObject> token)
1252 {
1253     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1254         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1255         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1256         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, DelegatorDoAbilityForeground");
1257         sceneSessionManager->PendingSessionToForeground(token);
1258     }
1259     auto abms = GetAbilityManager();
1260     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1261     return abms->DelegatorDoAbilityForeground(token);
1262 }
1263 
DelegatorDoAbilityBackground(sptr<IRemoteObject> token)1264 ErrCode AbilityManagerClient::DelegatorDoAbilityBackground(sptr<IRemoteObject> token)
1265 {
1266     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1267         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1268         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1269         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, DelegatorDoAbilityBackground");
1270         sceneSessionManager->PendingSessionToBackgroundForDelegator(token);
1271     }
1272     auto abms = GetAbilityManager();
1273     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1274     return abms->DelegatorDoAbilityBackground(token);
1275 }
1276 
SetMissionContinueState(sptr<IRemoteObject> token,const AAFwk::ContinueState & state,sptr<IRemoteObject> sessionToken)1277 ErrCode AbilityManagerClient::SetMissionContinueState(sptr<IRemoteObject> token,
1278     const AAFwk::ContinueState &state, sptr<IRemoteObject> sessionToken)
1279 {
1280     TAG_LOGI(AAFwkTag::ABILITYMGR,
1281         "SetMissionContinueState called. state: %{public}d", state);
1282     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1283         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1284         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1285         uint32_t value = static_cast<uint32_t>(state);
1286         Rosen::ContinueState continueState = static_cast<Rosen::ContinueState>(value);
1287         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, SetMissionContinueState");
1288         auto ret = static_cast<int>(sceneSessionManager->SetSessionContinueState(sessionToken, continueState));
1289         if (ret != ERR_OK) {
1290             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, SetMissionContinueState err");
1291         }
1292         return ret;
1293     }
1294     auto abms = GetAbilityManager();
1295     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1296     return abms->SetMissionContinueState(token, state);
1297 }
1298 
1299 #ifdef SUPPORT_GRAPHICS
SetMissionLabel(sptr<IRemoteObject> token,const std::string & label)1300 ErrCode AbilityManagerClient::SetMissionLabel(sptr<IRemoteObject> token, const std::string& label)
1301 {
1302     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1303         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1304         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1305         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, SetMissionLabel");
1306         auto err = sceneSessionManager->SetSessionLabel(token, label);
1307         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1308             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, SetMissionLabel err");
1309             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1310         }
1311         return static_cast<int>(err);
1312     }
1313     auto abms = GetAbilityManager();
1314     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1315     return abms->SetMissionLabel(token, label);
1316 }
1317 
SetMissionIcon(sptr<IRemoteObject> abilityToken,std::shared_ptr<OHOS::Media::PixelMap> icon)1318 ErrCode AbilityManagerClient::SetMissionIcon(
1319     sptr<IRemoteObject> abilityToken, std::shared_ptr<OHOS::Media::PixelMap> icon)
1320 {
1321     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1322         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1323         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1324         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, SetMissionIcon");
1325         auto err = sceneSessionManager->SetSessionIcon(abilityToken, icon);
1326         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1327             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, SetMissionIcon err");
1328             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1329         }
1330         return static_cast<int>(err);
1331     }
1332     auto abms = GetAbilityManager();
1333     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1334     return abms->SetMissionIcon(abilityToken, icon);
1335 }
1336 
RegisterWindowManagerServiceHandler(sptr<IWindowManagerServiceHandler> handler,bool animationEnabled)1337 ErrCode AbilityManagerClient::RegisterWindowManagerServiceHandler(sptr<IWindowManagerServiceHandler> handler,
1338     bool animationEnabled)
1339 {
1340     auto abms = GetAbilityManager();
1341     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1342     return abms->RegisterWindowManagerServiceHandler(handler, animationEnabled);
1343 }
1344 
CompleteFirstFrameDrawing(sptr<IRemoteObject> abilityToken)1345 void AbilityManagerClient::CompleteFirstFrameDrawing(sptr<IRemoteObject> abilityToken)
1346 {
1347     auto abms = GetAbilityManager();
1348     CHECK_POINTER_RETURN(abms);
1349     abms->CompleteFirstFrameDrawing(abilityToken);
1350 }
1351 
CompleteFirstFrameDrawing(int32_t sessionId)1352 void AbilityManagerClient::CompleteFirstFrameDrawing(int32_t sessionId)
1353 {
1354     auto abms = GetAbilityManager();
1355     CHECK_POINTER_RETURN(abms);
1356     abms->CompleteFirstFrameDrawing(sessionId);
1357 }
1358 
PrepareTerminateAbility(sptr<IRemoteObject> token,sptr<IPrepareTerminateCallback> callback)1359 ErrCode AbilityManagerClient::PrepareTerminateAbility(sptr<IRemoteObject> token,
1360     sptr<IPrepareTerminateCallback> callback)
1361 {
1362     if (callback == nullptr) {
1363         TAG_LOGE(AAFwkTag::ABILITYMGR, "callback is nullptr.");
1364         return ERR_INVALID_VALUE;
1365     }
1366     auto abms = GetAbilityManager();
1367     if (abms == nullptr) {
1368         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1369         return ERR_INVALID_VALUE;
1370     }
1371     return abms->PrepareTerminateAbility(token, callback);
1372 }
1373 
GetDialogSessionInfo(const std::string & dialogSessionId,sptr<DialogSessionInfo> & info)1374 ErrCode AbilityManagerClient::GetDialogSessionInfo(const std::string &dialogSessionId, sptr<DialogSessionInfo> &info)
1375 {
1376     auto abms = GetAbilityManager();
1377     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1378     return abms->GetDialogSessionInfo(dialogSessionId, info);
1379 }
1380 
SendDialogResult(const Want & want,const std::string & dialogSessionId,const bool isAllow)1381 ErrCode AbilityManagerClient::SendDialogResult(const Want &want, const std::string &dialogSessionId, const bool isAllow)
1382 {
1383     auto abms = GetAbilityManager();
1384     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1385     return abms->SendDialogResult(want, dialogSessionId, isAllow);
1386 }
1387 #endif
1388 
DoAbilityForeground(sptr<IRemoteObject> token,uint32_t flag)1389 ErrCode AbilityManagerClient::DoAbilityForeground(sptr<IRemoteObject> token, uint32_t flag)
1390 {
1391     auto abms = GetAbilityManager();
1392     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1393     return abms->DoAbilityForeground(token, flag);
1394 }
1395 
DoAbilityBackground(sptr<IRemoteObject> token,uint32_t flag)1396 ErrCode AbilityManagerClient::DoAbilityBackground(sptr<IRemoteObject> token, uint32_t flag)
1397 {
1398     auto abms = GetAbilityManager();
1399     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1400     return abms->DoAbilityBackground(token, flag);
1401 }
1402 
SetAbilityController(sptr<AppExecFwk::IAbilityController> abilityController,bool imAStabilityTest)1403 ErrCode AbilityManagerClient::SetAbilityController(sptr<AppExecFwk::IAbilityController> abilityController,
1404     bool imAStabilityTest)
1405 {
1406     auto abms = GetAbilityManager();
1407     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1408     return abms->SetAbilityController(abilityController, imAStabilityTest);
1409 }
1410 
UpdateMissionSnapShot(sptr<IRemoteObject> token,std::shared_ptr<Media::PixelMap> pixelMap)1411 void AbilityManagerClient::UpdateMissionSnapShot(sptr<IRemoteObject> token,
1412     std::shared_ptr<Media::PixelMap> pixelMap)
1413 {
1414     auto abms = GetAbilityManager();
1415     CHECK_POINTER_RETURN(abms);
1416     return abms->UpdateMissionSnapShot(token, pixelMap);
1417 }
1418 
EnableRecoverAbility(sptr<IRemoteObject> token)1419 void AbilityManagerClient::EnableRecoverAbility(sptr<IRemoteObject> token)
1420 {
1421     auto abms = GetAbilityManager();
1422     CHECK_POINTER_RETURN(abms);
1423     return abms->EnableRecoverAbility(token);
1424 }
1425 
ScheduleRecoverAbility(sptr<IRemoteObject> token,int32_t reason,const Want * want)1426 void AbilityManagerClient::ScheduleRecoverAbility(sptr<IRemoteObject> token, int32_t reason, const Want *want)
1427 {
1428     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1429     auto abms = GetAbilityManager();
1430     CHECK_POINTER_RETURN(abms);
1431     return abms->ScheduleRecoverAbility(token, reason, want);
1432 }
1433 
GetAbilityManager()1434 sptr<IAbilityManager> AbilityManagerClient::GetAbilityManager()
1435 {
1436     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1437     std::lock_guard<std::recursive_mutex> lock(mutex_);
1438     if (!proxy_) {
1439         (void)Connect();
1440     }
1441 
1442     return proxy_;
1443 }
1444 
ResetProxy(wptr<IRemoteObject> remote)1445 void AbilityManagerClient::ResetProxy(wptr<IRemoteObject> remote)
1446 {
1447     std::lock_guard<std::recursive_mutex> lock(mutex_);
1448     if (!proxy_) {
1449         return;
1450     }
1451 
1452     auto serviceRemote = proxy_->AsObject();
1453     if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) {
1454         TAG_LOGD(AAFwkTag::ABILITYMGR, "To remove death recipient.");
1455         serviceRemote->RemoveDeathRecipient(deathRecipient_);
1456         proxy_ = nullptr;
1457     }
1458 }
1459 
OnRemoteDied(const wptr<IRemoteObject> & remote)1460 void AbilityManagerClient::AbilityMgrDeathRecipient::OnRemoteDied(const wptr<IRemoteObject>& remote)
1461 {
1462     TAG_LOGD(AAFwkTag::ABILITYMGR, "AbilityMgrDeathRecipient handle remote died.");
1463     AbilityManagerClient::GetInstance()->ResetProxy(remote);
1464 }
1465 
FreeInstallAbilityFromRemote(const Want & want,sptr<IRemoteObject> callback,int32_t userId,int requestCode)1466 ErrCode AbilityManagerClient::FreeInstallAbilityFromRemote(const Want &want, sptr<IRemoteObject> callback,
1467     int32_t userId, int requestCode)
1468 {
1469     TAG_LOGI(AAFwkTag::ABILITYMGR, "enter");
1470     auto abms = GetAbilityManager();
1471     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1472     return abms->FreeInstallAbilityFromRemote(want, callback, userId, requestCode);
1473 }
1474 
GetTopAbility(bool isNeedLocalDeviceId)1475 AppExecFwk::ElementName AbilityManagerClient::GetTopAbility(bool isNeedLocalDeviceId)
1476 {
1477     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1478     {
1479         std::lock_guard<std::mutex> lock_l(topAbilityMutex_);
1480         if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1481             AppExecFwk::ElementName elementName = {};
1482             auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1483             if (sceneSessionManager == nullptr) {
1484                 TAG_LOGE(AAFwkTag::ABILITYMGR, "Failed to get sceneSessionManager.");
1485                 return elementName;
1486             }
1487             TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetTopAbility element");
1488             (void)sceneSessionManager->GetFocusSessionElement(elementName);
1489             return elementName;
1490         }
1491     }
1492     TAG_LOGD(AAFwkTag::ABILITYMGR, "enter.");
1493     auto abms = GetAbilityManager();
1494     if (abms == nullptr) {
1495         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms == nullptr");
1496         return {};
1497     }
1498 
1499     return abms->GetTopAbility(isNeedLocalDeviceId);
1500 }
1501 
DumpAbilityInfoDone(std::vector<std::string> & infos,sptr<IRemoteObject> callerToken)1502 ErrCode AbilityManagerClient::DumpAbilityInfoDone(std::vector<std::string> &infos,
1503     sptr<IRemoteObject> callerToken)
1504 {
1505     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1506     auto abms = GetAbilityManager();
1507     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1508     return abms->DumpAbilityInfoDone(infos, callerToken);
1509 }
1510 
HandleDlpApp(Want & want)1511 void AbilityManagerClient::HandleDlpApp(Want &want)
1512 {
1513 #ifdef WITH_DLP
1514     if (!want.GetParams().HasParam(DLP_PARAMS_SANDBOX)) {
1515         HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, "Security::DlpPermission::DlpFileKits::GetSandboxFlag");
1516         bool sandboxFlag = Security::DlpPermission::DlpFileKits::GetSandboxFlag(want);
1517         want.SetParam(DLP_PARAMS_SANDBOX, sandboxFlag);
1518     }
1519 #endif // WITH_DLP
1520 }
1521 
AddFreeInstallObserver(const sptr<IRemoteObject> callerToken,const sptr<AbilityRuntime::IFreeInstallObserver> observer)1522 ErrCode AbilityManagerClient::AddFreeInstallObserver(const sptr<IRemoteObject> callerToken,
1523     const sptr<AbilityRuntime::IFreeInstallObserver> observer)
1524 {
1525     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1526     auto abms = GetAbilityManager();
1527     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1528     return abms->AddFreeInstallObserver(callerToken, observer);
1529 }
1530 
SubmitSaveRecoveryInfo(sptr<IRemoteObject> token)1531 void AbilityManagerClient::SubmitSaveRecoveryInfo(sptr<IRemoteObject> token)
1532 {
1533     auto abms = GetAbilityManager();
1534     CHECK_POINTER_RETURN(abms);
1535     return abms->SubmitSaveRecoveryInfo(token);
1536 }
1537 
ScheduleClearRecoveryPageStack()1538 void AbilityManagerClient::ScheduleClearRecoveryPageStack()
1539 {
1540     auto abms = GetAbilityManager();
1541     CHECK_POINTER_RETURN(abms);
1542     return abms->ScheduleClearRecoveryPageStack();
1543 }
1544 
IsValidMissionIds(const std::vector<int32_t> & missionIds,std::vector<MissionValidResult> & results)1545 int32_t AbilityManagerClient::IsValidMissionIds(
1546     const std::vector<int32_t> &missionIds, std::vector<MissionValidResult> &results)
1547 {
1548     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1549     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1550         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1551         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1552         std::vector<bool> isValidList;
1553         auto err = sceneSessionManager->IsValidSessionIds(missionIds, isValidList);
1554         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, IsValidSessionIds: %{public}d, size: %{public}d",
1555             static_cast<int>(err), static_cast<int32_t>(isValidList.size()));
1556         for (auto i = 0; i < static_cast<int32_t>(isValidList.size()); ++i) {
1557             MissionValidResult missionResult = {};
1558             missionResult.missionId = missionIds.at(i);
1559             missionResult.isValid = isValidList.at(i);
1560             results.push_back(missionResult);
1561         }
1562         return static_cast<int>(err);
1563     }
1564     auto abms = GetAbilityManager();
1565     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1566     return abms->IsValidMissionIds(missionIds, results);
1567 }
1568 
VerifyPermission(const std::string & permission,int pid,int uid)1569 ErrCode AbilityManagerClient::VerifyPermission(const std::string &permission, int pid, int uid)
1570 {
1571     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1572     auto abms = GetAbilityManager();
1573     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1574     return abms->VerifyPermission(permission, pid, uid);
1575 }
1576 
AcquireShareData(int32_t missionId,sptr<IAcquireShareDataCallback> shareData)1577 ErrCode AbilityManagerClient::AcquireShareData(
1578     int32_t missionId, sptr<IAcquireShareDataCallback> shareData)
1579 {
1580     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1581     auto abms = GetAbilityManager();
1582     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1583     return abms->AcquireShareData(missionId, shareData);
1584 }
1585 
ShareDataDone(sptr<IRemoteObject> token,int32_t resultCode,int32_t uniqueId,WantParams & wantParam)1586 ErrCode AbilityManagerClient::ShareDataDone(
1587     sptr<IRemoteObject> token, int32_t resultCode, int32_t uniqueId, WantParams &wantParam)
1588 {
1589     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1590     auto abms = GetAbilityManager();
1591     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1592     return abms->ShareDataDone(token, resultCode, uniqueId, wantParam);
1593 }
1594 
ForceExitApp(const int32_t pid,const ExitReason & exitReason)1595 ErrCode AbilityManagerClient::ForceExitApp(const int32_t pid, const ExitReason &exitReason)
1596 {
1597     TAG_LOGI(AAFwkTag::ABILITYMGR, "begin.");
1598     auto abms = GetAbilityManager();
1599     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1600     return abms->ForceExitApp(pid, exitReason);
1601 }
1602 
RecordAppExitReason(const ExitReason & exitReason)1603 ErrCode AbilityManagerClient::RecordAppExitReason(const ExitReason &exitReason)
1604 {
1605     TAG_LOGD(AAFwkTag::ABILITYMGR, "RecordAppExitReason reason:%{public}d, exitMsg: %{public}s", exitReason.reason,
1606         exitReason.exitMsg.c_str());
1607     auto abms = GetAbilityManager();
1608     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1609     return abms->RecordAppExitReason(exitReason);
1610 }
1611 
RecordProcessExitReason(const int32_t pid,const ExitReason & exitReason)1612 ErrCode AbilityManagerClient::RecordProcessExitReason(const int32_t pid, const ExitReason &exitReason)
1613 {
1614     TAG_LOGD(AAFwkTag::ABILITYMGR, "RecordProcessExitReason pid:%{public}d, reason:%{public}d, exitMsg: %{public}s",
1615         pid, exitReason.reason, exitReason.exitMsg.c_str());
1616     auto abms = GetAbilityManager();
1617     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1618     return abms->RecordProcessExitReason(pid, exitReason);
1619 }
1620 
SetRootSceneSession(sptr<IRemoteObject> rootSceneSession)1621 void AbilityManagerClient::SetRootSceneSession(sptr<IRemoteObject> rootSceneSession)
1622 {
1623     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1624     auto abms = GetAbilityManager();
1625     CHECK_POINTER_RETURN(abms);
1626     abms->SetRootSceneSession(rootSceneSession);
1627 }
1628 
CallUIAbilityBySCB(sptr<SessionInfo> sessionInfo,bool & isColdStart)1629 void AbilityManagerClient::CallUIAbilityBySCB(sptr<SessionInfo> sessionInfo, bool &isColdStart)
1630 {
1631     auto abms = GetAbilityManager();
1632     CHECK_POINTER_RETURN(abms);
1633     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CallUIAbilityBySCB target: %{public}s",
1634         sessionInfo->want.GetElement().GetURI().c_str());
1635     abms->CallUIAbilityBySCB(sessionInfo, isColdStart);
1636     TAG_LOGD(AAFwkTag::ABILITYMGR, "scb call, CallUIAbilityBySCB, isColdStart: %{public}d", isColdStart);
1637 }
1638 
StartSpecifiedAbilityBySCB(const Want & want)1639 void AbilityManagerClient::StartSpecifiedAbilityBySCB(const Want &want)
1640 {
1641     auto abms = GetAbilityManager();
1642     CHECK_POINTER_RETURN(abms);
1643     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, StartSpecifiedAbilityBySCB, target: %{public}s",
1644         want.GetElement().GetURI().c_str());
1645     abms->StartSpecifiedAbilityBySCB(want);
1646 }
1647 
NotifySaveAsResult(const Want & want,int resultCode,int requestCode)1648 ErrCode AbilityManagerClient::NotifySaveAsResult(const Want &want, int resultCode, int requestCode)
1649 {
1650     TAG_LOGD(AAFwkTag::ABILITYMGR, "call.");
1651     auto abms = GetAbilityManager();
1652     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1653     return abms->NotifySaveAsResult(want, resultCode, requestCode);
1654 }
1655 
SetSessionManagerService(sptr<IRemoteObject> sessionManagerService)1656 ErrCode AbilityManagerClient::SetSessionManagerService(sptr<IRemoteObject> sessionManagerService)
1657 {
1658     TAG_LOGI(AAFwkTag::ABILITYMGR, "AbilityManagerClient::SetSessionManagerService call");
1659     auto abms = GetAbilityManager();
1660     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1661     return abms->SetSessionManagerService(sessionManagerService);
1662 }
1663 
RegisterIAbilityManagerCollaborator(int32_t type,sptr<IAbilityManagerCollaborator> impl)1664 ErrCode AbilityManagerClient::RegisterIAbilityManagerCollaborator(
1665     int32_t type, sptr<IAbilityManagerCollaborator> impl)
1666 {
1667     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1668     auto abms = GetAbilityManager();
1669     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1670     return abms->RegisterIAbilityManagerCollaborator(type, impl);
1671 }
1672 
UnregisterIAbilityManagerCollaborator(int32_t type)1673 ErrCode AbilityManagerClient::UnregisterIAbilityManagerCollaborator(int32_t type)
1674 {
1675     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1676     auto abms = GetAbilityManager();
1677     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1678     return abms->UnregisterIAbilityManagerCollaborator(type);
1679 }
1680 
RegisterStatusBarDelegate(sptr<AbilityRuntime::IStatusBarDelegate> delegate)1681 ErrCode AbilityManagerClient::RegisterStatusBarDelegate(sptr<AbilityRuntime::IStatusBarDelegate> delegate)
1682 {
1683     TAG_LOGI(AAFwkTag::ABILITYMGR, "called");
1684     auto abms = GetAbilityManager();
1685     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1686     return abms->RegisterStatusBarDelegate(delegate);
1687 }
1688 
KillProcessWithPrepareTerminate(const std::vector<int32_t> & pids)1689 ErrCode AbilityManagerClient::KillProcessWithPrepareTerminate(const std::vector<int32_t>& pids)
1690 {
1691     TAG_LOGI(AAFwkTag::ABILITYMGR, "called");
1692     auto abms = GetAbilityManager();
1693     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1694     return abms->KillProcessWithPrepareTerminate(pids);
1695 }
1696 
RegisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)1697 ErrCode AbilityManagerClient::RegisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)
1698 {
1699     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1700     auto abms = GetAbilityManager();
1701     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1702     return abms->RegisterAutoStartupSystemCallback(callback);
1703 }
1704 
UnregisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)1705 ErrCode AbilityManagerClient::UnregisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)
1706 {
1707     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1708     auto abms = GetAbilityManager();
1709     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1710     return abms->UnregisterAutoStartupSystemCallback(callback);
1711 }
1712 
SetApplicationAutoStartup(const AutoStartupInfo & info)1713 ErrCode AbilityManagerClient::SetApplicationAutoStartup(const AutoStartupInfo &info)
1714 {
1715     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1716     auto abms = GetAbilityManager();
1717     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1718     return abms->SetApplicationAutoStartup(info);
1719 }
1720 
CancelApplicationAutoStartup(const AutoStartupInfo & info)1721 ErrCode AbilityManagerClient::CancelApplicationAutoStartup(const AutoStartupInfo &info)
1722 {
1723     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1724     auto abms = GetAbilityManager();
1725     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1726     return abms->CancelApplicationAutoStartup(info);
1727 }
1728 
QueryAllAutoStartupApplications(std::vector<AutoStartupInfo> & infoList)1729 ErrCode AbilityManagerClient::QueryAllAutoStartupApplications(std::vector<AutoStartupInfo> &infoList)
1730 {
1731     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1732     auto abms = GetAbilityManager();
1733     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1734     return abms->QueryAllAutoStartupApplications(infoList);
1735 }
1736 
PrepareTerminateAbilityBySCB(sptr<SessionInfo> sessionInfo,bool & isPrepareTerminate)1737 ErrCode AbilityManagerClient::PrepareTerminateAbilityBySCB(sptr<SessionInfo> sessionInfo,
1738     bool &isPrepareTerminate)
1739 {
1740     auto abms = GetAbilityManager();
1741     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1742     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, PrepareTerminateAbilityBySCB");
1743     return abms->PrepareTerminateAbilityBySCB(sessionInfo, isPrepareTerminate);
1744 }
1745 
RegisterSessionHandler(sptr<IRemoteObject> object)1746 ErrCode AbilityManagerClient::RegisterSessionHandler(sptr<IRemoteObject> object)
1747 {
1748     TAG_LOGD(AAFwkTag::ABILITYMGR, "call");
1749     auto abms = GetAbilityManager();
1750     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1751     return abms->RegisterSessionHandler(object);
1752 }
1753 
RegisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)1754 ErrCode AbilityManagerClient::RegisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)
1755 {
1756     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1757     auto abms = GetAbilityManager();
1758     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1759     return abms->RegisterAppDebugListener(listener);
1760 }
1761 
UnregisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)1762 ErrCode AbilityManagerClient::UnregisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)
1763 {
1764     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1765     auto abms = GetAbilityManager();
1766     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1767     return abms->UnregisterAppDebugListener(listener);
1768 }
1769 
AttachAppDebug(const std::string & bundleName)1770 ErrCode AbilityManagerClient::AttachAppDebug(const std::string &bundleName)
1771 {
1772     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1773     auto abms = GetAbilityManager();
1774     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1775     return abms->AttachAppDebug(bundleName);
1776 }
1777 
DetachAppDebug(const std::string & bundleName)1778 ErrCode AbilityManagerClient::DetachAppDebug(const std::string &bundleName)
1779 {
1780     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1781     auto abms = GetAbilityManager();
1782     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1783     return abms->DetachAppDebug(bundleName);
1784 }
1785 
ExecuteIntent(uint64_t key,sptr<IRemoteObject> callerToken,const InsightIntentExecuteParam & param)1786 ErrCode AbilityManagerClient::ExecuteIntent(uint64_t key, sptr<IRemoteObject> callerToken,
1787     const InsightIntentExecuteParam &param)
1788 {
1789     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1790     auto abms = GetAbilityManager();
1791     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1792     return abms->ExecuteIntent(key, callerToken, param);
1793 }
1794 
IsAbilityControllerStart(const Want & want)1795 bool AbilityManagerClient::IsAbilityControllerStart(const Want &want)
1796 {
1797     TAG_LOGD(AAFwkTag::ABILITYMGR, "call");
1798     auto abms = GetAbilityManager();
1799     if (abms == nullptr) {
1800         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1801         return true;
1802     }
1803     return abms->IsAbilityControllerStart(want);
1804 }
1805 
ExecuteInsightIntentDone(sptr<IRemoteObject> token,uint64_t intentId,const InsightIntentExecuteResult & result)1806 ErrCode AbilityManagerClient::ExecuteInsightIntentDone(sptr<IRemoteObject> token, uint64_t intentId,
1807     const InsightIntentExecuteResult &result)
1808 {
1809     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1810     auto abms = GetAbilityManager();
1811     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1812     return abms->ExecuteInsightIntentDone(token, intentId, result);
1813 }
1814 
GetForegroundUIAbilities(std::vector<AppExecFwk::AbilityStateData> & list)1815 int32_t AbilityManagerClient::GetForegroundUIAbilities(std::vector<AppExecFwk::AbilityStateData> &list)
1816 {
1817     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1818     auto abms = GetAbilityManager();
1819     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1820     return abms->GetForegroundUIAbilities(list);
1821 }
1822 
OpenFile(const Uri & uri,uint32_t flag)1823 int32_t AbilityManagerClient::OpenFile(const Uri& uri, uint32_t flag)
1824 {
1825     TAG_LOGD(AAFwkTag::ABILITYMGR, "call OpenFile");
1826     auto abms = GetAbilityManager();
1827     if (abms == nullptr) {
1828         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1829         return true;
1830     }
1831     return abms->OpenFile(uri, flag);
1832 }
1833 
RequestAssertFaultDialog(const sptr<IRemoteObject> & callback,const AAFwk::WantParams & wantParams)1834 int32_t AbilityManagerClient::RequestAssertFaultDialog(
1835     const sptr<IRemoteObject> &callback, const AAFwk::WantParams &wantParams)
1836 {
1837     TAG_LOGD(AAFwkTag::ABILITYMGR, "Request to display assert fault dialog.");
1838     auto abms = GetAbilityManager();
1839     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1840     return abms->RequestAssertFaultDialog(callback, wantParams);
1841 }
1842 
NotifyDebugAssertResult(uint64_t assertFaultSessionId,AAFwk::UserStatus userStatus)1843 int32_t AbilityManagerClient::NotifyDebugAssertResult(uint64_t assertFaultSessionId, AAFwk::UserStatus userStatus)
1844 {
1845     TAG_LOGD(AAFwkTag::ABILITYMGR, "Notify user action result to assert fault callback.");
1846     auto abms = GetAbilityManager();
1847     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1848     return abms->NotifyDebugAssertResult(assertFaultSessionId, userStatus);
1849 }
1850 
UpdateSessionInfoBySCB(std::list<SessionInfo> & sessionInfos,int32_t userId,std::vector<int32_t> & sessionIds)1851 int32_t AbilityManagerClient::UpdateSessionInfoBySCB(std::list<SessionInfo> &sessionInfos, int32_t userId,
1852     std::vector<int32_t> &sessionIds)
1853 {
1854     auto abms = GetAbilityManager();
1855     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1856     TAG_LOGD(AAFwkTag::ABILITYMGR, "scb call, UpdateSessionInfoBySCB");
1857     return abms->UpdateSessionInfoBySCB(sessionInfos, userId, sessionIds);
1858 }
1859 
GetUIExtensionSessionInfo(const sptr<IRemoteObject> token,UIExtensionSessionInfo & uiExtensionSessionInfo,int32_t userId)1860 ErrCode AbilityManagerClient::GetUIExtensionSessionInfo(const sptr<IRemoteObject> token,
1861     UIExtensionSessionInfo &uiExtensionSessionInfo, int32_t userId)
1862 {
1863     TAG_LOGD(AAFwkTag::ABILITYMGR, "Get ui extension session info.");
1864     auto abms = GetAbilityManager();
1865     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1866     return abms->GetUIExtensionSessionInfo(token, uiExtensionSessionInfo, userId);
1867 }
1868 
RestartApp(const AAFwk::Want & want)1869 int32_t AbilityManagerClient::RestartApp(const AAFwk::Want &want)
1870 {
1871     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1872     TAG_LOGI(AAFwkTag::ABILITYMGR, "called");
1873     auto abms = GetAbilityManager();
1874     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1875     return abms->RestartApp(want);
1876 }
1877 
GetUIExtensionRootHostInfo(const sptr<IRemoteObject> token,UIExtensionHostInfo & hostInfo,int32_t userId)1878 ErrCode AbilityManagerClient::GetUIExtensionRootHostInfo(const sptr<IRemoteObject> token,
1879     UIExtensionHostInfo &hostInfo, int32_t userId)
1880 {
1881     TAG_LOGD(AAFwkTag::ABILITYMGR, "Get ui extension host info.");
1882     auto abms = GetAbilityManager();
1883     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1884     return abms->GetUIExtensionRootHostInfo(token, hostInfo, userId);
1885 }
1886 
OpenAtomicService(Want & want,const StartOptions & options,sptr<IRemoteObject> callerToken,int32_t requestCode,int32_t userId)1887 int32_t AbilityManagerClient::OpenAtomicService(Want& want, const StartOptions &options,
1888     sptr<IRemoteObject> callerToken, int32_t requestCode, int32_t userId)
1889 {
1890     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1891     auto abms = GetAbilityManager();
1892     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1893     return abms->OpenAtomicService(want, options, callerToken, requestCode, userId);
1894 }
1895 
SetResidentProcessEnabled(const std::string & bundleName,bool enable)1896 int32_t AbilityManagerClient::SetResidentProcessEnabled(const std::string &bundleName, bool enable)
1897 {
1898     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1899     auto abms = GetAbilityManager();
1900     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1901     return abms->SetResidentProcessEnabled(bundleName, enable);
1902 }
1903 
IsEmbeddedOpenAllowed(sptr<IRemoteObject> callerToken,const std::string & appId)1904 bool AbilityManagerClient::IsEmbeddedOpenAllowed(sptr<IRemoteObject> callerToken, const std::string &appId)
1905 {
1906     TAG_LOGD(AAFwkTag::ABILITYMGR, "Get ui extension host info.");
1907     auto abms = GetAbilityManager();
1908     if (abms == nullptr) {
1909         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1910         return false;
1911     }
1912     return abms->IsEmbeddedOpenAllowed(callerToken, appId);
1913 }
1914 
StartShortcut(const Want & want,const StartOptions & startOptions)1915 int32_t AbilityManagerClient::StartShortcut(const Want &want, const StartOptions &startOptions)
1916 {
1917     TAG_LOGD(AAFwkTag::ABILITYMGR, "start short cut.");
1918     auto abms = GetAbilityManager();
1919     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1920     return abms->StartShortcut(want, startOptions);
1921 }
1922 
GetAbilityStateByPersistentId(int32_t persistentId,bool & state)1923 int32_t AbilityManagerClient::GetAbilityStateByPersistentId(int32_t persistentId, bool &state)
1924 {
1925     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1926     auto abms = GetAbilityManager();
1927     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1928     return abms->GetAbilityStateByPersistentId(persistentId, state);
1929 }
1930 
TransferAbilityResultForExtension(const sptr<IRemoteObject> & callerToken,int32_t resultCode,const Want & want)1931 int32_t AbilityManagerClient::TransferAbilityResultForExtension(const sptr<IRemoteObject> &callerToken,
1932     int32_t resultCode, const Want &want)
1933 {
1934     auto abms = GetAbilityManager();
1935     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1936     return abms->TransferAbilityResultForExtension(callerToken, resultCode, want);
1937 }
1938 
NotifyFrozenProcessByRSS(const std::vector<int32_t> & pidList,int32_t uid)1939 void AbilityManagerClient::NotifyFrozenProcessByRSS(const std::vector<int32_t> &pidList, int32_t uid)
1940 {
1941     auto abms = GetAbilityManager();
1942     CHECK_POINTER_RETURN(abms);
1943     return abms->NotifyFrozenProcessByRSS(pidList, uid);
1944 }
1945 
CleanUIAbilityBySCB(sptr<SessionInfo> sessionInfo)1946 ErrCode AbilityManagerClient::CleanUIAbilityBySCB(sptr<SessionInfo> sessionInfo)
1947 {
1948     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1949     if (sessionInfo == nullptr) {
1950         TAG_LOGE(AAFwkTag::ABILITYMGR, "sessionInfo is invalid.");
1951         return ERR_INVALID_VALUE;
1952     }
1953     auto abms = GetAbilityManager();
1954     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1955     TAG_LOGD(AAFwkTag::ABILITYMGR, "scb call, CleanUIAbilityBySCB");
1956     return abms->CleanUIAbilityBySCB(sessionInfo);
1957 }
1958 
PreStartMission(const std::string & bundleName,const std::string & moduleName,const std::string & abilityName,const std::string & startTime)1959 ErrCode AbilityManagerClient::PreStartMission(const std::string& bundleName, const std::string& moduleName,
1960     const std::string& abilityName, const std::string& startTime)
1961 {
1962     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1963     auto abms = GetAbilityManager();
1964     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1965     return abms->PreStartMission(bundleName, moduleName, abilityName, startTime);
1966 }
1967 
OpenLink(const Want & want,sptr<IRemoteObject> callerToken,int32_t userId,int requestCode)1968 ErrCode AbilityManagerClient::OpenLink(const Want& want, sptr<IRemoteObject> callerToken,
1969     int32_t userId, int requestCode)
1970 {
1971     auto abms = GetAbilityManager();
1972     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1973     return abms->OpenLink(want, callerToken, userId, requestCode);
1974 }
1975 
TerminateMission(int32_t missionId)1976 ErrCode AbilityManagerClient::TerminateMission(int32_t missionId)
1977 {
1978 #ifdef SUPPORT_SCREEN
1979     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1980         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1981         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1982         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, TerminateMission");
1983         auto err = sceneSessionManager->TerminateSessionByPersistentId(missionId);
1984         if (err != OHOS::Rosen::WMError::WM_OK) {
1985             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, TerminateMission err: %{public}d.", static_cast<int32_t>(err));
1986         }
1987         if (err == Rosen::WMError::WM_ERROR_INVALID_PERMISSION) {
1988             return CHECK_PERMISSION_FAILED;
1989         }
1990         if (err == Rosen::WMError::WM_ERROR_NOT_SYSTEM_APP) {
1991             return ERR_NOT_SYSTEM_APP;
1992         }
1993         return static_cast<int32_t>(err);
1994     }
1995 #endif //SUPPORT_SCREEN
1996     auto abms = GetAbilityManager();
1997     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1998     int32_t ret = abms->TerminateMission(missionId);
1999     if (ret != ERR_OK) {
2000         TAG_LOGE(AAFwkTag::ABILITYMGR, "TerminateMission failed, err: %{public}d.", ret);
2001     }
2002     return ret;
2003 }
2004 
UpdateAssociateConfigList(const std::map<std::string,std::list<std::string>> & configs,const std::list<std::string> & exportConfigs,int32_t flag)2005 ErrCode AbilityManagerClient::UpdateAssociateConfigList(const std::map<std::string, std::list<std::string>>& configs,
2006     const std::list<std::string>& exportConfigs, int32_t flag)
2007 {
2008     TAG_LOGD(AAFwkTag::ABILITYMGR, "call.");
2009     auto abms = GetAbilityManager();
2010     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
2011     return abms->UpdateAssociateConfigList(configs, exportConfigs, flag);
2012 }
2013 
StartSelfUIAbility(const Want & want)2014 ErrCode AbilityManagerClient::StartSelfUIAbility(const Want &want)
2015 {
2016     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
2017     auto abms = GetAbilityManager();
2018     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
2019     return abms->StartSelfUIAbility(want);
2020 }
2021 
QueryPreLoadUIExtensionRecord(const AppExecFwk::ElementName & element,const std::string & moduleName,const std::string & hostBundleName,int32_t & recordNum,int32_t userId)2022 ErrCode AbilityManagerClient::QueryPreLoadUIExtensionRecord(const AppExecFwk::ElementName &element,
2023                                                             const std::string &moduleName,
2024                                                             const std::string &hostBundleName,
2025                                                             int32_t &recordNum,
2026                                                             int32_t userId)
2027 {
2028     TAG_LOGD(AAFwkTag::UI_EXT, "call QueryPreLoadUIExtensionRecord");
2029     auto abms = GetAbilityManager();
2030     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
2031     return abms->QueryPreLoadUIExtensionRecord(
2032         element, moduleName, hostBundleName, recordNum, userId);
2033 }
2034 } // namespace AAFwk
2035 } // namespace OHOS
2036