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