• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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