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