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