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::ABILITYMGR, "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::ABILITYMGR, "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::ABILITYMGR, "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::ABILITYMGR, "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::ABILITYMGR, "Connect failed, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
549             want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
550             want.GetUriString().c_str());
551         return ABILITY_SERVICE_NOT_CONNECTED;
552     }
553 
554     TAG_LOGI(AAFwkTag::ABILITYMGR, "name:%{public}s %{public}s, uri:%{public}s.",
555         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
556         want.GetUriString().c_str());
557     return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::DATASHARE, userId);
558 }
559 
ConnectExtensionAbility(const Want & want,sptr<IAbilityConnection> connect,int32_t userId)560 ErrCode AbilityManagerClient::ConnectExtensionAbility(const Want &want, sptr<IAbilityConnection> connect,
561     int32_t userId)
562 {
563     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
564     auto abms = GetAbilityManager();
565     if (abms == nullptr) {
566         TAG_LOGE(AAFwkTag::ABILITYMGR, "Connect failed, bundleName:%{public}s, abilityName:%{public}s",
567             want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str());
568         return ABILITY_SERVICE_NOT_CONNECTED;
569     }
570 
571     TAG_LOGI(AAFwkTag::ABILITYMGR, "name:%{public}s %{public}s, userId:%{public}d.",
572         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
573     return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::UNSPECIFIED, userId);
574 }
575 
ConnectUIExtensionAbility(const Want & want,sptr<IAbilityConnection> connect,sptr<SessionInfo> sessionInfo,int32_t userId,sptr<UIExtensionAbilityConnectInfo> connectInfo)576 ErrCode AbilityManagerClient::ConnectUIExtensionAbility(const Want &want, sptr<IAbilityConnection> connect,
577     sptr<SessionInfo> sessionInfo, int32_t userId, sptr<UIExtensionAbilityConnectInfo> connectInfo)
578 {
579     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
580     auto abms = GetAbilityManager();
581     if (abms == nullptr) {
582         TAG_LOGE(AAFwkTag::ABILITYMGR, "Connect failed, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
583             want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
584             want.GetUriString().c_str());
585         return ABILITY_SERVICE_NOT_CONNECTED;
586     }
587 
588     TAG_LOGI(AAFwkTag::ABILITYMGR, "name:%{public}s %{public}s, uri:%{public}s.",
589         want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
590         want.GetUriString().c_str());
591     return abms->ConnectUIExtensionAbility(want, connect, sessionInfo, userId, connectInfo);
592 }
593 
DisconnectAbility(sptr<IAbilityConnection> connect)594 ErrCode AbilityManagerClient::DisconnectAbility(sptr<IAbilityConnection> connect)
595 {
596     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
597     auto abms = GetAbilityManager();
598     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
599     TAG_LOGI(AAFwkTag::ABILITYMGR, "DisconnectAbility call");
600     return abms->DisconnectAbility(connect);
601 }
602 
AcquireDataAbility(const Uri & uri,bool tryBind,sptr<IRemoteObject> callerToken)603 sptr<IAbilityScheduler> AbilityManagerClient::AcquireDataAbility(
604     const Uri &uri, bool tryBind, sptr<IRemoteObject> callerToken)
605 {
606     auto abms = GetAbilityManager();
607     if (!abms) {
608         return nullptr;
609     }
610     return abms->AcquireDataAbility(uri, tryBind, callerToken);
611 }
612 
ReleaseDataAbility(sptr<IAbilityScheduler> dataAbilityScheduler,sptr<IRemoteObject> callerToken)613 ErrCode AbilityManagerClient::ReleaseDataAbility(
614     sptr<IAbilityScheduler> dataAbilityScheduler, sptr<IRemoteObject> callerToken)
615 {
616     auto abms = GetAbilityManager();
617     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
618     return abms->ReleaseDataAbility(dataAbilityScheduler, callerToken);
619 }
620 
DumpState(const std::string & args,std::vector<std::string> & state)621 ErrCode AbilityManagerClient::DumpState(const std::string &args, std::vector<std::string> &state)
622 {
623     auto abms = GetAbilityManager();
624     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
625     abms->DumpState(args, state);
626     return ERR_OK;
627 }
628 
DumpSysState(const std::string & args,std::vector<std::string> & state,bool isClient,bool isUserID,int UserID)629 ErrCode AbilityManagerClient::DumpSysState(
630     const std::string& args, std::vector<std::string>& state, bool isClient, bool isUserID, int UserID)
631 {
632     auto abms = GetAbilityManager();
633     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
634     abms->DumpSysState(args, state, isClient, isUserID, UserID);
635     return ERR_OK;
636 }
637 
Connect()638 ErrCode AbilityManagerClient::Connect()
639 {
640     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
641     std::lock_guard<std::recursive_mutex> lock(mutex_);
642     if (proxy_ != nullptr) {
643         return ERR_OK;
644     }
645     sptr<ISystemAbilityManager> systemManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
646     if (systemManager == nullptr) {
647         TAG_LOGE(AAFwkTag::ABILITYMGR, "Fail to get registry.");
648         return GET_ABILITY_SERVICE_FAILED;
649     }
650     sptr<IRemoteObject> remoteObj = systemManager->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
651     if (remoteObj == nullptr) {
652         TAG_LOGE(AAFwkTag::ABILITYMGR, "Fail to connect ability manager service.");
653         return GET_ABILITY_SERVICE_FAILED;
654     }
655 
656     deathRecipient_ = sptr<IRemoteObject::DeathRecipient>(new AbilityMgrDeathRecipient());
657     if (deathRecipient_ == nullptr) {
658         TAG_LOGE(AAFwkTag::ABILITYMGR, "Failed to create AbilityMgrDeathRecipient!");
659         return GET_ABILITY_SERVICE_FAILED;
660     }
661     if ((remoteObj->IsProxyObject()) && (!remoteObj->AddDeathRecipient(deathRecipient_))) {
662         TAG_LOGE(AAFwkTag::ABILITYMGR, "Add death recipient to AbilityManagerService failed.");
663         return GET_ABILITY_SERVICE_FAILED;
664     }
665 
666     proxy_ = iface_cast<IAbilityManager>(remoteObj);
667     TAG_LOGD(AAFwkTag::ABILITYMGR, "Connect ability manager service success.");
668     return ERR_OK;
669 }
670 
RemoveDeathRecipient()671 void AbilityManagerClient::RemoveDeathRecipient()
672 {
673     TAG_LOGI(AAFwkTag::ABILITYMGR, "RemoveDeathRecipient");
674     std::lock_guard<std::recursive_mutex> lock(mutex_);
675     if (proxy_ == nullptr) {
676         TAG_LOGI(AAFwkTag::ABILITYMGR, "AbilityMgrProxy do not exist");
677         return;
678     }
679     if (deathRecipient_ == nullptr) {
680         TAG_LOGI(AAFwkTag::ABILITYMGR, "AbilityMgrDeathRecipient do not exist");
681         return;
682     }
683     auto serviceRemote = proxy_->AsObject();
684     if (serviceRemote != nullptr && serviceRemote->RemoveDeathRecipient(deathRecipient_)) {
685         proxy_ = nullptr;
686         deathRecipient_ = nullptr;
687         TAG_LOGI(AAFwkTag::ABILITYMGR, "Remove DeathRecipient success");
688     }
689 }
690 
StopServiceAbility(const Want & want,sptr<IRemoteObject> token)691 ErrCode AbilityManagerClient::StopServiceAbility(const Want &want, sptr<IRemoteObject> token)
692 {
693     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
694     auto abms = GetAbilityManager();
695     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
696     return abms->StopServiceAbility(want, -1, token);
697 }
698 
KillProcess(const std::string & bundleName,const bool clearPageStack)699 ErrCode AbilityManagerClient::KillProcess(const std::string &bundleName, const bool clearPageStack)
700 {
701     TAG_LOGI(AAFwkTag::ABILITYMGR, "enter");
702     auto abms = GetAbilityManager();
703     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
704     return abms->KillProcess(bundleName, clearPageStack);
705 }
706 
707 #ifdef ABILITY_COMMAND_FOR_TEST
ForceTimeoutForTest(const std::string & abilityName,const std::string & state)708 ErrCode AbilityManagerClient::ForceTimeoutForTest(const std::string &abilityName, const std::string &state)
709 {
710     TAG_LOGD(AAFwkTag::ABILITYMGR, "enter");
711     auto abms = GetAbilityManager();
712     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
713     return abms->ForceTimeoutForTest(abilityName, state);
714 }
715 #endif
716 
ContinueMission(const std::string & srcDeviceId,const std::string & dstDeviceId,int32_t missionId,sptr<IRemoteObject> callback,AAFwk::WantParams & wantParams)717 ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, const std::string &dstDeviceId,
718     int32_t missionId, sptr<IRemoteObject> callback, AAFwk::WantParams &wantParams)
719 {
720     if (srcDeviceId.empty() || dstDeviceId.empty() || callback == nullptr) {
721         TAG_LOGE(AAFwkTag::ABILITYMGR, "srcDeviceId or dstDeviceId or callback is null!");
722         return ERR_INVALID_VALUE;
723     }
724 
725     auto abms = GetAbilityManager();
726     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
727     int result = abms->ContinueMission(srcDeviceId, dstDeviceId, missionId, callback, wantParams);
728     return result;
729 }
730 
ContinueMission(AAFwk::ContinueMissionInfo continueMissionInfo,const sptr<IRemoteObject> & callback)731 ErrCode AbilityManagerClient::ContinueMission(AAFwk::ContinueMissionInfo continueMissionInfo,
732     const sptr<IRemoteObject> &callback)
733 
734 {
735     if (continueMissionInfo.srcDeviceId.empty() || continueMissionInfo.dstDeviceId.empty() || callback == nullptr) {
736         TAG_LOGE(AAFwkTag::ABILITYMGR, "srcDeviceId or dstDeviceId or callback is null!");
737         return ERR_INVALID_VALUE;
738     }
739 
740     auto abms = GetAbilityManager();
741     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
742     int result = abms->ContinueMission(continueMissionInfo, callback);
743     return result;
744 }
745 
StartContinuation(const Want & want,sptr<IRemoteObject> abilityToken,int32_t status)746 ErrCode AbilityManagerClient::StartContinuation(const Want &want, sptr<IRemoteObject> abilityToken,
747     int32_t status)
748 {
749     auto abms = GetAbilityManager();
750     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
751     int result = abms->StartContinuation(want, abilityToken, status);
752     return result;
753 }
754 
NotifyCompleteContinuation(const std::string & deviceId,int32_t sessionId,bool isSuccess)755 void AbilityManagerClient::NotifyCompleteContinuation(const std::string &deviceId,
756     int32_t sessionId, bool isSuccess)
757 {
758     auto abms = GetAbilityManager();
759     CHECK_POINTER_RETURN(abms);
760     abms->NotifyCompleteContinuation(deviceId, sessionId, isSuccess);
761 }
762 
ContinueAbility(const std::string & deviceId,int32_t missionId,uint32_t versionCode)763 ErrCode AbilityManagerClient::ContinueAbility(const std::string &deviceId, int32_t missionId, uint32_t versionCode)
764 {
765     auto abms = GetAbilityManager();
766     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
767     return abms->ContinueAbility(deviceId, missionId, versionCode);
768 }
769 
NotifyContinuationResult(int32_t missionId,int32_t result)770 ErrCode AbilityManagerClient::NotifyContinuationResult(int32_t missionId, int32_t result)
771 {
772     auto abms = GetAbilityManager();
773     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
774     return abms->NotifyContinuationResult(missionId, result);
775 }
776 
LockMissionForCleanup(int32_t missionId)777 ErrCode AbilityManagerClient::LockMissionForCleanup(int32_t missionId)
778 {
779     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
780         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
781         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
782         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, LockMissionForCleanup");
783         auto err = sceneSessionManager->LockSession(missionId);
784         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
785             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, LockMissionForCleanup err");
786             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
787         }
788         return static_cast<int>(err);
789     }
790     auto abms = GetAbilityManager();
791     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
792     return abms->LockMissionForCleanup(missionId);
793 }
794 
UnlockMissionForCleanup(int32_t missionId)795 ErrCode AbilityManagerClient::UnlockMissionForCleanup(int32_t missionId)
796 {
797     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
798     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
799         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
800         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
801         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, UnlockMissionForCleanup");
802         auto err = sceneSessionManager->UnlockSession(missionId);
803         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
804             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, UnlockMissionForCleanup err");
805             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
806         }
807         return static_cast<int>(err);
808     }
809     auto abms = GetAbilityManager();
810     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
811     return abms->UnlockMissionForCleanup(missionId);
812 }
813 
SetLockedState(int32_t sessionId,bool lockedState)814 void AbilityManagerClient::SetLockedState(int32_t sessionId, bool lockedState)
815 {
816     auto abms = GetAbilityManager();
817     CHECK_POINTER_RETURN(abms);
818     abms->SetLockedState(sessionId, lockedState);
819 }
820 
RegisterMissionListener(sptr<IMissionListener> listener)821 ErrCode AbilityManagerClient::RegisterMissionListener(sptr<IMissionListener> listener)
822 {
823     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
824         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
825         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
826         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, RegisterMissionListener");
827         auto err = sceneSessionManager->RegisterSessionListener(listener);
828         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
829             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, RegisterMissionListener err");
830             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
831         }
832         return static_cast<int>(err);
833     }
834     auto abms = GetAbilityManager();
835     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
836     return abms->RegisterMissionListener(listener);
837 }
838 
UnRegisterMissionListener(sptr<IMissionListener> listener)839 ErrCode AbilityManagerClient::UnRegisterMissionListener(sptr<IMissionListener> listener)
840 {
841     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
842         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
843         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
844         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, UnRegisterMissionListener");
845         auto err = sceneSessionManager->UnRegisterSessionListener(listener);
846         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
847             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, UnRegisterMissionListener err");
848             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
849         }
850         return static_cast<int>(err);
851     }
852     auto abms = GetAbilityManager();
853     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
854     return abms->UnRegisterMissionListener(listener);
855 }
856 
RegisterMissionListener(const std::string & deviceId,sptr<IRemoteMissionListener> listener)857 ErrCode AbilityManagerClient::RegisterMissionListener(const std::string &deviceId,
858     sptr<IRemoteMissionListener> listener)
859 {
860     auto abms = GetAbilityManager();
861     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
862     return abms->RegisterMissionListener(deviceId, listener);
863 }
864 
RegisterOnListener(const std::string & type,sptr<IRemoteOnListener> listener)865 ErrCode AbilityManagerClient::RegisterOnListener(const std::string &type,
866     sptr<IRemoteOnListener> listener)
867 {
868     auto abms = GetAbilityManager();
869     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
870     return abms->RegisterOnListener(type, listener);
871 }
872 
RegisterOffListener(const std::string & type,sptr<IRemoteOnListener> listener)873 ErrCode AbilityManagerClient::RegisterOffListener(const std::string &type,
874     sptr<IRemoteOnListener> listener)
875 {
876     auto abms = GetAbilityManager();
877     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
878     return abms->RegisterOffListener(type, listener);
879 }
880 
UnRegisterMissionListener(const std::string & deviceId,sptr<IRemoteMissionListener> listener)881 ErrCode AbilityManagerClient::UnRegisterMissionListener(const std::string &deviceId,
882     sptr<IRemoteMissionListener> listener)
883 {
884     auto abms = GetAbilityManager();
885     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
886     return abms->UnRegisterMissionListener(deviceId, listener);
887 }
888 
GetMissionInfos(const std::string & deviceId,int32_t numMax,std::vector<MissionInfo> & missionInfos)889 ErrCode AbilityManagerClient::GetMissionInfos(const std::string& deviceId, int32_t numMax,
890     std::vector<MissionInfo> &missionInfos)
891 {
892     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
893     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
894         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
895         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
896         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfos");
897         auto err = sceneSessionManager->GetSessionInfos(deviceId, numMax, missionInfos);
898         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
899             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfos err");
900             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
901         }
902         return static_cast<int>(err);
903     }
904     auto abms = GetAbilityManager();
905     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
906     return abms->GetMissionInfos(deviceId, numMax, missionInfos);
907 }
908 
GetMissionInfo(const std::string & deviceId,int32_t missionId,MissionInfo & missionInfo)909 ErrCode AbilityManagerClient::GetMissionInfo(const std::string& deviceId, int32_t missionId,
910     MissionInfo &missionInfo)
911 {
912     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
913     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
914         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
915         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
916         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfo");
917         auto err = sceneSessionManager->GetSessionInfo(deviceId, missionId, missionInfo);
918         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
919             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetMissionInfo err");
920             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
921         }
922         return static_cast<int>(err);
923     }
924     auto abms = GetAbilityManager();
925     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
926     return abms->GetMissionInfo(deviceId, missionId, missionInfo);
927 }
928 
CleanMission(int32_t missionId)929 ErrCode AbilityManagerClient::CleanMission(int32_t missionId)
930 {
931     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
932     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
933         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
934         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
935         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CleanMission");
936         auto err = sceneSessionManager->ClearSession(missionId);
937         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
938             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, CleanMission err");
939             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
940         }
941         return static_cast<int>(err);
942     }
943     auto abms = GetAbilityManager();
944     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
945     return abms->CleanMission(missionId);
946 }
947 
CleanAllMissions()948 ErrCode AbilityManagerClient::CleanAllMissions()
949 {
950     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
951     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
952         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
953         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
954         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CleanAllMissions");
955         auto err = sceneSessionManager->ClearAllSessions();
956         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
957             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, CleanAllMissions err");
958             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
959         }
960         return static_cast<int>(err);
961     }
962     auto abms = GetAbilityManager();
963     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
964     return abms->CleanAllMissions();
965 }
966 
MoveMissionToFront(int32_t missionId)967 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId)
968 {
969     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
970     auto abms = GetAbilityManager();
971     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
972     return abms->MoveMissionToFront(missionId);
973 }
974 
MoveMissionToFront(int32_t missionId,const StartOptions & startOptions)975 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId, const StartOptions &startOptions)
976 {
977     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
978     auto abms = GetAbilityManager();
979     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
980     return abms->MoveMissionToFront(missionId, startOptions);
981 }
982 
MoveMissionsToForeground(const std::vector<int32_t> & missionIds,int32_t topMissionId)983 ErrCode AbilityManagerClient::MoveMissionsToForeground(const std::vector<int32_t>& missionIds, int32_t topMissionId)
984 {
985     TAG_LOGI(AAFwkTag::ABILITYMGR, "MoveMissionsToForeground begin, topMissionId:%{public}d", topMissionId);
986     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
987         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
988         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
989         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToForeground");
990         auto err = sceneSessionManager->MoveSessionsToForeground(missionIds, topMissionId);
991         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
992             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToForeground err");
993             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
994         }
995         auto abms = GetAbilityManager();
996         CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
997         if (missionIds.empty()) {
998             return ERR_INVALID_VALUE;
999         }
1000         int32_t missionId = topMissionId;
1001         if (topMissionId > 0) {
1002             missionId = topMissionId;
1003         } else {
1004             missionId = missionIds[0];
1005         }
1006         auto errAMS = abms->MoveMissionToFront(missionId);
1007         return static_cast<int>(errAMS);
1008     }
1009     auto abms = GetAbilityManager();
1010     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1011     return abms->MoveMissionsToForeground(missionIds, topMissionId);
1012 }
1013 
MoveMissionsToBackground(const std::vector<int32_t> & missionIds,std::vector<int32_t> & result)1014 ErrCode AbilityManagerClient::MoveMissionsToBackground(const std::vector<int32_t>& missionIds,
1015     std::vector<int32_t>& result)
1016 {
1017     TAG_LOGI(AAFwkTag::ABILITYMGR, "MoveMissionsToBackground begin.");
1018     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1019         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1020         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1021         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToBackground");
1022         auto err = sceneSessionManager->MoveSessionsToBackground(missionIds, result);
1023         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1024             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, MoveMissionsToBackground err");
1025             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1026         }
1027         return static_cast<int>(err);
1028     }
1029     auto abms = GetAbilityManager();
1030     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1031     return abms->MoveMissionsToBackground(missionIds, result);
1032 }
1033 
GetMissionIdByToken(sptr<IRemoteObject> token,int32_t & missionId)1034 ErrCode AbilityManagerClient::GetMissionIdByToken(sptr<IRemoteObject> token, int32_t &missionId)
1035 {
1036     auto abms = GetAbilityManager();
1037     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1038     missionId = abms->GetMissionIdByToken(token);
1039     if (missionId <= 0) {
1040         TAG_LOGE(AAFwkTag::ABILITYMGR, "get missionid by token failed!");
1041         return MISSION_NOT_FOUND;
1042     }
1043     return ERR_OK;
1044 }
1045 
StartAbilityByCall(const Want & want,sptr<IAbilityConnection> connect)1046 ErrCode AbilityManagerClient::StartAbilityByCall(const Want &want, sptr<IAbilityConnection> connect)
1047 {
1048     auto abms = GetAbilityManager();
1049     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1050     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1051     return abms->StartAbilityByCall(want, connect, nullptr, DEFAULT_INVAL_VALUE);
1052 }
1053 
StartAbilityByCall(const Want & want,sptr<IAbilityConnection> connect,sptr<IRemoteObject> callToken,int32_t accountId)1054 ErrCode AbilityManagerClient::StartAbilityByCall(const Want &want, sptr<IAbilityConnection> connect,
1055     sptr<IRemoteObject> callToken, int32_t accountId)
1056 {
1057     auto abms = GetAbilityManager();
1058     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1059     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1060     return abms->StartAbilityByCall(want, connect, callToken, accountId);
1061 }
1062 
CallRequestDone(sptr<IRemoteObject> token,sptr<IRemoteObject> callStub)1063 void AbilityManagerClient::CallRequestDone(sptr<IRemoteObject> token, sptr<IRemoteObject> callStub)
1064 {
1065     auto abms = GetAbilityManager();
1066     CHECK_POINTER_RETURN(abms);
1067     abms->CallRequestDone(token, callStub);
1068 }
1069 
GetAbilityTokenByCalleeObj(sptr<IRemoteObject> callStub,sptr<IRemoteObject> & token)1070 void AbilityManagerClient::GetAbilityTokenByCalleeObj(sptr<IRemoteObject> callStub, sptr<IRemoteObject> &token)
1071 {
1072     auto abms = GetAbilityManager();
1073     CHECK_POINTER_RETURN(abms);
1074     abms->GetAbilityTokenByCalleeObj(callStub, token);
1075 }
1076 
ReleaseCall(sptr<IAbilityConnection> connect,const AppExecFwk::ElementName & element)1077 ErrCode AbilityManagerClient::ReleaseCall(
1078     sptr<IAbilityConnection> connect, const AppExecFwk::ElementName &element)
1079 {
1080     auto abms = GetAbilityManager();
1081     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1082     return abms->ReleaseCall(connect, element);
1083 }
1084 
GetAbilityRunningInfos(std::vector<AbilityRunningInfo> & info)1085 ErrCode AbilityManagerClient::GetAbilityRunningInfos(std::vector<AbilityRunningInfo> &info)
1086 {
1087     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1088     auto abms = GetAbilityManager();
1089     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1090     return abms->GetAbilityRunningInfos(info);
1091 }
1092 
GetExtensionRunningInfos(int upperLimit,std::vector<ExtensionRunningInfo> & info)1093 ErrCode AbilityManagerClient::GetExtensionRunningInfos(int upperLimit, std::vector<ExtensionRunningInfo> &info)
1094 {
1095     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1096     auto abms = GetAbilityManager();
1097     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1098     return abms->GetExtensionRunningInfos(upperLimit, info);
1099 }
1100 
GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> & info)1101 ErrCode AbilityManagerClient::GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> &info)
1102 {
1103     auto abms = GetAbilityManager();
1104     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1105     return abms->GetProcessRunningInfos(info);
1106 }
1107 
RequestDialogService(const Want & want,sptr<IRemoteObject> callerToken)1108 ErrCode AbilityManagerClient::RequestDialogService(
1109     const Want &want, sptr<IRemoteObject> callerToken)
1110 {
1111     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1112     auto abms = GetAbilityManager();
1113     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1114     TAG_LOGI(AAFwkTag::ABILITYMGR, "request is:%{public}s.", want.GetElement().GetURI().c_str());
1115     HandleDlpApp(const_cast<Want &>(want));
1116     return abms->RequestDialogService(want, callerToken);
1117 }
1118 
ReportDrawnCompleted(sptr<IRemoteObject> callerToken)1119 ErrCode AbilityManagerClient::ReportDrawnCompleted(sptr<IRemoteObject> callerToken)
1120 {
1121     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1122     auto abilityMgr = GetAbilityManager();
1123     CHECK_POINTER_RETURN_NOT_CONNECTED(abilityMgr);
1124     return abilityMgr->ReportDrawnCompleted(callerToken);
1125 }
1126 
1127 /**
1128  * Start synchronizing remote device mission
1129  * @param devId, deviceId.
1130  * @param fixConflict, resolve synchronizing conflicts flag.
1131  * @param tag, call tag.
1132  * @return Returns ERR_OK on success, others on failure.
1133  */
StartSyncRemoteMissions(const std::string & devId,bool fixConflict,int64_t tag)1134 ErrCode AbilityManagerClient::StartSyncRemoteMissions(const std::string &devId, bool fixConflict, int64_t tag)
1135 {
1136     auto abms = GetAbilityManager();
1137     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1138     return abms->StartSyncRemoteMissions(devId, fixConflict, tag);
1139 }
1140 
StopSyncRemoteMissions(const std::string & devId)1141 ErrCode AbilityManagerClient::StopSyncRemoteMissions(const std::string &devId)
1142 {
1143     auto abms = GetAbilityManager();
1144     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1145     return abms->StopSyncRemoteMissions(devId);
1146 }
1147 
StartUser(int accountId,sptr<IUserCallback> callback)1148 ErrCode AbilityManagerClient::StartUser(int accountId, sptr<IUserCallback> callback)
1149 {
1150     TAG_LOGI(AAFwkTag::ABILITYMGR, "StartUser in client:%{public}d.", accountId);
1151     auto abms = GetAbilityManager();
1152     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1153     return abms->StartUser(accountId, callback);
1154 }
1155 
StopUser(int accountId,sptr<IUserCallback> callback)1156 ErrCode AbilityManagerClient::StopUser(int accountId, sptr<IUserCallback> callback)
1157 {
1158     TAG_LOGI(AAFwkTag::ABILITYMGR, "StopUser in client:%{public}d.", accountId);
1159     auto abms = GetAbilityManager();
1160     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1161     return abms->StopUser(accountId, callback);
1162 }
1163 
LogoutUser(int32_t accountId)1164 ErrCode AbilityManagerClient::LogoutUser(int32_t accountId)
1165 {
1166     auto abms = GetAbilityManager();
1167     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1168     return abms->LogoutUser(accountId);
1169 }
1170 
RegisterSnapshotHandler(sptr<ISnapshotHandler> handler)1171 ErrCode AbilityManagerClient::RegisterSnapshotHandler(sptr<ISnapshotHandler> handler)
1172 {
1173     auto abms = GetAbilityManager();
1174     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1175     return abms->RegisterSnapshotHandler(handler);
1176 }
1177 
GetMissionSnapshot(const std::string & deviceId,int32_t missionId,MissionSnapshot & snapshot,bool isLowResolution)1178 ErrCode AbilityManagerClient::GetMissionSnapshot(const std::string& deviceId, int32_t missionId,
1179     MissionSnapshot& snapshot, bool isLowResolution)
1180 {
1181     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1182     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1183         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1184         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1185         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetMissionSnapshot");
1186         auto err = sceneSessionManager->GetSessionSnapshot(deviceId, missionId, snapshot, isLowResolution);
1187         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1188             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetMissionSnapshot err");
1189             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1190         }
1191         return static_cast<int>(err);
1192     }
1193     auto abms = GetAbilityManager();
1194     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1195     return abms->GetMissionSnapshot(deviceId, missionId, snapshot, isLowResolution);
1196 }
1197 
StartUserTest(const Want & want,sptr<IRemoteObject> observer)1198 ErrCode AbilityManagerClient::StartUserTest(const Want &want, sptr<IRemoteObject> observer)
1199 {
1200     auto abms = GetAbilityManager();
1201     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1202     return abms->StartUserTest(want, observer);
1203 }
1204 
FinishUserTest(const std::string & msg,const int64_t & resultCode,const std::string & bundleName)1205 ErrCode AbilityManagerClient::FinishUserTest(
1206     const std::string &msg, const int64_t &resultCode, const std::string &bundleName)
1207 {
1208     auto abms = GetAbilityManager();
1209     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1210     return abms->FinishUserTest(msg, resultCode, bundleName);
1211 }
1212 
GetTopAbility(sptr<IRemoteObject> & token)1213 ErrCode AbilityManagerClient::GetTopAbility(sptr<IRemoteObject> &token)
1214 {
1215     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1216     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1217         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1218         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1219         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetTopAbility");
1220         auto ret = static_cast<int>(sceneSessionManager->GetFocusSessionToken(token));
1221         if (ret != ERR_OK) {
1222             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, GetTopAbility err: %{public}d", ret);
1223         }
1224         return ret;
1225     }
1226     auto abms = GetAbilityManager();
1227     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1228     return abms->GetTopAbility(token);
1229 }
1230 
GetElementNameByToken(sptr<IRemoteObject> token,bool isNeedLocalDeviceId)1231 AppExecFwk::ElementName AbilityManagerClient::GetElementNameByToken(sptr<IRemoteObject> token,
1232     bool isNeedLocalDeviceId)
1233 {
1234     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1235     auto abms = GetAbilityManager();
1236     if (abms == nullptr) {
1237         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms == nullptr");
1238         return {};
1239     }
1240     return abms->GetElementNameByToken(token, isNeedLocalDeviceId);
1241 }
1242 
CheckUIExtensionIsFocused(uint32_t uiExtensionTokenId,bool & isFocused)1243 ErrCode AbilityManagerClient::CheckUIExtensionIsFocused(uint32_t uiExtensionTokenId, bool& isFocused)
1244 {
1245     auto abms = GetAbilityManager();
1246     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1247     return abms->CheckUIExtensionIsFocused(uiExtensionTokenId, isFocused);
1248 }
1249 
DelegatorDoAbilityForeground(sptr<IRemoteObject> token)1250 ErrCode AbilityManagerClient::DelegatorDoAbilityForeground(sptr<IRemoteObject> token)
1251 {
1252     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1253         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1254         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1255         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, DelegatorDoAbilityForeground");
1256         sceneSessionManager->PendingSessionToForeground(token);
1257     }
1258     auto abms = GetAbilityManager();
1259     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1260     return abms->DelegatorDoAbilityForeground(token);
1261 }
1262 
DelegatorDoAbilityBackground(sptr<IRemoteObject> token)1263 ErrCode AbilityManagerClient::DelegatorDoAbilityBackground(sptr<IRemoteObject> token)
1264 {
1265     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1266         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1267         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1268         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, DelegatorDoAbilityBackground");
1269         sceneSessionManager->PendingSessionToBackgroundForDelegator(token);
1270     }
1271     auto abms = GetAbilityManager();
1272     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1273     return abms->DelegatorDoAbilityBackground(token);
1274 }
1275 
SetMissionContinueState(sptr<IRemoteObject> token,const AAFwk::ContinueState & state,sptr<IRemoteObject> sessionToken)1276 ErrCode AbilityManagerClient::SetMissionContinueState(sptr<IRemoteObject> token,
1277     const AAFwk::ContinueState &state, sptr<IRemoteObject> sessionToken)
1278 {
1279     TAG_LOGI(AAFwkTag::ABILITYMGR,
1280         "SetMissionContinueState called. state: %{public}d", state);
1281     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1282         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1283         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1284         uint32_t value = static_cast<uint32_t>(state);
1285         Rosen::ContinueState continueState = static_cast<Rosen::ContinueState>(value);
1286         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, SetMissionContinueState");
1287         auto ret = static_cast<int>(sceneSessionManager->SetSessionContinueState(sessionToken, continueState));
1288         if (ret != ERR_OK) {
1289             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, SetMissionContinueState err");
1290         }
1291         return ret;
1292     }
1293     auto abms = GetAbilityManager();
1294     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1295     return abms->SetMissionContinueState(token, state);
1296 }
1297 
1298 #ifdef SUPPORT_GRAPHICS
SetMissionLabel(sptr<IRemoteObject> token,const std::string & label)1299 ErrCode AbilityManagerClient::SetMissionLabel(sptr<IRemoteObject> token, const std::string& label)
1300 {
1301     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1302         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1303         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1304         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, SetMissionLabel");
1305         auto err = sceneSessionManager->SetSessionLabel(token, label);
1306         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1307             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, SetMissionLabel err");
1308             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1309         }
1310         return static_cast<int>(err);
1311     }
1312     auto abms = GetAbilityManager();
1313     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1314     return abms->SetMissionLabel(token, label);
1315 }
1316 
SetMissionIcon(sptr<IRemoteObject> abilityToken,std::shared_ptr<OHOS::Media::PixelMap> icon)1317 ErrCode AbilityManagerClient::SetMissionIcon(
1318     sptr<IRemoteObject> abilityToken, std::shared_ptr<OHOS::Media::PixelMap> icon)
1319 {
1320     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1321         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1322         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1323         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, SetMissionIcon");
1324         auto err = sceneSessionManager->SetSessionIcon(abilityToken, icon);
1325         if (SCB_TO_MISSION_ERROR_CODE_MAP.count(err)) {
1326             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, SetMissionIcon err");
1327             return SCB_TO_MISSION_ERROR_CODE_MAP[err];
1328         }
1329         return static_cast<int>(err);
1330     }
1331     auto abms = GetAbilityManager();
1332     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1333     return abms->SetMissionIcon(abilityToken, icon);
1334 }
1335 
RegisterWindowManagerServiceHandler(sptr<IWindowManagerServiceHandler> handler,bool animationEnabled)1336 ErrCode AbilityManagerClient::RegisterWindowManagerServiceHandler(sptr<IWindowManagerServiceHandler> handler,
1337     bool animationEnabled)
1338 {
1339     auto abms = GetAbilityManager();
1340     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1341     return abms->RegisterWindowManagerServiceHandler(handler, animationEnabled);
1342 }
1343 
CompleteFirstFrameDrawing(sptr<IRemoteObject> abilityToken)1344 void AbilityManagerClient::CompleteFirstFrameDrawing(sptr<IRemoteObject> abilityToken)
1345 {
1346     auto abms = GetAbilityManager();
1347     CHECK_POINTER_RETURN(abms);
1348     abms->CompleteFirstFrameDrawing(abilityToken);
1349 }
1350 
CompleteFirstFrameDrawing(int32_t sessionId)1351 void AbilityManagerClient::CompleteFirstFrameDrawing(int32_t sessionId)
1352 {
1353     auto abms = GetAbilityManager();
1354     CHECK_POINTER_RETURN(abms);
1355     abms->CompleteFirstFrameDrawing(sessionId);
1356 }
1357 
PrepareTerminateAbility(sptr<IRemoteObject> token,sptr<IPrepareTerminateCallback> callback)1358 ErrCode AbilityManagerClient::PrepareTerminateAbility(sptr<IRemoteObject> token,
1359     sptr<IPrepareTerminateCallback> callback)
1360 {
1361     if (callback == nullptr) {
1362         TAG_LOGE(AAFwkTag::ABILITYMGR, "callback is nullptr.");
1363         return ERR_INVALID_VALUE;
1364     }
1365     auto abms = GetAbilityManager();
1366     if (abms == nullptr) {
1367         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1368         return ERR_INVALID_VALUE;
1369     }
1370     return abms->PrepareTerminateAbility(token, callback);
1371 }
1372 
GetDialogSessionInfo(const std::string & dialogSessionId,sptr<DialogSessionInfo> & info)1373 ErrCode AbilityManagerClient::GetDialogSessionInfo(const std::string &dialogSessionId, sptr<DialogSessionInfo> &info)
1374 {
1375     auto abms = GetAbilityManager();
1376     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1377     return abms->GetDialogSessionInfo(dialogSessionId, info);
1378 }
1379 
SendDialogResult(const Want & want,const std::string & dialogSessionId,const bool isAllow)1380 ErrCode AbilityManagerClient::SendDialogResult(const Want &want, const std::string &dialogSessionId, const bool isAllow)
1381 {
1382     auto abms = GetAbilityManager();
1383     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1384     return abms->SendDialogResult(want, dialogSessionId, isAllow);
1385 }
1386 #endif
1387 
DoAbilityForeground(sptr<IRemoteObject> token,uint32_t flag)1388 ErrCode AbilityManagerClient::DoAbilityForeground(sptr<IRemoteObject> token, uint32_t flag)
1389 {
1390     auto abms = GetAbilityManager();
1391     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1392     return abms->DoAbilityForeground(token, flag);
1393 }
1394 
DoAbilityBackground(sptr<IRemoteObject> token,uint32_t flag)1395 ErrCode AbilityManagerClient::DoAbilityBackground(sptr<IRemoteObject> token, uint32_t flag)
1396 {
1397     auto abms = GetAbilityManager();
1398     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1399     return abms->DoAbilityBackground(token, flag);
1400 }
1401 
SetAbilityController(sptr<AppExecFwk::IAbilityController> abilityController,bool imAStabilityTest)1402 ErrCode AbilityManagerClient::SetAbilityController(sptr<AppExecFwk::IAbilityController> abilityController,
1403     bool imAStabilityTest)
1404 {
1405     auto abms = GetAbilityManager();
1406     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1407     return abms->SetAbilityController(abilityController, imAStabilityTest);
1408 }
1409 
UpdateMissionSnapShot(sptr<IRemoteObject> token,std::shared_ptr<Media::PixelMap> pixelMap)1410 void AbilityManagerClient::UpdateMissionSnapShot(sptr<IRemoteObject> token,
1411     std::shared_ptr<Media::PixelMap> pixelMap)
1412 {
1413     auto abms = GetAbilityManager();
1414     CHECK_POINTER_RETURN(abms);
1415     return abms->UpdateMissionSnapShot(token, pixelMap);
1416 }
1417 
EnableRecoverAbility(sptr<IRemoteObject> token)1418 void AbilityManagerClient::EnableRecoverAbility(sptr<IRemoteObject> token)
1419 {
1420     auto abms = GetAbilityManager();
1421     CHECK_POINTER_RETURN(abms);
1422     return abms->EnableRecoverAbility(token);
1423 }
1424 
ScheduleRecoverAbility(sptr<IRemoteObject> token,int32_t reason,const Want * want)1425 void AbilityManagerClient::ScheduleRecoverAbility(sptr<IRemoteObject> token, int32_t reason, const Want *want)
1426 {
1427     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1428     auto abms = GetAbilityManager();
1429     CHECK_POINTER_RETURN(abms);
1430     return abms->ScheduleRecoverAbility(token, reason, want);
1431 }
1432 
GetAbilityManager()1433 sptr<IAbilityManager> AbilityManagerClient::GetAbilityManager()
1434 {
1435     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1436     std::lock_guard<std::recursive_mutex> lock(mutex_);
1437     if (!proxy_) {
1438         (void)Connect();
1439     }
1440 
1441     return proxy_;
1442 }
1443 
ResetProxy(wptr<IRemoteObject> remote)1444 void AbilityManagerClient::ResetProxy(wptr<IRemoteObject> remote)
1445 {
1446     std::lock_guard<std::recursive_mutex> lock(mutex_);
1447     if (!proxy_) {
1448         return;
1449     }
1450 
1451     auto serviceRemote = proxy_->AsObject();
1452     if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) {
1453         TAG_LOGD(AAFwkTag::ABILITYMGR, "To remove death recipient.");
1454         serviceRemote->RemoveDeathRecipient(deathRecipient_);
1455         proxy_ = nullptr;
1456     }
1457 }
1458 
OnRemoteDied(const wptr<IRemoteObject> & remote)1459 void AbilityManagerClient::AbilityMgrDeathRecipient::OnRemoteDied(const wptr<IRemoteObject>& remote)
1460 {
1461     TAG_LOGD(AAFwkTag::ABILITYMGR, "AbilityMgrDeathRecipient handle remote died.");
1462     AbilityManagerClient::GetInstance()->ResetProxy(remote);
1463 }
1464 
FreeInstallAbilityFromRemote(const Want & want,sptr<IRemoteObject> callback,int32_t userId,int requestCode)1465 ErrCode AbilityManagerClient::FreeInstallAbilityFromRemote(const Want &want, sptr<IRemoteObject> callback,
1466     int32_t userId, int requestCode)
1467 {
1468     TAG_LOGI(AAFwkTag::ABILITYMGR, "enter");
1469     auto abms = GetAbilityManager();
1470     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1471     return abms->FreeInstallAbilityFromRemote(want, callback, userId, requestCode);
1472 }
1473 
GetTopAbility(bool isNeedLocalDeviceId)1474 AppExecFwk::ElementName AbilityManagerClient::GetTopAbility(bool isNeedLocalDeviceId)
1475 {
1476     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1477     {
1478         std::lock_guard<std::mutex> lock_l(topAbilityMutex_);
1479         if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1480             AppExecFwk::ElementName elementName = {};
1481             auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1482             if (sceneSessionManager == nullptr) {
1483                 TAG_LOGE(AAFwkTag::ABILITYMGR, "Failed to get sceneSessionManager.");
1484                 return elementName;
1485             }
1486             TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, GetTopAbility element");
1487             (void)sceneSessionManager->GetFocusSessionElement(elementName);
1488             return elementName;
1489         }
1490     }
1491     TAG_LOGD(AAFwkTag::ABILITYMGR, "enter.");
1492     auto abms = GetAbilityManager();
1493     if (abms == nullptr) {
1494         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms == nullptr");
1495         return {};
1496     }
1497 
1498     return abms->GetTopAbility(isNeedLocalDeviceId);
1499 }
1500 
DumpAbilityInfoDone(std::vector<std::string> & infos,sptr<IRemoteObject> callerToken)1501 ErrCode AbilityManagerClient::DumpAbilityInfoDone(std::vector<std::string> &infos,
1502     sptr<IRemoteObject> callerToken)
1503 {
1504     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1505     auto abms = GetAbilityManager();
1506     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1507     return abms->DumpAbilityInfoDone(infos, callerToken);
1508 }
1509 
HandleDlpApp(Want & want)1510 void AbilityManagerClient::HandleDlpApp(Want &want)
1511 {
1512 #ifdef WITH_DLP
1513     if (!want.GetParams().HasParam(DLP_PARAMS_SANDBOX)) {
1514         HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, "Security::DlpPermission::DlpFileKits::GetSandboxFlag");
1515         bool sandboxFlag = Security::DlpPermission::DlpFileKits::GetSandboxFlag(want);
1516         want.SetParam(DLP_PARAMS_SANDBOX, sandboxFlag);
1517     }
1518 #endif // WITH_DLP
1519 }
1520 
AddFreeInstallObserver(const sptr<IRemoteObject> callerToken,const sptr<AbilityRuntime::IFreeInstallObserver> observer)1521 ErrCode AbilityManagerClient::AddFreeInstallObserver(const sptr<IRemoteObject> callerToken,
1522     const sptr<AbilityRuntime::IFreeInstallObserver> observer)
1523 {
1524     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1525     auto abms = GetAbilityManager();
1526     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1527     return abms->AddFreeInstallObserver(callerToken, observer);
1528 }
1529 
SubmitSaveRecoveryInfo(sptr<IRemoteObject> token)1530 void AbilityManagerClient::SubmitSaveRecoveryInfo(sptr<IRemoteObject> token)
1531 {
1532     auto abms = GetAbilityManager();
1533     CHECK_POINTER_RETURN(abms);
1534     return abms->SubmitSaveRecoveryInfo(token);
1535 }
1536 
ScheduleClearRecoveryPageStack()1537 void AbilityManagerClient::ScheduleClearRecoveryPageStack()
1538 {
1539     auto abms = GetAbilityManager();
1540     CHECK_POINTER_RETURN(abms);
1541     return abms->ScheduleClearRecoveryPageStack();
1542 }
1543 
IsValidMissionIds(const std::vector<int32_t> & missionIds,std::vector<MissionValidResult> & results)1544 int32_t AbilityManagerClient::IsValidMissionIds(
1545     const std::vector<int32_t> &missionIds, std::vector<MissionValidResult> &results)
1546 {
1547     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1548     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1549         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1550         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1551         std::vector<bool> isValidList;
1552         auto err = sceneSessionManager->IsValidSessionIds(missionIds, isValidList);
1553         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, IsValidSessionIds: %{public}d, size: %{public}d",
1554             static_cast<int>(err), static_cast<int32_t>(isValidList.size()));
1555         for (auto i = 0; i < static_cast<int32_t>(isValidList.size()); ++i) {
1556             MissionValidResult missionResult = {};
1557             missionResult.missionId = missionIds.at(i);
1558             missionResult.isValid = isValidList.at(i);
1559             results.push_back(missionResult);
1560         }
1561         return static_cast<int>(err);
1562     }
1563     auto abms = GetAbilityManager();
1564     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1565     return abms->IsValidMissionIds(missionIds, results);
1566 }
1567 
VerifyPermission(const std::string & permission,int pid,int uid)1568 ErrCode AbilityManagerClient::VerifyPermission(const std::string &permission, int pid, int uid)
1569 {
1570     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1571     auto abms = GetAbilityManager();
1572     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1573     return abms->VerifyPermission(permission, pid, uid);
1574 }
1575 
AcquireShareData(int32_t missionId,sptr<IAcquireShareDataCallback> shareData)1576 ErrCode AbilityManagerClient::AcquireShareData(
1577     int32_t missionId, sptr<IAcquireShareDataCallback> shareData)
1578 {
1579     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1580     auto abms = GetAbilityManager();
1581     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1582     return abms->AcquireShareData(missionId, shareData);
1583 }
1584 
ShareDataDone(sptr<IRemoteObject> token,int32_t resultCode,int32_t uniqueId,WantParams & wantParam)1585 ErrCode AbilityManagerClient::ShareDataDone(
1586     sptr<IRemoteObject> token, int32_t resultCode, int32_t uniqueId, WantParams &wantParam)
1587 {
1588     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1589     auto abms = GetAbilityManager();
1590     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1591     return abms->ShareDataDone(token, resultCode, uniqueId, wantParam);
1592 }
1593 
ForceExitApp(const int32_t pid,const ExitReason & exitReason)1594 ErrCode AbilityManagerClient::ForceExitApp(const int32_t pid, const ExitReason &exitReason)
1595 {
1596     TAG_LOGI(AAFwkTag::ABILITYMGR, "begin.");
1597     auto abms = GetAbilityManager();
1598     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1599     return abms->ForceExitApp(pid, exitReason);
1600 }
1601 
RecordAppExitReason(const ExitReason & exitReason)1602 ErrCode AbilityManagerClient::RecordAppExitReason(const ExitReason &exitReason)
1603 {
1604     TAG_LOGD(AAFwkTag::ABILITYMGR, "RecordAppExitReason reason:%{public}d, exitMsg: %{public}s", exitReason.reason,
1605         exitReason.exitMsg.c_str());
1606     auto abms = GetAbilityManager();
1607     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1608     return abms->RecordAppExitReason(exitReason);
1609 }
1610 
RecordProcessExitReason(const int32_t pid,const ExitReason & exitReason)1611 ErrCode AbilityManagerClient::RecordProcessExitReason(const int32_t pid, const ExitReason &exitReason)
1612 {
1613     TAG_LOGD(AAFwkTag::ABILITYMGR, "RecordProcessExitReason pid:%{public}d, reason:%{public}d, exitMsg: %{public}s",
1614         pid, exitReason.reason, exitReason.exitMsg.c_str());
1615     auto abms = GetAbilityManager();
1616     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1617     return abms->RecordProcessExitReason(pid, exitReason);
1618 }
1619 
SetRootSceneSession(sptr<IRemoteObject> rootSceneSession)1620 void AbilityManagerClient::SetRootSceneSession(sptr<IRemoteObject> rootSceneSession)
1621 {
1622     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1623     auto abms = GetAbilityManager();
1624     CHECK_POINTER_RETURN(abms);
1625     abms->SetRootSceneSession(rootSceneSession);
1626 }
1627 
CallUIAbilityBySCB(sptr<SessionInfo> sessionInfo,bool & isColdStart)1628 void AbilityManagerClient::CallUIAbilityBySCB(sptr<SessionInfo> sessionInfo, bool &isColdStart)
1629 {
1630     auto abms = GetAbilityManager();
1631     CHECK_POINTER_RETURN(abms);
1632     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, CallUIAbilityBySCB target: %{public}s",
1633         sessionInfo->want.GetElement().GetURI().c_str());
1634     abms->CallUIAbilityBySCB(sessionInfo, isColdStart);
1635     TAG_LOGD(AAFwkTag::ABILITYMGR, "scb call, CallUIAbilityBySCB, isColdStart: %{public}d", isColdStart);
1636 }
1637 
StartSpecifiedAbilityBySCB(const Want & want)1638 void AbilityManagerClient::StartSpecifiedAbilityBySCB(const Want &want)
1639 {
1640     auto abms = GetAbilityManager();
1641     CHECK_POINTER_RETURN(abms);
1642     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, StartSpecifiedAbilityBySCB, target: %{public}s",
1643         want.GetElement().GetURI().c_str());
1644     abms->StartSpecifiedAbilityBySCB(want);
1645 }
1646 
NotifySaveAsResult(const Want & want,int resultCode,int requestCode)1647 ErrCode AbilityManagerClient::NotifySaveAsResult(const Want &want, int resultCode, int requestCode)
1648 {
1649     TAG_LOGD(AAFwkTag::ABILITYMGR, "call.");
1650     auto abms = GetAbilityManager();
1651     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1652     return abms->NotifySaveAsResult(want, resultCode, requestCode);
1653 }
1654 
SetSessionManagerService(sptr<IRemoteObject> sessionManagerService)1655 ErrCode AbilityManagerClient::SetSessionManagerService(sptr<IRemoteObject> sessionManagerService)
1656 {
1657     TAG_LOGI(AAFwkTag::ABILITYMGR, "AbilityManagerClient::SetSessionManagerService call");
1658     auto abms = GetAbilityManager();
1659     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1660     return abms->SetSessionManagerService(sessionManagerService);
1661 }
1662 
RegisterIAbilityManagerCollaborator(int32_t type,sptr<IAbilityManagerCollaborator> impl)1663 ErrCode AbilityManagerClient::RegisterIAbilityManagerCollaborator(
1664     int32_t type, sptr<IAbilityManagerCollaborator> impl)
1665 {
1666     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1667     auto abms = GetAbilityManager();
1668     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1669     return abms->RegisterIAbilityManagerCollaborator(type, impl);
1670 }
1671 
UnregisterIAbilityManagerCollaborator(int32_t type)1672 ErrCode AbilityManagerClient::UnregisterIAbilityManagerCollaborator(int32_t type)
1673 {
1674     TAG_LOGI(AAFwkTag::ABILITYMGR, "call");
1675     auto abms = GetAbilityManager();
1676     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1677     return abms->UnregisterIAbilityManagerCollaborator(type);
1678 }
1679 
RegisterStatusBarDelegate(sptr<AbilityRuntime::IStatusBarDelegate> delegate)1680 ErrCode AbilityManagerClient::RegisterStatusBarDelegate(sptr<AbilityRuntime::IStatusBarDelegate> delegate)
1681 {
1682     TAG_LOGI(AAFwkTag::ABILITYMGR, "called");
1683     auto abms = GetAbilityManager();
1684     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1685     return abms->RegisterStatusBarDelegate(delegate);
1686 }
1687 
KillProcessWithPrepareTerminate(const std::vector<int32_t> & pids)1688 ErrCode AbilityManagerClient::KillProcessWithPrepareTerminate(const std::vector<int32_t>& pids)
1689 {
1690     TAG_LOGI(AAFwkTag::ABILITYMGR, "called");
1691     auto abms = GetAbilityManager();
1692     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1693     return abms->KillProcessWithPrepareTerminate(pids);
1694 }
1695 
RegisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)1696 ErrCode AbilityManagerClient::RegisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)
1697 {
1698     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1699     auto abms = GetAbilityManager();
1700     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1701     return abms->RegisterAutoStartupSystemCallback(callback);
1702 }
1703 
UnregisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)1704 ErrCode AbilityManagerClient::UnregisterAutoStartupSystemCallback(sptr<IRemoteObject> callback)
1705 {
1706     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1707     auto abms = GetAbilityManager();
1708     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1709     return abms->UnregisterAutoStartupSystemCallback(callback);
1710 }
1711 
SetApplicationAutoStartup(const AutoStartupInfo & info)1712 ErrCode AbilityManagerClient::SetApplicationAutoStartup(const AutoStartupInfo &info)
1713 {
1714     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1715     auto abms = GetAbilityManager();
1716     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1717     return abms->SetApplicationAutoStartup(info);
1718 }
1719 
CancelApplicationAutoStartup(const AutoStartupInfo & info)1720 ErrCode AbilityManagerClient::CancelApplicationAutoStartup(const AutoStartupInfo &info)
1721 {
1722     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1723     auto abms = GetAbilityManager();
1724     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1725     return abms->CancelApplicationAutoStartup(info);
1726 }
1727 
QueryAllAutoStartupApplications(std::vector<AutoStartupInfo> & infoList)1728 ErrCode AbilityManagerClient::QueryAllAutoStartupApplications(std::vector<AutoStartupInfo> &infoList)
1729 {
1730     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1731     auto abms = GetAbilityManager();
1732     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1733     return abms->QueryAllAutoStartupApplications(infoList);
1734 }
1735 
PrepareTerminateAbilityBySCB(sptr<SessionInfo> sessionInfo,bool & isPrepareTerminate)1736 ErrCode AbilityManagerClient::PrepareTerminateAbilityBySCB(sptr<SessionInfo> sessionInfo,
1737     bool &isPrepareTerminate)
1738 {
1739     auto abms = GetAbilityManager();
1740     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1741     TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, PrepareTerminateAbilityBySCB");
1742     return abms->PrepareTerminateAbilityBySCB(sessionInfo, isPrepareTerminate);
1743 }
1744 
RegisterSessionHandler(sptr<IRemoteObject> object)1745 ErrCode AbilityManagerClient::RegisterSessionHandler(sptr<IRemoteObject> object)
1746 {
1747     TAG_LOGD(AAFwkTag::ABILITYMGR, "call");
1748     auto abms = GetAbilityManager();
1749     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1750     return abms->RegisterSessionHandler(object);
1751 }
1752 
RegisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)1753 ErrCode AbilityManagerClient::RegisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)
1754 {
1755     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1756     auto abms = GetAbilityManager();
1757     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1758     return abms->RegisterAppDebugListener(listener);
1759 }
1760 
UnregisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)1761 ErrCode AbilityManagerClient::UnregisterAppDebugListener(sptr<AppExecFwk::IAppDebugListener> listener)
1762 {
1763     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1764     auto abms = GetAbilityManager();
1765     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1766     return abms->UnregisterAppDebugListener(listener);
1767 }
1768 
AttachAppDebug(const std::string & bundleName)1769 ErrCode AbilityManagerClient::AttachAppDebug(const std::string &bundleName)
1770 {
1771     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1772     auto abms = GetAbilityManager();
1773     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1774     return abms->AttachAppDebug(bundleName);
1775 }
1776 
DetachAppDebug(const std::string & bundleName)1777 ErrCode AbilityManagerClient::DetachAppDebug(const std::string &bundleName)
1778 {
1779     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1780     auto abms = GetAbilityManager();
1781     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1782     return abms->DetachAppDebug(bundleName);
1783 }
1784 
ExecuteIntent(uint64_t key,sptr<IRemoteObject> callerToken,const InsightIntentExecuteParam & param)1785 ErrCode AbilityManagerClient::ExecuteIntent(uint64_t key, sptr<IRemoteObject> callerToken,
1786     const InsightIntentExecuteParam &param)
1787 {
1788     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1789     auto abms = GetAbilityManager();
1790     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1791     return abms->ExecuteIntent(key, callerToken, param);
1792 }
1793 
IsAbilityControllerStart(const Want & want)1794 bool AbilityManagerClient::IsAbilityControllerStart(const Want &want)
1795 {
1796     TAG_LOGD(AAFwkTag::ABILITYMGR, "call");
1797     auto abms = GetAbilityManager();
1798     if (abms == nullptr) {
1799         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1800         return true;
1801     }
1802     return abms->IsAbilityControllerStart(want);
1803 }
1804 
ExecuteInsightIntentDone(sptr<IRemoteObject> token,uint64_t intentId,const InsightIntentExecuteResult & result)1805 ErrCode AbilityManagerClient::ExecuteInsightIntentDone(sptr<IRemoteObject> token, uint64_t intentId,
1806     const InsightIntentExecuteResult &result)
1807 {
1808     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1809     auto abms = GetAbilityManager();
1810     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1811     return abms->ExecuteInsightIntentDone(token, intentId, result);
1812 }
1813 
GetForegroundUIAbilities(std::vector<AppExecFwk::AbilityStateData> & list)1814 int32_t AbilityManagerClient::GetForegroundUIAbilities(std::vector<AppExecFwk::AbilityStateData> &list)
1815 {
1816     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1817     auto abms = GetAbilityManager();
1818     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1819     return abms->GetForegroundUIAbilities(list);
1820 }
1821 
OpenFile(const Uri & uri,uint32_t flag)1822 int32_t AbilityManagerClient::OpenFile(const Uri& uri, uint32_t flag)
1823 {
1824     TAG_LOGD(AAFwkTag::ABILITYMGR, "call OpenFile");
1825     auto abms = GetAbilityManager();
1826     if (abms == nullptr) {
1827         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1828         return true;
1829     }
1830     return abms->OpenFile(uri, flag);
1831 }
1832 
RequestAssertFaultDialog(const sptr<IRemoteObject> & callback,const AAFwk::WantParams & wantParams)1833 int32_t AbilityManagerClient::RequestAssertFaultDialog(
1834     const sptr<IRemoteObject> &callback, const AAFwk::WantParams &wantParams)
1835 {
1836     TAG_LOGD(AAFwkTag::ABILITYMGR, "Request to display assert fault dialog.");
1837     auto abms = GetAbilityManager();
1838     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1839     return abms->RequestAssertFaultDialog(callback, wantParams);
1840 }
1841 
NotifyDebugAssertResult(uint64_t assertFaultSessionId,AAFwk::UserStatus userStatus)1842 int32_t AbilityManagerClient::NotifyDebugAssertResult(uint64_t assertFaultSessionId, AAFwk::UserStatus userStatus)
1843 {
1844     TAG_LOGD(AAFwkTag::ABILITYMGR, "Notify user action result to assert fault callback.");
1845     auto abms = GetAbilityManager();
1846     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1847     return abms->NotifyDebugAssertResult(assertFaultSessionId, userStatus);
1848 }
1849 
UpdateSessionInfoBySCB(std::list<SessionInfo> & sessionInfos,int32_t userId,std::vector<int32_t> & sessionIds)1850 int32_t AbilityManagerClient::UpdateSessionInfoBySCB(std::list<SessionInfo> &sessionInfos, int32_t userId,
1851     std::vector<int32_t> &sessionIds)
1852 {
1853     auto abms = GetAbilityManager();
1854     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1855     TAG_LOGD(AAFwkTag::ABILITYMGR, "scb call, UpdateSessionInfoBySCB");
1856     return abms->UpdateSessionInfoBySCB(sessionInfos, userId, sessionIds);
1857 }
1858 
GetUIExtensionSessionInfo(const sptr<IRemoteObject> token,UIExtensionSessionInfo & uiExtensionSessionInfo,int32_t userId)1859 ErrCode AbilityManagerClient::GetUIExtensionSessionInfo(const sptr<IRemoteObject> token,
1860     UIExtensionSessionInfo &uiExtensionSessionInfo, int32_t userId)
1861 {
1862     TAG_LOGD(AAFwkTag::ABILITYMGR, "Get ui extension session info.");
1863     auto abms = GetAbilityManager();
1864     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1865     return abms->GetUIExtensionSessionInfo(token, uiExtensionSessionInfo, userId);
1866 }
1867 
RestartApp(const AAFwk::Want & want)1868 int32_t AbilityManagerClient::RestartApp(const AAFwk::Want &want)
1869 {
1870     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1871     TAG_LOGI(AAFwkTag::ABILITYMGR, "called");
1872     auto abms = GetAbilityManager();
1873     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1874     return abms->RestartApp(want);
1875 }
1876 
GetUIExtensionRootHostInfo(const sptr<IRemoteObject> token,UIExtensionHostInfo & hostInfo,int32_t userId)1877 ErrCode AbilityManagerClient::GetUIExtensionRootHostInfo(const sptr<IRemoteObject> token,
1878     UIExtensionHostInfo &hostInfo, int32_t userId)
1879 {
1880     TAG_LOGD(AAFwkTag::ABILITYMGR, "Get ui extension host info.");
1881     auto abms = GetAbilityManager();
1882     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1883     return abms->GetUIExtensionRootHostInfo(token, hostInfo, userId);
1884 }
1885 
OpenAtomicService(Want & want,const StartOptions & options,sptr<IRemoteObject> callerToken,int32_t requestCode,int32_t userId)1886 int32_t AbilityManagerClient::OpenAtomicService(Want& want, const StartOptions &options,
1887     sptr<IRemoteObject> callerToken, int32_t requestCode, int32_t userId)
1888 {
1889     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1890     auto abms = GetAbilityManager();
1891     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1892     return abms->OpenAtomicService(want, options, callerToken, requestCode, userId);
1893 }
1894 
SetResidentProcessEnabled(const std::string & bundleName,bool enable)1895 int32_t AbilityManagerClient::SetResidentProcessEnabled(const std::string &bundleName, bool enable)
1896 {
1897     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1898     auto abms = GetAbilityManager();
1899     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1900     return abms->SetResidentProcessEnabled(bundleName, enable);
1901 }
1902 
IsEmbeddedOpenAllowed(sptr<IRemoteObject> callerToken,const std::string & appId)1903 bool AbilityManagerClient::IsEmbeddedOpenAllowed(sptr<IRemoteObject> callerToken, const std::string &appId)
1904 {
1905     TAG_LOGD(AAFwkTag::ABILITYMGR, "Get ui extension host info.");
1906     auto abms = GetAbilityManager();
1907     if (abms == nullptr) {
1908         TAG_LOGE(AAFwkTag::ABILITYMGR, "abms is nullptr.");
1909         return false;
1910     }
1911     return abms->IsEmbeddedOpenAllowed(callerToken, appId);
1912 }
1913 
StartShortcut(const Want & want,const StartOptions & startOptions)1914 int32_t AbilityManagerClient::StartShortcut(const Want &want, const StartOptions &startOptions)
1915 {
1916     TAG_LOGD(AAFwkTag::ABILITYMGR, "start short cut.");
1917     auto abms = GetAbilityManager();
1918     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1919     return abms->StartShortcut(want, startOptions);
1920 }
1921 
GetAbilityStateByPersistentId(int32_t persistentId,bool & state)1922 int32_t AbilityManagerClient::GetAbilityStateByPersistentId(int32_t persistentId, bool &state)
1923 {
1924     TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
1925     auto abms = GetAbilityManager();
1926     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1927     return abms->GetAbilityStateByPersistentId(persistentId, state);
1928 }
1929 
TransferAbilityResultForExtension(const sptr<IRemoteObject> & callerToken,int32_t resultCode,const Want & want)1930 int32_t AbilityManagerClient::TransferAbilityResultForExtension(const sptr<IRemoteObject> &callerToken,
1931     int32_t resultCode, const Want &want)
1932 {
1933     auto abms = GetAbilityManager();
1934     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1935     return abms->TransferAbilityResultForExtension(callerToken, resultCode, want);
1936 }
1937 
NotifyFrozenProcessByRSS(const std::vector<int32_t> & pidList,int32_t uid)1938 void AbilityManagerClient::NotifyFrozenProcessByRSS(const std::vector<int32_t> &pidList, int32_t uid)
1939 {
1940     auto abms = GetAbilityManager();
1941     CHECK_POINTER_RETURN(abms);
1942     return abms->NotifyFrozenProcessByRSS(pidList, uid);
1943 }
1944 
CleanUIAbilityBySCB(sptr<SessionInfo> sessionInfo)1945 ErrCode AbilityManagerClient::CleanUIAbilityBySCB(sptr<SessionInfo> sessionInfo)
1946 {
1947     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1948     if (sessionInfo == nullptr) {
1949         TAG_LOGE(AAFwkTag::ABILITYMGR, "sessionInfo is invalid.");
1950         return ERR_INVALID_VALUE;
1951     }
1952     auto abms = GetAbilityManager();
1953     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1954     TAG_LOGD(AAFwkTag::ABILITYMGR, "scb call, CleanUIAbilityBySCB");
1955     return abms->CleanUIAbilityBySCB(sessionInfo);
1956 }
1957 
PreStartMission(const std::string & bundleName,const std::string & moduleName,const std::string & abilityName,const std::string & startTime)1958 ErrCode AbilityManagerClient::PreStartMission(const std::string& bundleName, const std::string& moduleName,
1959     const std::string& abilityName, const std::string& startTime)
1960 {
1961     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1962     auto abms = GetAbilityManager();
1963     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1964     return abms->PreStartMission(bundleName, moduleName, abilityName, startTime);
1965 }
1966 
OpenLink(const Want & want,sptr<IRemoteObject> callerToken,int32_t userId,int requestCode)1967 ErrCode AbilityManagerClient::OpenLink(const Want& want, sptr<IRemoteObject> callerToken,
1968     int32_t userId, int requestCode)
1969 {
1970     auto abms = GetAbilityManager();
1971     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1972     return abms->OpenLink(want, callerToken, userId, requestCode);
1973 }
1974 
TerminateMission(int32_t missionId)1975 ErrCode AbilityManagerClient::TerminateMission(int32_t missionId)
1976 {
1977 #ifdef SUPPORT_SCREEN
1978     if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1979         auto sceneSessionManager = SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy();
1980         CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1981         TAG_LOGI(AAFwkTag::ABILITYMGR, "scb call, TerminateMission");
1982         auto err = sceneSessionManager->TerminateSessionByPersistentId(missionId);
1983         if (err != OHOS::Rosen::WMError::WM_OK) {
1984             TAG_LOGE(AAFwkTag::ABILITYMGR, "scb call, TerminateMission err: %{public}d.", static_cast<int32_t>(err));
1985         }
1986         if (err == Rosen::WMError::WM_ERROR_INVALID_PERMISSION) {
1987             return CHECK_PERMISSION_FAILED;
1988         }
1989         if (err == Rosen::WMError::WM_ERROR_NOT_SYSTEM_APP) {
1990             return ERR_NOT_SYSTEM_APP;
1991         }
1992         return static_cast<int32_t>(err);
1993     }
1994 #endif //SUPPORT_SCREEN
1995     auto abms = GetAbilityManager();
1996     CHECK_POINTER_RETURN_INVALID_VALUE(abms);
1997     int32_t ret = abms->TerminateMission(missionId);
1998     if (ret != ERR_OK) {
1999         TAG_LOGE(AAFwkTag::ABILITYMGR, "TerminateMission failed, err: %{public}d.", ret);
2000     }
2001     return ret;
2002 }
2003 
UpdateAssociateConfigList(const std::map<std::string,std::list<std::string>> & configs,const std::list<std::string> & exportConfigs,int32_t flag)2004 ErrCode AbilityManagerClient::UpdateAssociateConfigList(const std::map<std::string, std::list<std::string>>& configs,
2005     const std::list<std::string>& exportConfigs, int32_t flag)
2006 {
2007     TAG_LOGD(AAFwkTag::ABILITYMGR, "call.");
2008     auto abms = GetAbilityManager();
2009     CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
2010     return abms->UpdateAssociateConfigList(configs, exportConfigs, flag);
2011 }
2012 } // namespace AAFwk
2013 } // namespace OHOS
2014