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