1 /*
2 * Copyright (c) 2023 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 #include "string_ex.h"
19 #include "ability_manager_interface.h"
20 #ifdef WITH_DLP
21 #include "dlp_file_kits.h"
22 #endif // WITH_DLP
23 #include "hilog_wrapper.h"
24 #include "if_system_ability_manager.h"
25 #include "ipc_skeleton.h"
26 #include "iservice_registry.h"
27 #include "session_info.h"
28 #include "string_ex.h"
29 #include "system_ability_definition.h"
30 #include "hitrace_meter.h"
31 #include "scene_board_judgement.h"
32 #include "session_manager.h"
33
34 namespace OHOS {
35 namespace AAFwk {
36 using OHOS::Rosen::SessionManager;
37 std::shared_ptr<AbilityManagerClient> AbilityManagerClient::instance_ = nullptr;
38 std::recursive_mutex AbilityManagerClient::mutex_;
39 #ifdef WITH_DLP
40 const std::string DLP_PARAMS_SANDBOX = "ohos.dlp.params.sandbox";
41 #endif // WITH_DLP
42
43 #define CHECK_POINTER_RETURN(object) \
44 if (!object) { \
45 HILOG_ERROR("proxy is nullptr"); \
46 return; \
47 }
48
49 #define CHECK_POINTER_RETURN_NOT_CONNECTED(object) \
50 if (!object) { \
51 HILOG_ERROR("proxy is nullptr."); \
52 return ABILITY_SERVICE_NOT_CONNECTED; \
53 }
54
55 #define CHECK_POINTER_RETURN_INVALID_VALUE(object) \
56 if (!object) { \
57 HILOG_ERROR("proxy is nullptr."); \
58 return ERR_INVALID_VALUE; \
59 }
60
GetInstance()61 std::shared_ptr<AbilityManagerClient> AbilityManagerClient::GetInstance()
62 {
63 if (instance_ == nullptr) {
64 std::lock_guard<std::recursive_mutex> lock_l(mutex_);
65 if (instance_ == nullptr) {
66 instance_ = std::make_shared<AbilityManagerClient>();
67 }
68 }
69 return instance_;
70 }
71
AbilityManagerClient()72 AbilityManagerClient::AbilityManagerClient()
73 {}
74
~AbilityManagerClient()75 AbilityManagerClient::~AbilityManagerClient()
76 {}
77
AttachAbilityThread(const sptr<IAbilityScheduler> & scheduler,const sptr<IRemoteObject> & token)78 ErrCode AbilityManagerClient::AttachAbilityThread(
79 const sptr<IAbilityScheduler> &scheduler, const sptr<IRemoteObject> &token)
80 {
81 auto abms = GetAbilityManager();
82 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
83 return abms->AttachAbilityThread(scheduler, token);
84 }
85
AbilityTransitionDone(const sptr<IRemoteObject> & token,int state,const PacMap & saveData)86 ErrCode AbilityManagerClient::AbilityTransitionDone(const sptr<IRemoteObject> &token, int state, const PacMap &saveData)
87 {
88 auto abms = GetAbilityManager();
89 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
90 return abms->AbilityTransitionDone(token, state, saveData);
91 }
92
ScheduleConnectAbilityDone(const sptr<IRemoteObject> & token,const sptr<IRemoteObject> & remoteObject)93 ErrCode AbilityManagerClient::ScheduleConnectAbilityDone(
94 const sptr<IRemoteObject> &token, const sptr<IRemoteObject> &remoteObject)
95 {
96 auto abms = GetAbilityManager();
97 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
98 return abms->ScheduleConnectAbilityDone(token, remoteObject);
99 }
100
ScheduleDisconnectAbilityDone(const sptr<IRemoteObject> & token)101 ErrCode AbilityManagerClient::ScheduleDisconnectAbilityDone(const sptr<IRemoteObject> &token)
102 {
103 auto abms = GetAbilityManager();
104 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
105 return abms->ScheduleDisconnectAbilityDone(token);
106 }
107
ScheduleCommandAbilityDone(const sptr<IRemoteObject> & token)108 ErrCode AbilityManagerClient::ScheduleCommandAbilityDone(const sptr<IRemoteObject> &token)
109 {
110 auto abms = GetAbilityManager();
111 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
112 return abms->ScheduleCommandAbilityDone(token);
113 }
114
ScheduleCommandAbilityWindowDone(const sptr<IRemoteObject> & token,const sptr<SessionInfo> & sessionInfo,WindowCommand winCmd,AbilityCommand abilityCmd)115 ErrCode AbilityManagerClient::ScheduleCommandAbilityWindowDone(
116 const sptr<IRemoteObject> &token,
117 const sptr<SessionInfo> &sessionInfo,
118 WindowCommand winCmd,
119 AbilityCommand abilityCmd)
120 {
121 auto abms = GetAbilityManager();
122 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
123 return abms->ScheduleCommandAbilityWindowDone(token, sessionInfo, winCmd, abilityCmd);
124 }
125
StartAbility(const Want & want,int requestCode,int32_t userId)126 ErrCode AbilityManagerClient::StartAbility(const Want &want, int requestCode, int32_t userId)
127 {
128 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
129 auto abms = GetAbilityManager();
130 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
131 HandleDlpApp(const_cast<Want &>(want));
132 return abms->StartAbility(want, userId, requestCode);
133 }
134
StartAbility(const Want & want,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)135 ErrCode AbilityManagerClient::StartAbility(
136 const Want &want, const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
137 {
138 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
139 auto abms = GetAbilityManager();
140 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
141 HILOG_INFO("ability:%{public}s, userId:%{public}d",
142 want.GetElement().GetAbilityName().c_str(), userId);
143 HandleDlpApp(const_cast<Want &>(want));
144 return abms->StartAbility(want, callerToken, userId, requestCode);
145 }
146
StartAbility(const Want & want,const AbilityStartSetting & abilityStartSetting,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)147 ErrCode AbilityManagerClient::StartAbility(const Want &want, const AbilityStartSetting &abilityStartSetting,
148 const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
149 {
150 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
151 auto abms = GetAbilityManager();
152 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
153 HandleDlpApp(const_cast<Want &>(want));
154 return abms->StartAbility(want, abilityStartSetting, callerToken, userId, requestCode);
155 }
156
StartAbility(const Want & want,const StartOptions & startOptions,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)157 ErrCode AbilityManagerClient::StartAbility(const Want &want, const StartOptions &startOptions,
158 const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
159 {
160 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
161 auto abms = GetAbilityManager();
162 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
163 HILOG_INFO("abilityName:%{public}s, userId:%{public}d.", want.GetElement().GetAbilityName().c_str(), userId);
164 HandleDlpApp(const_cast<Want &>(want));
165 return abms->StartAbility(want, startOptions, callerToken, userId, requestCode);
166 }
167
StartAbilityAsCaller(const Want & want,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)168 ErrCode AbilityManagerClient::StartAbilityAsCaller(
169 const Want &want, const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
170 {
171 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
172 auto abms = GetAbilityManager();
173 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
174 HILOG_INFO("ability:%{public}s, userId:%{public}d.",
175 want.GetElement().GetAbilityName().c_str(), userId);
176 HandleDlpApp(const_cast<Want &>(want));
177 return abms->StartAbilityAsCaller(want, callerToken, userId, requestCode);
178 }
179
StartAbilityAsCaller(const Want & want,const StartOptions & startOptions,const sptr<IRemoteObject> & callerToken,int requestCode,int32_t userId)180 ErrCode AbilityManagerClient::StartAbilityAsCaller(const Want &want, const StartOptions &startOptions,
181 const sptr<IRemoteObject> &callerToken, int requestCode, int32_t userId)
182 {
183 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
184 auto abms = GetAbilityManager();
185 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
186 HILOG_INFO("abilityName:%{public}s, userId:%{public}d", want.GetElement().GetAbilityName().c_str(), userId);
187 HandleDlpApp(const_cast<Want &>(want));
188 return abms->StartAbilityAsCaller(want, startOptions, callerToken, userId, requestCode);
189 }
190
StartAbilityByUIContentSession(const Want & want,const StartOptions & startOptions,const sptr<IRemoteObject> & callerToken,const sptr<AAFwk::SessionInfo> & sessionInfo,int requestCode,int32_t userId)191 ErrCode AbilityManagerClient::StartAbilityByUIContentSession(const Want &want, const StartOptions &startOptions,
192 const sptr<IRemoteObject> &callerToken, const sptr<AAFwk::SessionInfo> &sessionInfo,
193 int requestCode, int32_t userId)
194 {
195 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
196 auto abms = GetAbilityManager();
197 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
198 HILOG_INFO("abilityName:%{public}s, userId:%{public}d.", want.GetElement().GetAbilityName().c_str(), userId);
199 HandleDlpApp(const_cast<Want &>(want));
200 return abms->StartAbilityByUIContentSession(want, startOptions, callerToken, sessionInfo, userId, requestCode);
201 }
202
StartAbilityByUIContentSession(const Want & want,const sptr<IRemoteObject> & callerToken,const sptr<AAFwk::SessionInfo> & sessionInfo,int requestCode,int32_t userId)203 ErrCode AbilityManagerClient::StartAbilityByUIContentSession(const Want &want, const sptr<IRemoteObject> &callerToken,
204 const sptr<AAFwk::SessionInfo> &sessionInfo, int requestCode, int32_t userId)
205 {
206 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
207 auto abms = GetAbilityManager();
208 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
209 HILOG_INFO("ability:%{public}s, userId:%{public}d",
210 want.GetElement().GetAbilityName().c_str(), userId);
211 HandleDlpApp(const_cast<Want &>(want));
212 return abms->StartAbilityByUIContentSession(want, callerToken, sessionInfo, userId, requestCode);
213 }
214
SendResultToAbility(int requestCode,int resultCode,Want & resultWant)215 ErrCode AbilityManagerClient::SendResultToAbility(int requestCode, int resultCode, Want& resultWant)
216 {
217 auto abms = GetAbilityManager();
218 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
219 HILOG_INFO("call");
220 return abms->SendResultToAbility(requestCode, resultCode, resultWant);
221 }
222
StartExtensionAbility(const Want & want,const sptr<IRemoteObject> & callerToken,int32_t userId,AppExecFwk::ExtensionAbilityType extensionType)223 ErrCode AbilityManagerClient::StartExtensionAbility(const Want &want, const sptr<IRemoteObject> &callerToken,
224 int32_t userId, AppExecFwk::ExtensionAbilityType extensionType)
225 {
226 auto abms = GetAbilityManager();
227 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
228 HILOG_INFO("name:%{public}s %{public}s, userId=%{public}d.",
229 want.GetElement().GetAbilityName().c_str(), want.GetElement().GetBundleName().c_str(), userId);
230 return abms->StartExtensionAbility(want, callerToken, userId, extensionType);
231 }
232
StartUIExtensionAbility(const sptr<SessionInfo> & extensionSessionInfo,int32_t userId)233 ErrCode AbilityManagerClient::StartUIExtensionAbility(const sptr<SessionInfo> &extensionSessionInfo, int32_t userId)
234 {
235 auto abms = GetAbilityManager();
236 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
237 CHECK_POINTER_RETURN_NOT_CONNECTED(extensionSessionInfo);
238 HILOG_INFO("name:%{public}s %{public}s, userId:%{public}d.",
239 extensionSessionInfo->want.GetElement().GetAbilityName().c_str(),
240 extensionSessionInfo->want.GetElement().GetBundleName().c_str(), userId);
241 return abms->StartUIExtensionAbility(extensionSessionInfo, userId);
242 }
243
StartUIAbilityBySCB(sptr<SessionInfo> sessionInfo)244 ErrCode AbilityManagerClient::StartUIAbilityBySCB(sptr<SessionInfo> sessionInfo)
245 {
246 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
247 if (sessionInfo == nullptr) {
248 HILOG_ERROR("sessionInfo is nullptr");
249 return ERR_INVALID_VALUE;
250 }
251 auto abms = GetAbilityManager();
252 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
253 HILOG_INFO("abilityName: %{public}s.", sessionInfo->want.GetElement().GetAbilityName().c_str());
254 return abms->StartUIAbilityBySCB(sessionInfo);
255 }
256
StopExtensionAbility(const Want & want,const sptr<IRemoteObject> & callerToken,int32_t userId,AppExecFwk::ExtensionAbilityType extensionType)257 ErrCode AbilityManagerClient::StopExtensionAbility(const Want &want, const sptr<IRemoteObject> &callerToken,
258 int32_t userId, AppExecFwk::ExtensionAbilityType extensionType)
259 {
260 auto abms = GetAbilityManager();
261 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
262 HILOG_INFO("name:%{public}s %{public}s, userId=%{public}d.",
263 want.GetElement().GetAbilityName().c_str(), want.GetElement().GetBundleName().c_str(), userId);
264 return abms->StopExtensionAbility(want, callerToken, userId, extensionType);
265 }
266
TerminateAbility(const sptr<IRemoteObject> & token,int resultCode,const Want * resultWant)267 ErrCode AbilityManagerClient::TerminateAbility(const sptr<IRemoteObject> &token, int resultCode, const Want *resultWant)
268 {
269 auto abms = GetAbilityManager();
270 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
271 HILOG_INFO("call");
272 return abms->TerminateAbility(token, resultCode, resultWant);
273 }
274
TerminateUIExtensionAbility(const sptr<SessionInfo> & extensionSessionInfo,int resultCode,const Want * resultWant)275 ErrCode AbilityManagerClient::TerminateUIExtensionAbility(const sptr<SessionInfo> &extensionSessionInfo,
276 int resultCode, const Want *resultWant)
277 {
278 auto abms = GetAbilityManager();
279 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
280 HILOG_INFO("call");
281 return abms->TerminateUIExtensionAbility(extensionSessionInfo, resultCode, resultWant);
282 }
283
MoveAbilityToBackground(const sptr<IRemoteObject> & token)284 ErrCode AbilityManagerClient::MoveAbilityToBackground(const sptr<IRemoteObject> &token)
285 {
286 HILOG_INFO("call");
287 auto abms = GetAbilityManager();
288 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
289 return abms->MoveAbilityToBackground(token);
290 }
291
292
CloseAbility(const sptr<IRemoteObject> & token,int resultCode,const Want * resultWant)293 ErrCode AbilityManagerClient::CloseAbility(const sptr<IRemoteObject> &token, int resultCode, const Want *resultWant)
294 {
295 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
296 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
297 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
298 HILOG_DEBUG("call");
299 sptr<AAFwk::SessionInfo> info = new AAFwk::SessionInfo();
300 info->want = *resultWant;
301 info->resultCode = resultCode;
302 info->sessionToken = token;
303 auto err = sceneSessionManager->TerminateSessionNew(info, false);
304 HILOG_INFO("CloseAbility Calling SceneBoard Interface ret=%{public}d", err);
305 return static_cast<int>(err);
306 }
307 auto abms = GetAbilityManager();
308 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
309 HILOG_INFO("call");
310 return abms->CloseAbility(token, resultCode, resultWant);
311 }
312
CloseUIAbilityBySCB(const sptr<SessionInfo> & sessionInfo)313 ErrCode AbilityManagerClient::CloseUIAbilityBySCB(const sptr<SessionInfo> &sessionInfo)
314 {
315 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
316 if (sessionInfo == nullptr) {
317 HILOG_ERROR("failed, sessionInfo is nullptr");
318 return ERR_INVALID_VALUE;
319 }
320 auto abms = GetAbilityManager();
321 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
322 HILOG_DEBUG("call");
323 return abms->CloseUIAbilityBySCB(sessionInfo);
324 }
325
MinimizeAbility(const sptr<IRemoteObject> & token,bool fromUser)326 ErrCode AbilityManagerClient::MinimizeAbility(const sptr<IRemoteObject> &token, bool fromUser)
327 {
328 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
329 auto abms = GetAbilityManager();
330 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
331 HILOG_INFO("fromUser:%{public}d.", fromUser);
332 return abms->MinimizeAbility(token, fromUser);
333 }
334
MinimizeUIExtensionAbility(const sptr<SessionInfo> & extensionSessionInfo,bool fromUser)335 ErrCode AbilityManagerClient::MinimizeUIExtensionAbility(const sptr<SessionInfo> &extensionSessionInfo, bool fromUser)
336 {
337 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
338 auto abms = GetAbilityManager();
339 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
340 HILOG_INFO("fromUser:%{public}d.", fromUser);
341 return abms->MinimizeUIExtensionAbility(extensionSessionInfo, fromUser);
342 }
343
MinimizeUIAbilityBySCB(const sptr<SessionInfo> & sessionInfo,bool fromUser)344 ErrCode AbilityManagerClient::MinimizeUIAbilityBySCB(const sptr<SessionInfo> &sessionInfo, bool fromUser)
345 {
346 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
347 if (sessionInfo == nullptr) {
348 HILOG_ERROR("failed, sessionInfo is nullptr");
349 return ERR_INVALID_VALUE;
350 }
351 auto abms = GetAbilityManager();
352 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
353 HILOG_DEBUG("call");
354 return abms->MinimizeUIAbilityBySCB(sessionInfo, fromUser);
355 }
356
ConnectAbility(const Want & want,const sptr<IAbilityConnection> & connect,int32_t userId)357 ErrCode AbilityManagerClient::ConnectAbility(const Want &want, const sptr<IAbilityConnection> &connect, int32_t userId)
358 {
359 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
360 auto abms = GetAbilityManager();
361 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
362 HILOG_INFO("name:%{public}s %{public}s, userId:%{public}d.",
363 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
364 return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::SERVICE, userId);
365 }
366
ConnectAbility(const Want & want,const sptr<IAbilityConnection> & connect,const sptr<IRemoteObject> & callerToken,int32_t userId)367 ErrCode AbilityManagerClient::ConnectAbility(
368 const Want &want, const sptr<IAbilityConnection> &connect, const sptr<IRemoteObject> &callerToken, int32_t userId)
369 {
370 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
371 auto abms = GetAbilityManager();
372 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
373 HILOG_INFO("name:%{public}s %{public}s, userId:%{public}d.",
374 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
375 return abms->ConnectAbilityCommon(want, connect, callerToken, AppExecFwk::ExtensionAbilityType::SERVICE, userId);
376 }
377
ConnectDataShareExtensionAbility(const Want & want,const sptr<IAbilityConnection> & connect,int32_t userId)378 ErrCode AbilityManagerClient::ConnectDataShareExtensionAbility(const Want &want,
379 const sptr<IAbilityConnection> &connect, int32_t userId)
380 {
381 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
382 auto abms = GetAbilityManager();
383 if (abms == nullptr) {
384 HILOG_ERROR("Connect failed, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
385 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
386 want.GetUriString().c_str());
387 return ABILITY_SERVICE_NOT_CONNECTED;
388 }
389
390 HILOG_INFO("name:%{public}s %{public}s, uri:%{public}s.",
391 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
392 want.GetUriString().c_str());
393 return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::DATASHARE, userId);
394 }
395
ConnectExtensionAbility(const Want & want,const sptr<IAbilityConnection> & connect,int32_t userId)396 ErrCode AbilityManagerClient::ConnectExtensionAbility(const Want &want, const sptr<IAbilityConnection> &connect,
397 int32_t userId)
398 {
399 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
400 auto abms = GetAbilityManager();
401 if (abms == nullptr) {
402 HILOG_ERROR("Connect failed, bundleName:%{public}s, abilityName:%{public}s",
403 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str());
404 return ABILITY_SERVICE_NOT_CONNECTED;
405 }
406
407 HILOG_INFO("name:%{public}s %{public}s, userId:%{public}d.",
408 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId);
409 return abms->ConnectAbilityCommon(want, connect, nullptr, AppExecFwk::ExtensionAbilityType::UNSPECIFIED, userId);
410 }
411
ConnectUIExtensionAbility(const Want & want,const sptr<IAbilityConnection> & connect,const sptr<SessionInfo> & sessionInfo,int32_t userId)412 ErrCode AbilityManagerClient::ConnectUIExtensionAbility(const Want &want, const sptr<IAbilityConnection> &connect,
413 const sptr<SessionInfo> &sessionInfo, int32_t userId)
414 {
415 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
416 auto abms = GetAbilityManager();
417 if (abms == nullptr) {
418 HILOG_ERROR("Connect failed, bundleName:%{public}s, abilityName:%{public}s, uri:%{public}s.",
419 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
420 want.GetUriString().c_str());
421 return ABILITY_SERVICE_NOT_CONNECTED;
422 }
423
424 HILOG_INFO("name:%{public}s %{public}s, uri:%{public}s.",
425 want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(),
426 want.GetUriString().c_str());
427 return abms->ConnectUIExtensionAbility(want, connect, sessionInfo, userId);
428 }
429
DisconnectAbility(const sptr<IAbilityConnection> & connect)430 ErrCode AbilityManagerClient::DisconnectAbility(const sptr<IAbilityConnection> &connect)
431 {
432 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
433 auto abms = GetAbilityManager();
434 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
435 HILOG_INFO("call");
436 return abms->DisconnectAbility(connect);
437 }
438
AcquireDataAbility(const Uri & uri,bool tryBind,const sptr<IRemoteObject> & callerToken)439 sptr<IAbilityScheduler> AbilityManagerClient::AcquireDataAbility(
440 const Uri &uri, bool tryBind, const sptr<IRemoteObject> &callerToken)
441 {
442 auto abms = GetAbilityManager();
443 if (!abms) {
444 return nullptr;
445 }
446 return abms->AcquireDataAbility(uri, tryBind, callerToken);
447 }
448
ReleaseDataAbility(sptr<IAbilityScheduler> dataAbilityScheduler,const sptr<IRemoteObject> & callerToken)449 ErrCode AbilityManagerClient::ReleaseDataAbility(
450 sptr<IAbilityScheduler> dataAbilityScheduler, const sptr<IRemoteObject> &callerToken)
451 {
452 auto abms = GetAbilityManager();
453 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
454 return abms->ReleaseDataAbility(dataAbilityScheduler, callerToken);
455 }
456
DumpState(const std::string & args,std::vector<std::string> & state)457 ErrCode AbilityManagerClient::DumpState(const std::string &args, std::vector<std::string> &state)
458 {
459 auto abms = GetAbilityManager();
460 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
461 abms->DumpState(args, state);
462 return ERR_OK;
463 }
464
DumpSysState(const std::string & args,std::vector<std::string> & state,bool isClient,bool isUserID,int UserID)465 ErrCode AbilityManagerClient::DumpSysState(
466 const std::string& args, std::vector<std::string>& state, bool isClient, bool isUserID, int UserID)
467 {
468 auto abms = GetAbilityManager();
469 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
470 abms->DumpSysState(args, state, isClient, isUserID, UserID);
471 return ERR_OK;
472 }
473
Connect()474 ErrCode AbilityManagerClient::Connect()
475 {
476 std::lock_guard<std::recursive_mutex> lock(mutex_);
477 if (proxy_ != nullptr) {
478 return ERR_OK;
479 }
480 sptr<ISystemAbilityManager> systemManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
481 if (systemManager == nullptr) {
482 HILOG_ERROR("Fail to get registry.");
483 return GET_ABILITY_SERVICE_FAILED;
484 }
485 sptr<IRemoteObject> remoteObj = systemManager->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
486 if (remoteObj == nullptr) {
487 HILOG_ERROR("Fail to connect ability manager service.");
488 return GET_ABILITY_SERVICE_FAILED;
489 }
490
491 deathRecipient_ = sptr<IRemoteObject::DeathRecipient>(new AbilityMgrDeathRecipient());
492 if (deathRecipient_ == nullptr) {
493 HILOG_ERROR("Failed to create AbilityMgrDeathRecipient!");
494 return GET_ABILITY_SERVICE_FAILED;
495 }
496 if ((remoteObj->IsProxyObject()) && (!remoteObj->AddDeathRecipient(deathRecipient_))) {
497 HILOG_ERROR("Add death recipient to AbilityManagerService failed.");
498 return GET_ABILITY_SERVICE_FAILED;
499 }
500
501 proxy_ = iface_cast<IAbilityManager>(remoteObj);
502 HILOG_DEBUG("Connect ability manager service success.");
503 return ERR_OK;
504 }
505
StopServiceAbility(const Want & want,const sptr<IRemoteObject> & token)506 ErrCode AbilityManagerClient::StopServiceAbility(const Want &want, const sptr<IRemoteObject> &token)
507 {
508 HILOG_INFO("call");
509 auto abms = GetAbilityManager();
510 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
511 return abms->StopServiceAbility(want, -1, token);
512 }
513
KillProcess(const std::string & bundleName)514 ErrCode AbilityManagerClient::KillProcess(const std::string &bundleName)
515 {
516 HILOG_INFO("enter");
517 auto abms = GetAbilityManager();
518 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
519 return abms->KillProcess(bundleName);
520 }
521
522 #ifdef ABILITY_COMMAND_FOR_TEST
ForceTimeoutForTest(const std::string & abilityName,const std::string & state)523 ErrCode AbilityManagerClient::ForceTimeoutForTest(const std::string &abilityName, const std::string &state)
524 {
525 HILOG_DEBUG("enter");
526 auto abms = GetAbilityManager();
527 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
528 return abms->ForceTimeoutForTest(abilityName, state);
529 }
530 #endif
531
ClearUpApplicationData(const std::string & bundleName)532 ErrCode AbilityManagerClient::ClearUpApplicationData(const std::string &bundleName)
533 {
534 HILOG_INFO("call");
535 auto abms = GetAbilityManager();
536 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
537 return abms->ClearUpApplicationData(bundleName);
538 }
539
ContinueMission(const std::string & srcDeviceId,const std::string & dstDeviceId,int32_t missionId,const sptr<IRemoteObject> & callback,AAFwk::WantParams & wantParams)540 ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, const std::string &dstDeviceId,
541 int32_t missionId, const sptr<IRemoteObject> &callback, AAFwk::WantParams &wantParams)
542 {
543 if (srcDeviceId.empty() || dstDeviceId.empty() || callback == nullptr) {
544 HILOG_ERROR("srcDeviceId or dstDeviceId or callback is null!");
545 return ERR_INVALID_VALUE;
546 }
547
548 auto abms = GetAbilityManager();
549 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
550 int result = abms->ContinueMission(srcDeviceId, dstDeviceId, missionId, callback, wantParams);
551 return result;
552 }
553
ContinueMission(const std::string & srcDeviceId,const std::string & dstDeviceId,const std::string & bundleName,const sptr<IRemoteObject> & callback,AAFwk::WantParams & wantParams)554 ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, const std::string &dstDeviceId,
555 const std::string &bundleName, const sptr<IRemoteObject> &callback, AAFwk::WantParams &wantParams)
556 {
557 if (srcDeviceId.empty() || dstDeviceId.empty() || callback == nullptr) {
558 HILOG_ERROR("srcDeviceId or dstDeviceId or callback is null!");
559 return ERR_INVALID_VALUE;
560 }
561
562 auto abms = GetAbilityManager();
563 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
564 int result = abms->ContinueMission(srcDeviceId, dstDeviceId, bundleName, callback, wantParams);
565 return result;
566 }
567
StartContinuation(const Want & want,const sptr<IRemoteObject> & abilityToken,int32_t status)568 ErrCode AbilityManagerClient::StartContinuation(const Want &want, const sptr<IRemoteObject> &abilityToken,
569 int32_t status)
570 {
571 auto abms = GetAbilityManager();
572 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
573 int result = abms->StartContinuation(want, abilityToken, status);
574 return result;
575 }
576
NotifyCompleteContinuation(const std::string & deviceId,int32_t sessionId,bool isSuccess)577 void AbilityManagerClient::NotifyCompleteContinuation(const std::string &deviceId,
578 int32_t sessionId, bool isSuccess)
579 {
580 auto abms = GetAbilityManager();
581 CHECK_POINTER_RETURN(abms);
582 abms->NotifyCompleteContinuation(deviceId, sessionId, isSuccess);
583 }
584
ContinueAbility(const std::string & deviceId,int32_t missionId,uint32_t versionCode)585 ErrCode AbilityManagerClient::ContinueAbility(const std::string &deviceId, int32_t missionId, uint32_t versionCode)
586 {
587 auto abms = GetAbilityManager();
588 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
589 return abms->ContinueAbility(deviceId, missionId, versionCode);
590 }
591
NotifyContinuationResult(int32_t missionId,int32_t result)592 ErrCode AbilityManagerClient::NotifyContinuationResult(int32_t missionId, int32_t result)
593 {
594 auto abms = GetAbilityManager();
595 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
596 return abms->NotifyContinuationResult(missionId, result);
597 }
598
LockMissionForCleanup(int32_t missionId)599 ErrCode AbilityManagerClient::LockMissionForCleanup(int32_t missionId)
600 {
601 auto abms = GetAbilityManager();
602 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
603 return abms->LockMissionForCleanup(missionId);
604 }
605
UnlockMissionForCleanup(int32_t missionId)606 ErrCode AbilityManagerClient::UnlockMissionForCleanup(int32_t missionId)
607 {
608 auto abms = GetAbilityManager();
609 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
610 return abms->UnlockMissionForCleanup(missionId);
611 }
612
RegisterMissionListener(const sptr<IMissionListener> & listener)613 ErrCode AbilityManagerClient::RegisterMissionListener(const sptr<IMissionListener> &listener)
614 {
615 auto abms = GetAbilityManager();
616 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
617 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
618 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
619 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
620 HILOG_INFO("call");
621 auto err = sceneSessionManager->RegisterSessionListener(listener);
622 return static_cast<int>(err);
623 }
624 return abms->RegisterMissionListener(listener);
625 }
626
UnRegisterMissionListener(const sptr<IMissionListener> & listener)627 ErrCode AbilityManagerClient::UnRegisterMissionListener(const sptr<IMissionListener> &listener)
628 {
629 auto abms = GetAbilityManager();
630 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
631 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
632 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
633 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
634 HILOG_INFO("call");
635 auto err = sceneSessionManager->UnRegisterSessionListener(listener);
636 return static_cast<int>(err);
637 }
638 return abms->UnRegisterMissionListener(listener);
639 }
640
RegisterMissionListener(const std::string & deviceId,const sptr<IRemoteMissionListener> & listener)641 ErrCode AbilityManagerClient::RegisterMissionListener(const std::string &deviceId,
642 const sptr<IRemoteMissionListener> &listener)
643 {
644 auto abms = GetAbilityManager();
645 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
646 return abms->RegisterMissionListener(deviceId, listener);
647 }
648
RegisterOnListener(const std::string & type,const sptr<IRemoteOnListener> & listener)649 ErrCode AbilityManagerClient::RegisterOnListener(const std::string &type,
650 const sptr<IRemoteOnListener> &listener)
651 {
652 auto abms = GetAbilityManager();
653 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
654 return abms->RegisterOnListener(type, listener);
655 }
656
RegisterOffListener(const std::string & type,const sptr<IRemoteOnListener> & listener)657 ErrCode AbilityManagerClient::RegisterOffListener(const std::string &type,
658 const sptr<IRemoteOnListener> &listener)
659 {
660 auto abms = GetAbilityManager();
661 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
662 return abms->RegisterOffListener(type, listener);
663 }
664
UnRegisterMissionListener(const std::string & deviceId,const sptr<IRemoteMissionListener> & listener)665 ErrCode AbilityManagerClient::UnRegisterMissionListener(const std::string &deviceId,
666 const sptr<IRemoteMissionListener> &listener)
667 {
668 auto abms = GetAbilityManager();
669 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
670 return abms->UnRegisterMissionListener(deviceId, listener);
671 }
672
GetMissionInfos(const std::string & deviceId,int32_t numMax,std::vector<MissionInfo> & missionInfos)673 ErrCode AbilityManagerClient::GetMissionInfos(const std::string& deviceId, int32_t numMax,
674 std::vector<MissionInfo> &missionInfos)
675 {
676 auto abms = GetAbilityManager();
677 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
678 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
679 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
680 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
681 HILOG_INFO("call");
682 auto err = sceneSessionManager->GetSessionInfos(deviceId, numMax, missionInfos);
683 return static_cast<int>(err);
684 }
685 return abms->GetMissionInfos(deviceId, numMax, missionInfos);
686 }
687
GetMissionInfo(const std::string & deviceId,int32_t missionId,MissionInfo & missionInfo)688 ErrCode AbilityManagerClient::GetMissionInfo(const std::string& deviceId, int32_t missionId,
689 MissionInfo &missionInfo)
690 {
691 auto abms = GetAbilityManager();
692 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
693 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
694 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
695 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
696 HILOG_INFO("call");
697 auto err = sceneSessionManager->GetSessionInfo(deviceId, missionId, missionInfo);
698 return static_cast<int>(err);
699 }
700 return abms->GetMissionInfo(deviceId, missionId, missionInfo);
701 }
702
CleanMission(int32_t missionId)703 ErrCode AbilityManagerClient::CleanMission(int32_t missionId)
704 {
705 auto abms = GetAbilityManager();
706 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
707 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
708 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
709 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
710 HILOG_INFO("call");
711 auto err = sceneSessionManager->ClearSession(missionId);
712 return static_cast<int>(err);
713 }
714 return abms->CleanMission(missionId);
715 }
716
CleanAllMissions()717 ErrCode AbilityManagerClient::CleanAllMissions()
718 {
719 auto abms = GetAbilityManager();
720 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
721 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
722 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
723 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
724 HILOG_INFO("call");
725 auto err = sceneSessionManager->ClearAllSessions();
726 return static_cast<int>(err);
727 }
728 return abms->CleanAllMissions();
729 }
730
MoveMissionToFront(int32_t missionId)731 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId)
732 {
733 auto abms = GetAbilityManager();
734 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
735 return abms->MoveMissionToFront(missionId);
736 }
737
MoveMissionToFront(int32_t missionId,const StartOptions & startOptions)738 ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId, const StartOptions &startOptions)
739 {
740 auto abms = GetAbilityManager();
741 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
742 return abms->MoveMissionToFront(missionId, startOptions);
743 }
744
MoveMissionsToForeground(const std::vector<int32_t> & missionIds,int32_t topMissionId)745 ErrCode AbilityManagerClient::MoveMissionsToForeground(const std::vector<int32_t>& missionIds, int32_t topMissionId)
746 {
747 HILOG_INFO("MoveMissionsToForeground begin.");
748 auto abms = GetAbilityManager();
749 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
750 return abms->MoveMissionsToForeground(missionIds, topMissionId);
751 }
752
MoveMissionsToBackground(const std::vector<int32_t> & missionIds,std::vector<int32_t> & result)753 ErrCode AbilityManagerClient::MoveMissionsToBackground(const std::vector<int32_t>& missionIds,
754 std::vector<int32_t>& result)
755 {
756 HILOG_INFO("MoveMissionsToBackground begin.");
757 auto abms = GetAbilityManager();
758 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
759 return abms->MoveMissionsToBackground(missionIds, result);
760 }
761
GetMissionIdByToken(const sptr<IRemoteObject> & token,int32_t & missionId)762 ErrCode AbilityManagerClient::GetMissionIdByToken(const sptr<IRemoteObject> &token, int32_t &missionId)
763 {
764 auto abms = GetAbilityManager();
765 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
766 missionId = abms->GetMissionIdByToken(token);
767 if (missionId <= 0) {
768 HILOG_ERROR("get missionid by token failed!");
769 return MISSION_NOT_FOUND;
770 }
771 return ERR_OK;
772 }
773
StartAbilityByCall(const Want & want,const sptr<IAbilityConnection> & connect)774 ErrCode AbilityManagerClient::StartAbilityByCall(const Want &want, const sptr<IAbilityConnection> &connect)
775 {
776 auto abms = GetAbilityManager();
777 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
778 HILOG_DEBUG("AbilityManagerClient::StartAbilityByCall called.");
779 return abms->StartAbilityByCall(want, connect, nullptr, DEFAULT_INVAL_VALUE);
780 }
781
StartAbilityByCall(const Want & want,const sptr<IAbilityConnection> & connect,const sptr<IRemoteObject> & callToken,int32_t accountId)782 ErrCode AbilityManagerClient::StartAbilityByCall(const Want &want, const sptr<IAbilityConnection> &connect,
783 const sptr<IRemoteObject> &callToken, int32_t accountId)
784 {
785 auto abms = GetAbilityManager();
786 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
787 HILOG_DEBUG("AbilityManagerClient::StartAbilityByCall called.");
788 return abms->StartAbilityByCall(want, connect, callToken, accountId);
789 }
790
CallRequestDone(const sptr<IRemoteObject> & token,const sptr<IRemoteObject> & callStub)791 void AbilityManagerClient::CallRequestDone(const sptr<IRemoteObject> &token, const sptr<IRemoteObject> &callStub)
792 {
793 auto abms = GetAbilityManager();
794 CHECK_POINTER_RETURN(abms);
795 abms->CallRequestDone(token, callStub);
796 }
797
GetAbilityTokenByCalleeObj(const sptr<IRemoteObject> & callStub,sptr<IRemoteObject> & token)798 void AbilityManagerClient::GetAbilityTokenByCalleeObj(const sptr<IRemoteObject> &callStub, sptr<IRemoteObject> &token)
799 {
800 auto abms = GetAbilityManager();
801 CHECK_POINTER_RETURN(abms);
802 abms->GetAbilityTokenByCalleeObj(callStub, token);
803 }
804
ReleaseCall(const sptr<IAbilityConnection> & connect,const AppExecFwk::ElementName & element)805 ErrCode AbilityManagerClient::ReleaseCall(
806 const sptr<IAbilityConnection> &connect, const AppExecFwk::ElementName &element)
807 {
808 auto abms = GetAbilityManager();
809 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
810 return abms->ReleaseCall(connect, element);
811 }
812
GetAbilityRunningInfos(std::vector<AbilityRunningInfo> & info)813 ErrCode AbilityManagerClient::GetAbilityRunningInfos(std::vector<AbilityRunningInfo> &info)
814 {
815 auto abms = GetAbilityManager();
816 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
817 return abms->GetAbilityRunningInfos(info);
818 }
819
GetExtensionRunningInfos(int upperLimit,std::vector<ExtensionRunningInfo> & info)820 ErrCode AbilityManagerClient::GetExtensionRunningInfos(int upperLimit, std::vector<ExtensionRunningInfo> &info)
821 {
822 auto abms = GetAbilityManager();
823 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
824 return abms->GetExtensionRunningInfos(upperLimit, info);
825 }
826
GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> & info)827 ErrCode AbilityManagerClient::GetProcessRunningInfos(std::vector<AppExecFwk::RunningProcessInfo> &info)
828 {
829 auto abms = GetAbilityManager();
830 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
831 return abms->GetProcessRunningInfos(info);
832 }
833
RequestDialogService(const Want & want,const sptr<IRemoteObject> & callerToken)834 ErrCode AbilityManagerClient::RequestDialogService(
835 const Want &want, const sptr<IRemoteObject> &callerToken)
836 {
837 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
838 auto abms = GetAbilityManager();
839 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
840 HILOG_INFO("request is:%{public}s.", want.GetElement().GetURI().c_str());
841 HandleDlpApp(const_cast<Want &>(want));
842 return abms->RequestDialogService(want, callerToken);
843 }
844
ReportDrawnCompleted(const sptr<IRemoteObject> & callerToken)845 ErrCode AbilityManagerClient::ReportDrawnCompleted(const sptr<IRemoteObject> &callerToken)
846 {
847 HILOG_DEBUG("called.");
848 auto abilityMgr = GetAbilityManager();
849 CHECK_POINTER_RETURN_NOT_CONNECTED(abilityMgr);
850 return abilityMgr->ReportDrawnCompleted(callerToken);
851 }
852
853 /**
854 * Start synchronizing remote device mission
855 * @param devId, deviceId.
856 * @param fixConflict, resolve synchronizing conflicts flag.
857 * @param tag, call tag.
858 * @return Returns ERR_OK on success, others on failure.
859 */
StartSyncRemoteMissions(const std::string & devId,bool fixConflict,int64_t tag)860 ErrCode AbilityManagerClient::StartSyncRemoteMissions(const std::string &devId, bool fixConflict, int64_t tag)
861 {
862 auto abms = GetAbilityManager();
863 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
864 return abms->StartSyncRemoteMissions(devId, fixConflict, tag);
865 }
866 /**
867 * Stop synchronizing remote device mission
868 * @param devId, deviceId.
869 * @return Returns ERR_OK on success, others on failure.
870 */
StopSyncRemoteMissions(const std::string & devId)871 ErrCode AbilityManagerClient::StopSyncRemoteMissions(const std::string &devId)
872 {
873 auto abms = GetAbilityManager();
874 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
875 return abms->StopSyncRemoteMissions(devId);
876 }
877
StartUser(int accountId)878 ErrCode AbilityManagerClient::StartUser(int accountId)
879 {
880 auto abms = GetAbilityManager();
881 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
882 return abms->StartUser(accountId);
883 }
StopUser(int accountId,const sptr<IStopUserCallback> & callback)884 ErrCode AbilityManagerClient::StopUser(int accountId, const sptr<IStopUserCallback> &callback)
885 {
886 auto abms = GetAbilityManager();
887 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
888 return abms->StopUser(accountId, callback);
889 }
890
RegisterSnapshotHandler(const sptr<ISnapshotHandler> & handler)891 ErrCode AbilityManagerClient::RegisterSnapshotHandler(const sptr<ISnapshotHandler>& handler)
892 {
893 auto abms = GetAbilityManager();
894 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
895 return abms->RegisterSnapshotHandler(handler);
896 }
897
GetMissionSnapshot(const std::string & deviceId,int32_t missionId,MissionSnapshot & snapshot,bool isLowResolution)898 ErrCode AbilityManagerClient::GetMissionSnapshot(const std::string& deviceId, int32_t missionId,
899 MissionSnapshot& snapshot, bool isLowResolution)
900 {
901 auto abms = GetAbilityManager();
902 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
903 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
904 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
905 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
906 HILOG_INFO("call");
907 auto err = sceneSessionManager->GetSessionSnapshot(deviceId, missionId, snapshot.snapshot, isLowResolution);
908 return static_cast<int>(err);
909 }
910 return abms->GetMissionSnapshot(deviceId, missionId, snapshot, isLowResolution);
911 }
912
StartUserTest(const Want & want,const sptr<IRemoteObject> & observer)913 ErrCode AbilityManagerClient::StartUserTest(const Want &want, const sptr<IRemoteObject> &observer)
914 {
915 auto abms = GetAbilityManager();
916 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
917 return abms->StartUserTest(want, observer);
918 }
919
FinishUserTest(const std::string & msg,const int64_t & resultCode,const std::string & bundleName)920 ErrCode AbilityManagerClient::FinishUserTest(
921 const std::string &msg, const int64_t &resultCode, const std::string &bundleName)
922 {
923 auto abms = GetAbilityManager();
924 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
925 return abms->FinishUserTest(msg, resultCode, bundleName);
926 }
927
GetTopAbility(sptr<IRemoteObject> & token)928 ErrCode AbilityManagerClient::GetTopAbility(sptr<IRemoteObject> &token)
929 {
930 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
931 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
932 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
933 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
934 HILOG_DEBUG("call");
935 auto err = sceneSessionManager->GetFocusSessionToken(token);
936 return static_cast<int>(err);
937 }
938 auto abms = GetAbilityManager();
939 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
940 return abms->GetTopAbility(token);
941 }
942
GetElementNameByToken(const sptr<IRemoteObject> & token)943 AppExecFwk::ElementName AbilityManagerClient::GetElementNameByToken(const sptr<IRemoteObject> &token)
944 {
945 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
946 auto abms = GetAbilityManager();
947 if (abms == nullptr) {
948 HILOG_ERROR("abms == nullptr");
949 return {};
950 }
951 return abms->GetElementNameByToken(token);
952 }
953
CheckUIExtensionIsFocused(uint32_t uiExtensionTokenId,bool & isFocused)954 ErrCode AbilityManagerClient::CheckUIExtensionIsFocused(uint32_t uiExtensionTokenId, bool& isFocused)
955 {
956 auto abms = GetAbilityManager();
957 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
958 return abms->CheckUIExtensionIsFocused(uiExtensionTokenId, isFocused);
959 }
960
DelegatorDoAbilityForeground(const sptr<IRemoteObject> & token)961 ErrCode AbilityManagerClient::DelegatorDoAbilityForeground(const sptr<IRemoteObject> &token)
962 {
963 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
964 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
965 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
966 HILOG_DEBUG("call");
967 sceneSessionManager->PendingSessionToForeground(token);
968 }
969 auto abms = GetAbilityManager();
970 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
971 return abms->DelegatorDoAbilityForeground(token);
972 }
973
DelegatorDoAbilityBackground(const sptr<IRemoteObject> & token)974 ErrCode AbilityManagerClient::DelegatorDoAbilityBackground(const sptr<IRemoteObject> &token)
975 {
976 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
977 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
978 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
979 HILOG_DEBUG("call");
980 sceneSessionManager->PendingSessionToBackgroundForDelegator(token);
981 }
982 auto abms = GetAbilityManager();
983 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
984 return abms->DelegatorDoAbilityBackground(token);
985 }
986
SetMissionContinueState(const sptr<IRemoteObject> & token,const AAFwk::ContinueState & state)987 ErrCode AbilityManagerClient::SetMissionContinueState(const sptr<IRemoteObject> &token,
988 const AAFwk::ContinueState &state)
989 {
990 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
991 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
992 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
993 HILOG_DEBUG("call");
994 uint32_t value = static_cast<uint32_t>(state);
995 Rosen::ContinueState continueState = static_cast<Rosen::ContinueState>(value);
996 auto err = sceneSessionManager->SetSessionContinueState(token, continueState);
997 return static_cast<int>(err);
998 }
999 auto abms = GetAbilityManager();
1000 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1001 return abms->SetMissionContinueState(token, state);
1002 }
1003
1004 #ifdef SUPPORT_GRAPHICS
SetMissionLabel(const sptr<IRemoteObject> & token,const std::string & label)1005 ErrCode AbilityManagerClient::SetMissionLabel(const sptr<IRemoteObject> &token, const std::string& label)
1006 {
1007 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1008 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
1009 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1010 HILOG_DEBUG("call");
1011 auto err = sceneSessionManager->SetSessionLabel(token, label);
1012 return static_cast<int>(err);
1013 }
1014 auto abms = GetAbilityManager();
1015 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1016 return abms->SetMissionLabel(token, label);
1017 }
1018
SetMissionIcon(const sptr<IRemoteObject> & abilityToken,const std::shared_ptr<OHOS::Media::PixelMap> & icon)1019 ErrCode AbilityManagerClient::SetMissionIcon(
1020 const sptr<IRemoteObject> &abilityToken, const std::shared_ptr<OHOS::Media::PixelMap> &icon)
1021 {
1022 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1023 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
1024 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1025 HILOG_DEBUG("call");
1026 auto err = sceneSessionManager->SetSessionIcon(abilityToken, icon);
1027 return static_cast<int>(err);
1028 }
1029 auto abms = GetAbilityManager();
1030 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1031 return abms->SetMissionIcon(abilityToken, icon);
1032 }
1033
RegisterWindowManagerServiceHandler(const sptr<IWindowManagerServiceHandler> & handler)1034 ErrCode AbilityManagerClient::RegisterWindowManagerServiceHandler(const sptr<IWindowManagerServiceHandler>& handler)
1035 {
1036 auto abms = GetAbilityManager();
1037 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1038 return abms->RegisterWindowManagerServiceHandler(handler);
1039 }
1040
CompleteFirstFrameDrawing(const sptr<IRemoteObject> & abilityToken)1041 void AbilityManagerClient::CompleteFirstFrameDrawing(const sptr<IRemoteObject> &abilityToken)
1042 {
1043 auto abms = GetAbilityManager();
1044 CHECK_POINTER_RETURN(abms);
1045 abms->CompleteFirstFrameDrawing(abilityToken);
1046 }
1047
PrepareTerminateAbility(const sptr<IRemoteObject> & token,sptr<IPrepareTerminateCallback> & callback)1048 ErrCode AbilityManagerClient::PrepareTerminateAbility(const sptr<IRemoteObject> &token,
1049 sptr<IPrepareTerminateCallback> &callback)
1050 {
1051 if (callback == nullptr) {
1052 HILOG_ERROR("callback is nullptr.");
1053 return ERR_INVALID_VALUE;
1054 }
1055 auto abms = GetAbilityManager();
1056 if (abms == nullptr) {
1057 HILOG_ERROR("abms is nullptr.");
1058 return ERR_INVALID_VALUE;
1059 }
1060 return abms->PrepareTerminateAbility(token, callback);
1061 }
1062 #endif
1063
DoAbilityForeground(const sptr<IRemoteObject> & token,uint32_t flag)1064 ErrCode AbilityManagerClient::DoAbilityForeground(const sptr<IRemoteObject> &token, uint32_t flag)
1065 {
1066 auto abms = GetAbilityManager();
1067 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1068 return abms->DoAbilityForeground(token, flag);
1069 }
1070
DoAbilityBackground(const sptr<IRemoteObject> & token,uint32_t flag)1071 ErrCode AbilityManagerClient::DoAbilityBackground(const sptr<IRemoteObject> &token, uint32_t flag)
1072 {
1073 auto abms = GetAbilityManager();
1074 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1075 return abms->DoAbilityBackground(token, flag);
1076 }
1077
SetAbilityController(const sptr<AppExecFwk::IAbilityController> & abilityController,bool imAStabilityTest)1078 ErrCode AbilityManagerClient::SetAbilityController(const sptr<AppExecFwk::IAbilityController> &abilityController,
1079 bool imAStabilityTest)
1080 {
1081 auto abms = GetAbilityManager();
1082 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1083 return abms->SetAbilityController(abilityController, imAStabilityTest);
1084 }
1085
SendANRProcessID(int pid)1086 ErrCode AbilityManagerClient::SendANRProcessID(int pid)
1087 {
1088 auto abms = GetAbilityManager();
1089 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1090 return abms->SendANRProcessID(pid);
1091 }
1092
UpdateMissionSnapShot(const sptr<IRemoteObject> & token,const std::shared_ptr<Media::PixelMap> & pixelMap)1093 void AbilityManagerClient::UpdateMissionSnapShot(const sptr<IRemoteObject> &token,
1094 const std::shared_ptr<Media::PixelMap> &pixelMap)
1095 {
1096 auto abms = GetAbilityManager();
1097 CHECK_POINTER_RETURN(abms);
1098 return abms->UpdateMissionSnapShot(token, pixelMap);
1099 }
1100
EnableRecoverAbility(const sptr<IRemoteObject> & token)1101 void AbilityManagerClient::EnableRecoverAbility(const sptr<IRemoteObject>& token)
1102 {
1103 auto abms = GetAbilityManager();
1104 CHECK_POINTER_RETURN(abms);
1105 return abms->EnableRecoverAbility(token);
1106 }
1107
ScheduleRecoverAbility(const sptr<IRemoteObject> & token,int32_t reason,const Want * want)1108 void AbilityManagerClient::ScheduleRecoverAbility(const sptr<IRemoteObject>& token, int32_t reason, const Want *want)
1109 {
1110 auto abms = GetAbilityManager();
1111 CHECK_POINTER_RETURN(abms);
1112 return abms->ScheduleRecoverAbility(token, reason, want);
1113 }
1114
1115 #ifdef ABILITY_COMMAND_FOR_TEST
BlockAmsService()1116 ErrCode AbilityManagerClient::BlockAmsService()
1117 {
1118 HILOG_DEBUG("enter");
1119 auto abms = GetAbilityManager();
1120 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1121 return abms->BlockAmsService();
1122 }
1123
BlockAbility(int32_t abilityRecordId)1124 ErrCode AbilityManagerClient::BlockAbility(int32_t abilityRecordId)
1125 {
1126 HILOG_DEBUG("enter");
1127 auto abms = GetAbilityManager();
1128 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1129 return abms->BlockAbility(abilityRecordId);
1130 }
1131
BlockAppService()1132 ErrCode AbilityManagerClient::BlockAppService()
1133 {
1134 HILOG_DEBUG("enter");
1135 auto abms = GetAbilityManager();
1136 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1137 return abms->BlockAppService();
1138 }
1139 #endif
1140
GetAbilityManager()1141 sptr<IAbilityManager> AbilityManagerClient::GetAbilityManager()
1142 {
1143 std::lock_guard<std::recursive_mutex> lock(mutex_);
1144 if (!proxy_) {
1145 (void)Connect();
1146 }
1147
1148 return proxy_;
1149 }
1150
ResetProxy(const wptr<IRemoteObject> & remote)1151 void AbilityManagerClient::ResetProxy(const wptr<IRemoteObject>& remote)
1152 {
1153 std::lock_guard<std::recursive_mutex> lock(mutex_);
1154 if (!proxy_) {
1155 return;
1156 }
1157
1158 auto serviceRemote = proxy_->AsObject();
1159 if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) {
1160 serviceRemote->RemoveDeathRecipient(deathRecipient_);
1161 proxy_ = nullptr;
1162 }
1163 }
1164
OnRemoteDied(const wptr<IRemoteObject> & remote)1165 void AbilityManagerClient::AbilityMgrDeathRecipient::OnRemoteDied(const wptr<IRemoteObject>& remote)
1166 {
1167 HILOG_INFO("AbilityMgrDeathRecipient handle remote died.");
1168 AbilityManagerClient::GetInstance()->ResetProxy(remote);
1169 }
1170
FreeInstallAbilityFromRemote(const Want & want,const sptr<IRemoteObject> & callback,int32_t userId,int requestCode)1171 ErrCode AbilityManagerClient::FreeInstallAbilityFromRemote(const Want &want, const sptr<IRemoteObject> &callback,
1172 int32_t userId, int requestCode)
1173 {
1174 HILOG_INFO("enter");
1175 auto abms = GetAbilityManager();
1176 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1177 return abms->FreeInstallAbilityFromRemote(want, callback, userId, requestCode);
1178 }
1179
GetTopAbility()1180 AppExecFwk::ElementName AbilityManagerClient::GetTopAbility()
1181 {
1182 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
1183 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1184 AppExecFwk::ElementName elementName = {};
1185 sptr<IRemoteObject> token;
1186 auto ret = GetTopAbility(token);
1187 if (ret != ERR_OK) {
1188 HILOG_ERROR("get top ability token failed");
1189 return elementName;
1190 }
1191 if (!token) {
1192 HILOG_ERROR("token is nullptr");
1193 return elementName;
1194 }
1195 return GetElementNameByToken(token);
1196 }
1197 HILOG_DEBUG("enter.");
1198 auto abms = GetAbilityManager();
1199 if (abms == nullptr) {
1200 HILOG_ERROR("abms == nullptr");
1201 return {};
1202 }
1203
1204 return abms->GetTopAbility();
1205 }
1206
DumpAbilityInfoDone(std::vector<std::string> & infos,const sptr<IRemoteObject> & callerToken)1207 ErrCode AbilityManagerClient::DumpAbilityInfoDone(std::vector<std::string> &infos,
1208 const sptr<IRemoteObject> &callerToken)
1209 {
1210 HILOG_INFO("call");
1211 auto abms = GetAbilityManager();
1212 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1213 return abms->DumpAbilityInfoDone(infos, callerToken);
1214 }
1215
HandleDlpApp(Want & want)1216 void AbilityManagerClient::HandleDlpApp(Want &want)
1217 {
1218 #ifdef WITH_DLP
1219 if (!want.GetParams().HasParam(DLP_PARAMS_SANDBOX)) {
1220 bool sandboxFlag = Security::DlpPermission::DlpFileKits::GetSandboxFlag(want);
1221 want.SetParam(DLP_PARAMS_SANDBOX, sandboxFlag);
1222 }
1223 #endif // WITH_DLP
1224 }
1225
AddFreeInstallObserver(const sptr<AbilityRuntime::IFreeInstallObserver> & observer)1226 ErrCode AbilityManagerClient::AddFreeInstallObserver(const sptr<AbilityRuntime::IFreeInstallObserver> &observer)
1227 {
1228 HILOG_INFO("call");
1229 auto abms = GetAbilityManager();
1230 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1231 return abms->AddFreeInstallObserver(observer);
1232 }
1233
IsValidMissionIds(const std::vector<int32_t> & missionIds,std::vector<MissionVaildResult> & results)1234 int32_t AbilityManagerClient::IsValidMissionIds(
1235 const std::vector<int32_t> &missionIds, std::vector<MissionVaildResult> &results)
1236 {
1237 HILOG_INFO("call");
1238 if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1239 auto sceneSessionManager = SessionManager::GetInstance().GetSceneSessionManagerProxy();
1240 CHECK_POINTER_RETURN_INVALID_VALUE(sceneSessionManager);
1241 std::vector<bool> isValidList;
1242 auto err = sceneSessionManager->IsValidSessionIds(missionIds, isValidList);
1243 HILOG_DEBUG("IsValidSessionIds %{public}d size %{public}d",
1244 static_cast<int>(err), static_cast<int32_t>(isValidList.size()));
1245 for (auto i = 0; i < static_cast<int32_t>(isValidList.size()); ++i) {
1246 MissionVaildResult missionResult = {};
1247 missionResult.missionId = missionIds.at(i);
1248 missionResult.isVaild = isValidList.at(i);
1249 results.push_back(missionResult);
1250 }
1251 return static_cast<int>(err);
1252 }
1253 auto abms = GetAbilityManager();
1254 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1255 return abms->IsValidMissionIds(missionIds, results);
1256 }
1257
VerifyPermission(const std::string & permission,int pid,int uid)1258 ErrCode AbilityManagerClient::VerifyPermission(const std::string &permission, int pid, int uid)
1259 {
1260 HILOG_INFO("call");
1261 auto abms = GetAbilityManager();
1262 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1263 return abms->VerifyPermission(permission, pid, uid);
1264 }
1265
AcquireShareData(const int32_t & missionId,const sptr<IAcquireShareDataCallback> & shareData)1266 ErrCode AbilityManagerClient::AcquireShareData(
1267 const int32_t &missionId, const sptr<IAcquireShareDataCallback> &shareData)
1268 {
1269 HILOG_INFO("call");
1270 auto abms = GetAbilityManager();
1271 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1272 return abms->AcquireShareData(missionId, shareData);
1273 }
1274
ShareDataDone(const sptr<IRemoteObject> & token,const int32_t & resultCode,const int32_t & uniqueId,WantParams & wantParam)1275 ErrCode AbilityManagerClient::ShareDataDone(
1276 const sptr<IRemoteObject> &token, const int32_t &resultCode, const int32_t &uniqueId, WantParams &wantParam)
1277 {
1278 HILOG_INFO("call");
1279 auto abms = GetAbilityManager();
1280 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1281 return abms->ShareDataDone(token, resultCode, uniqueId, wantParam);
1282 }
1283
ForceExitApp(const int32_t pid,Reason exitReason)1284 ErrCode AbilityManagerClient::ForceExitApp(const int32_t pid, Reason exitReason)
1285 {
1286 HILOG_DEBUG("begin.");
1287 auto abms = GetAbilityManager();
1288 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1289 return abms->ForceExitApp(pid, exitReason);
1290 }
1291
RecordAppExitReason(Reason exitReason)1292 ErrCode AbilityManagerClient::RecordAppExitReason(Reason exitReason)
1293 {
1294 HILOG_DEBUG("begin.");
1295 auto abms = GetAbilityManager();
1296 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1297 return abms->RecordAppExitReason(exitReason);
1298 }
1299
SetRootSceneSession(const sptr<IRemoteObject> & rootSceneSession)1300 void AbilityManagerClient::SetRootSceneSession(const sptr<IRemoteObject> &rootSceneSession)
1301 {
1302 HILOG_INFO("call");
1303 auto abms = GetAbilityManager();
1304 CHECK_POINTER_RETURN(abms);
1305 abms->SetRootSceneSession(rootSceneSession);
1306 }
1307
CallUIAbilityBySCB(const sptr<SessionInfo> & sessionInfo)1308 void AbilityManagerClient::CallUIAbilityBySCB(const sptr<SessionInfo> &sessionInfo)
1309 {
1310 HILOG_INFO("call");
1311 auto abms = GetAbilityManager();
1312 CHECK_POINTER_RETURN(abms);
1313 abms->CallUIAbilityBySCB(sessionInfo);
1314 }
1315
StartSpecifiedAbilityBySCB(const Want & want)1316 void AbilityManagerClient::StartSpecifiedAbilityBySCB(const Want &want)
1317 {
1318 HILOG_INFO("call");
1319 auto abms = GetAbilityManager();
1320 CHECK_POINTER_RETURN(abms);
1321 abms->StartSpecifiedAbilityBySCB(want);
1322 }
1323
NotifySaveAsResult(const Want & want,int resultCode,int requestCode)1324 ErrCode AbilityManagerClient::NotifySaveAsResult(const Want &want, int resultCode, int requestCode)
1325 {
1326 HILOG_DEBUG("call.");
1327 auto abms = GetAbilityManager();
1328 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1329 return abms->NotifySaveAsResult(want, resultCode, requestCode);
1330 }
1331
SetSessionManagerService(const sptr<IRemoteObject> & sessionManagerService)1332 ErrCode AbilityManagerClient::SetSessionManagerService(const sptr<IRemoteObject> &sessionManagerService)
1333 {
1334 HILOG_INFO("AbilityManagerClient::SetSessionManagerService call");
1335 auto abms = GetAbilityManager();
1336 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1337 return abms->SetSessionManagerService(sessionManagerService);
1338 }
1339
RegisterIAbilityManagerCollaborator(int32_t type,const sptr<IAbilityManagerCollaborator> & impl)1340 ErrCode AbilityManagerClient::RegisterIAbilityManagerCollaborator(
1341 int32_t type, const sptr<IAbilityManagerCollaborator> &impl)
1342 {
1343 HILOG_INFO("call");
1344 auto abms = GetAbilityManager();
1345 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1346 return abms->RegisterIAbilityManagerCollaborator(type, impl);
1347 }
1348
UnregisterIAbilityManagerCollaborator(int32_t type)1349 ErrCode AbilityManagerClient::UnregisterIAbilityManagerCollaborator(int32_t type)
1350 {
1351 HILOG_INFO("call");
1352 auto abms = GetAbilityManager();
1353 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1354 return abms->UnregisterIAbilityManagerCollaborator(type);
1355 }
1356
MoveMissionToBackground(int32_t missionId)1357 ErrCode AbilityManagerClient::MoveMissionToBackground(int32_t missionId)
1358 {
1359 HILOG_INFO("call");
1360 auto abms = GetAbilityManager();
1361 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1362 return abms->MoveMissionToBackground(missionId);
1363 }
1364
TerminateMission(int32_t missionId)1365 ErrCode AbilityManagerClient::TerminateMission(int32_t missionId)
1366 {
1367 HILOG_INFO("call");
1368 auto abms = GetAbilityManager();
1369 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1370 return abms->TerminateMission(missionId);
1371 }
1372
PrepareTerminateAbilityBySCB(const sptr<SessionInfo> & sessionInfo,bool & isPrepareTerminate)1373 ErrCode AbilityManagerClient::PrepareTerminateAbilityBySCB(const sptr<SessionInfo> &sessionInfo,
1374 bool &isPrepareTerminate)
1375 {
1376 HILOG_INFO("call.");
1377 auto abms = GetAbilityManager();
1378 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1379 return abms->PrepareTerminateAbilityBySCB(sessionInfo, isPrepareTerminate);
1380 }
1381
RegisterSessionHandler(const sptr<IRemoteObject> & object)1382 ErrCode AbilityManagerClient::RegisterSessionHandler(const sptr<IRemoteObject> &object)
1383 {
1384 HILOG_DEBUG("call");
1385 auto abms = GetAbilityManager();
1386 CHECK_POINTER_RETURN_NOT_CONNECTED(abms);
1387 return abms->RegisterSessionHandler(object);
1388 }
1389 } // namespace AAFwk
1390 } // namespace OHOS
1391