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