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 ¶m)
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