1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "bundle_mgr_helper.h"
17 
18 #include "bundle_mgr_service_death_recipient.h"
19 #include "global_constant.h"
20 #include "hilog_tag_wrapper.h"
21 #include "hitrace_meter.h"
22 #include "iservice_registry.h"
23 #include "system_ability_definition.h"
24 
25 namespace OHOS {
26 namespace AppExecFwk {
BundleMgrHelper()27 BundleMgrHelper::BundleMgrHelper() {}
28 
~BundleMgrHelper()29 BundleMgrHelper::~BundleMgrHelper()
30 {
31     if (bundleMgr_ != nullptr && bundleMgr_->AsObject() != nullptr && deathRecipient_ != nullptr) {
32         bundleMgr_->AsObject()->RemoveDeathRecipient(deathRecipient_);
33     }
34 }
35 
PreConnect()36 void BundleMgrHelper::PreConnect()
37 {
38     Connect();
39 }
40 
GetNameForUid(const int32_t uid,std::string & name)41 ErrCode BundleMgrHelper::GetNameForUid(const int32_t uid, std::string &name)
42 {
43     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
44     auto bundleMgr = Connect();
45     if (bundleMgr == nullptr) {
46         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect.");
47         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
48     }
49 
50     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
51     return bundleMgr->GetNameForUid(uid, name);
52 }
53 
GetNameAndIndexForUid(const int32_t uid,std::string & bundleName,int32_t & appIndex)54 ErrCode BundleMgrHelper::GetNameAndIndexForUid(const int32_t uid, std::string &bundleName, int32_t &appIndex)
55 {
56     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
57     auto bundleMgr = Connect();
58     if (bundleMgr == nullptr) {
59         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect.");
60         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
61     }
62 
63     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
64     return bundleMgr->GetNameAndIndexForUid(uid, bundleName, appIndex);
65 }
66 
GetBundleInfo(const std::string & bundleName,const BundleFlag flag,BundleInfo & bundleInfo,int32_t userId)67 bool BundleMgrHelper::GetBundleInfo(const std::string &bundleName, const BundleFlag flag, BundleInfo &bundleInfo,
68     int32_t userId)
69 {
70     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
71     auto bundleMgr = Connect();
72     if (bundleMgr == nullptr) {
73         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect.");
74         return false;
75     }
76 
77     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
78     return bundleMgr->GetBundleInfo(bundleName, flag, bundleInfo, userId);
79 }
80 
InstallSandboxApp(const std::string & bundleName,int32_t dlpType,int32_t userId,int32_t & appIndex)81 ErrCode BundleMgrHelper::InstallSandboxApp(const std::string &bundleName, int32_t dlpType, int32_t userId,
82     int32_t &appIndex)
83 {
84     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
85     if (bundleName.empty()) {
86         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The bundleName is empty.");
87         return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR;
88     }
89     auto bundleInstaller = ConnectBundleInstaller();
90     if (bundleInstaller == nullptr) {
91         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect.");
92         return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR;
93     }
94 
95     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
96     return bundleInstaller->InstallSandboxApp(bundleName, dlpType, userId, appIndex);
97 }
98 
UninstallSandboxApp(const std::string & bundleName,int32_t appIndex,int32_t userId)99 ErrCode BundleMgrHelper::UninstallSandboxApp(const std::string &bundleName, int32_t appIndex, int32_t userId)
100 {
101     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
102     if (bundleName.empty() || appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) {
103         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid.");
104         return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR;
105     }
106     auto bundleInstaller = ConnectBundleInstaller();
107     if (bundleInstaller == nullptr) {
108         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect.");
109         return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR;
110     }
111 
112     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
113     return bundleInstaller->UninstallSandboxApp(bundleName, appIndex, userId);
114 }
115 
GetUninstalledBundleInfo(const std::string bundleName,BundleInfo & bundleInfo)116 ErrCode BundleMgrHelper::GetUninstalledBundleInfo(const std::string bundleName, BundleInfo &bundleInfo)
117 {
118     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
119     auto bundleMgr = Connect();
120     if (bundleMgr == nullptr) {
121         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect.");
122         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
123     }
124 
125     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
126     return bundleMgr->GetUninstalledBundleInfo(bundleName, bundleInfo);
127 }
128 
GetSandboxBundleInfo(const std::string & bundleName,int32_t appIndex,int32_t userId,BundleInfo & info)129 ErrCode BundleMgrHelper::GetSandboxBundleInfo(
130     const std::string &bundleName, int32_t appIndex, int32_t userId, BundleInfo &info)
131 {
132     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
133     if (bundleName.empty() || appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) {
134         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid.");
135         return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR;
136     }
137     auto bundleMgr = Connect();
138     if (bundleMgr == nullptr) {
139         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
140         return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR;
141     }
142 
143     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
144     return bundleMgr->GetSandboxBundleInfo(bundleName, appIndex, userId, info);
145 }
146 
GetSandboxAbilityInfo(const Want & want,int32_t appIndex,int32_t flags,int32_t userId,AbilityInfo & abilityInfo)147 ErrCode BundleMgrHelper::GetSandboxAbilityInfo(const Want &want, int32_t appIndex, int32_t flags, int32_t userId,
148     AbilityInfo &abilityInfo)
149 {
150     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
151     if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) {
152         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid");
153         return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR;
154     }
155     auto bundleMgr = Connect();
156     if (bundleMgr == nullptr) {
157         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
158         return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR;
159     }
160 
161     AAFwk::Want newWant = want;
162     newWant.RemoveAllFd();
163 
164     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
165     return bundleMgr->GetSandboxAbilityInfo(newWant, appIndex, flags, userId, abilityInfo);
166 }
167 
GetSandboxExtAbilityInfos(const Want & want,int32_t appIndex,int32_t flags,int32_t userId,std::vector<ExtensionAbilityInfo> & extensionInfos)168 ErrCode BundleMgrHelper::GetSandboxExtAbilityInfos(const Want &want, int32_t appIndex, int32_t flags,
169     int32_t userId, std::vector<ExtensionAbilityInfo> &extensionInfos)
170 {
171     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
172     if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) {
173         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid");
174         return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR;
175     }
176     auto bundleMgr = Connect();
177     if (bundleMgr == nullptr) {
178         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
179         return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR;
180     }
181 
182     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
183     return bundleMgr->GetSandboxExtAbilityInfos(want, appIndex, flags, userId, extensionInfos);
184 }
185 
GetSandboxHapModuleInfo(const AbilityInfo & abilityInfo,int32_t appIndex,int32_t userId,HapModuleInfo & hapModuleInfo)186 ErrCode BundleMgrHelper::GetSandboxHapModuleInfo(const AbilityInfo &abilityInfo, int32_t appIndex, int32_t userId,
187     HapModuleInfo &hapModuleInfo)
188 {
189     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
190     if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) {
191         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid");
192         return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR;
193     }
194     auto bundleMgr = Connect();
195     if (bundleMgr == nullptr) {
196         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
197         return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR;
198     }
199 
200     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
201     return bundleMgr->GetSandboxHapModuleInfo(abilityInfo, appIndex, userId, hapModuleInfo);
202 }
203 
GetAppIdByBundleName(const std::string & bundleName,const int32_t userId)204 std::string BundleMgrHelper::GetAppIdByBundleName(const std::string &bundleName, const int32_t userId)
205 {
206     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "GetAppIdByBundleName called");
207     auto bundleMgr = Connect();
208     if (bundleMgr == nullptr) {
209         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect.");
210         return "";
211     }
212 
213     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
214     return bundleMgr->GetAppIdByBundleName(bundleName, userId);
215 }
216 
Connect()217 sptr<IBundleMgr> BundleMgrHelper::Connect()
218 {
219     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
220     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
221     std::lock_guard<std::mutex> lock(mutex_);
222     if (bundleMgr_ == nullptr) {
223         sptr<ISystemAbilityManager> systemAbilityManager =
224             SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
225         if (systemAbilityManager == nullptr) {
226             TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to get system ability manager");
227             return nullptr;
228         }
229 
230         sptr<IRemoteObject> remoteObject_ = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID);
231         if (remoteObject_ == nullptr || (bundleMgr_ = iface_cast<IBundleMgr>(remoteObject_)) == nullptr) {
232             TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to get bundle mgr service remote object");
233             return nullptr;
234         }
235         std::weak_ptr<BundleMgrHelper> weakPtr = shared_from_this();
236         auto deathCallback = [weakPtr](const wptr<IRemoteObject>& object) {
237             auto sharedPtr = weakPtr.lock();
238             if (sharedPtr == nullptr) {
239                 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Bundle helper instance is nullptr");
240                 return;
241             }
242             sharedPtr->OnDeath();
243         };
244         deathRecipient_ = new (std::nothrow) BundleMgrServiceDeathRecipient(deathCallback);
245         if (deathRecipient_ == nullptr) {
246             TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to create death recipient");
247             return nullptr;
248         }
249         if (bundleMgr_->AsObject() != nullptr) {
250             bundleMgr_->AsObject()->AddDeathRecipient(deathRecipient_);
251         }
252     }
253 
254     return bundleMgr_;
255 }
256 
ConnectBundleInstaller()257 sptr<IBundleInstaller> BundleMgrHelper::ConnectBundleInstaller()
258 {
259     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
260     {
261         std::lock_guard<std::mutex> lock(mutex_);
262         if (bundleInstaller_ != nullptr) {
263             return bundleInstaller_;
264         }
265     }
266 
267     auto bundleMgr = Connect();
268     if (bundleMgr == nullptr) {
269         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
270         return nullptr;
271     }
272     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
273     std::lock_guard<std::mutex> lock(mutex_);
274     bundleInstaller_ = bundleMgr->GetBundleInstaller();
275     if ((bundleInstaller_ == nullptr) || (bundleInstaller_->AsObject() == nullptr)) {
276         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to get bundle installer proxy");
277         return nullptr;
278     }
279 
280     return bundleInstaller_;
281 }
282 
OnDeath()283 void BundleMgrHelper::OnDeath()
284 {
285     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
286     std::lock_guard<std::mutex> lock(mutex_);
287     if (bundleMgr_ == nullptr || bundleMgr_->AsObject() == nullptr) {
288         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "bundleMgr_ is nullptr");
289         return;
290     }
291     bundleMgr_->AsObject()->RemoveDeathRecipient(deathRecipient_);
292     bundleMgr_ = nullptr;
293     bundleInstaller_ = nullptr;
294 }
295 
GetBundleInfo(const std::string & bundleName,int32_t flags,BundleInfo & bundleInfo,int32_t userId)296 bool BundleMgrHelper::GetBundleInfo(const std::string &bundleName, int32_t flags,
297     BundleInfo &bundleInfo, int32_t userId)
298 {
299     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
300     auto bundleMgr = Connect();
301     if (bundleMgr == nullptr) {
302         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
303         return false;
304     }
305 
306     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
307     return bundleMgr->GetBundleInfo(bundleName, flags, bundleInfo, userId);
308 }
309 
GetHapModuleInfo(const AbilityInfo & abilityInfo,HapModuleInfo & hapModuleInfo)310 bool BundleMgrHelper::GetHapModuleInfo(const AbilityInfo &abilityInfo, HapModuleInfo &hapModuleInfo)
311 {
312     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
313     auto bundleMgr = Connect();
314     if (bundleMgr == nullptr) {
315         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
316         return false;
317     }
318 
319     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
320     return bundleMgr->GetHapModuleInfo(abilityInfo, hapModuleInfo);
321 }
322 
GetAbilityLabel(const std::string & bundleName,const std::string & abilityName)323 std::string BundleMgrHelper::GetAbilityLabel(const std::string &bundleName, const std::string &abilityName)
324 {
325     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
326     auto bundleMgr = Connect();
327     if (bundleMgr == nullptr) {
328         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
329         return "";
330     }
331 
332     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
333     return bundleMgr->GetAbilityLabel(bundleName, abilityName);
334 }
335 
GetAppType(const std::string & bundleName)336 std::string BundleMgrHelper::GetAppType(const std::string &bundleName)
337 {
338     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
339     auto bundleMgr = Connect();
340     if (bundleMgr == nullptr) {
341         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
342         return "";
343     }
344 
345     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
346     return bundleMgr->GetAppType(bundleName);
347 }
348 
GetBaseSharedBundleInfos(const std::string & bundleName,std::vector<BaseSharedBundleInfo> & baseSharedBundleInfos,GetDependentBundleInfoFlag flag)349 ErrCode BundleMgrHelper::GetBaseSharedBundleInfos(
350     const std::string &bundleName, std::vector<BaseSharedBundleInfo> &baseSharedBundleInfos,
351     GetDependentBundleInfoFlag flag)
352 {
353     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
354     auto bundleMgr = Connect();
355     if (bundleMgr == nullptr) {
356         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
357         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
358     }
359 
360     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
361     return bundleMgr->GetBaseSharedBundleInfos(bundleName, baseSharedBundleInfos, flag);
362 }
363 
GetBundleInfoForSelf(int32_t flags,BundleInfo & bundleInfo)364 ErrCode BundleMgrHelper::GetBundleInfoForSelf(int32_t flags, BundleInfo &bundleInfo)
365 {
366     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
367     auto bundleMgr = Connect();
368     if (bundleMgr == nullptr) {
369         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
370         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
371     }
372 
373     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
374     return bundleMgr->GetBundleInfoForSelf(flags, bundleInfo);
375 }
376 
GetDependentBundleInfo(const std::string & sharedBundleName,BundleInfo & sharedBundleInfo,GetDependentBundleInfoFlag flag)377 ErrCode BundleMgrHelper::GetDependentBundleInfo(const std::string &sharedBundleName, BundleInfo &sharedBundleInfo,
378     GetDependentBundleInfoFlag flag)
379 {
380     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
381     auto bundleMgr = Connect();
382     if (bundleMgr == nullptr) {
383         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
384         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
385     }
386 
387     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
388     return bundleMgr->GetDependentBundleInfo(sharedBundleName, sharedBundleInfo, flag);
389 }
390 
GetGroupDir(const std::string & dataGroupId,std::string & dir)391 bool BundleMgrHelper::GetGroupDir(const std::string &dataGroupId, std::string &dir)
392 {
393     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
394     auto bundleMgr = Connect();
395     if (bundleMgr == nullptr) {
396         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
397         return false;
398     }
399 
400     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
401     return bundleMgr->GetGroupDir(dataGroupId, dir);
402 }
403 
GetOverlayManagerProxy()404 sptr<IOverlayManager> BundleMgrHelper::GetOverlayManagerProxy()
405 {
406     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
407     auto bundleMgr = Connect();
408     if (bundleMgr == nullptr) {
409         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
410         return nullptr;
411     }
412 
413     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
414     return bundleMgr->GetOverlayManagerProxy();
415 }
416 
QueryAbilityInfo(const Want & want,AbilityInfo & abilityInfo)417 bool BundleMgrHelper::QueryAbilityInfo(const Want &want, AbilityInfo &abilityInfo)
418 {
419     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
420     auto bundleMgr = Connect();
421     if (bundleMgr == nullptr) {
422         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
423         return false;
424     }
425 
426     AAFwk::Want newWant = want;
427     newWant.RemoveAllFd();
428     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
429     return bundleMgr->QueryAbilityInfo(newWant, abilityInfo);
430 }
431 
QueryAbilityInfo(const Want & want,int32_t flags,int32_t userId,AbilityInfo & abilityInfo)432 bool BundleMgrHelper::QueryAbilityInfo(const Want &want, int32_t flags, int32_t userId, AbilityInfo &abilityInfo)
433 {
434     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
435     auto bundleMgr = Connect();
436     if (bundleMgr == nullptr) {
437         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
438         return false;
439     }
440 
441     AAFwk::Want newWant = want;
442     newWant.RemoveAllFd();
443     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
444     return bundleMgr->QueryAbilityInfo(newWant, flags, userId, abilityInfo);
445 }
446 
GetBundleInfos(int32_t flags,std::vector<BundleInfo> & bundleInfos,int32_t userId)447 bool BundleMgrHelper::GetBundleInfos(int32_t flags, std::vector<BundleInfo> &bundleInfos, int32_t userId)
448 {
449     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
450     auto bundleMgr = Connect();
451     if (bundleMgr == nullptr) {
452         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
453         return false;
454     }
455 
456     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
457     return bundleMgr->GetBundleInfos(flags, bundleInfos, userId);
458 }
459 
GetBundleInfos(const BundleFlag flag,std::vector<BundleInfo> & bundleInfos,int32_t userId)460 bool BundleMgrHelper::GetBundleInfos(const BundleFlag flag, std::vector<BundleInfo> &bundleInfos, int32_t userId)
461 {
462     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
463     auto bundleMgr = Connect();
464     if (bundleMgr == nullptr) {
465         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
466         return false;
467     }
468 
469     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
470     return bundleMgr->GetBundleInfos(flag, bundleInfos, userId);
471 }
472 
GetQuickFixManagerProxy()473 sptr<IQuickFixManager> BundleMgrHelper::GetQuickFixManagerProxy()
474 {
475     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
476     auto bundleMgr = Connect();
477     if (bundleMgr == nullptr) {
478         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
479         return nullptr;
480     }
481 
482     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
483     return bundleMgr->GetQuickFixManagerProxy();
484 }
485 
ProcessPreload(const Want & want)486 bool BundleMgrHelper::ProcessPreload(const Want &want)
487 {
488     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
489     auto bundleMgr = Connect();
490     if (bundleMgr == nullptr) {
491         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
492         return false;
493     }
494 
495     AAFwk::Want newWant = want;
496     newWant.RemoveAllFd();
497     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
498     return bundleMgr->ProcessPreload(newWant);
499 }
500 
GetAppControlProxy()501 sptr<IAppControlMgr> BundleMgrHelper::GetAppControlProxy()
502 {
503     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
504     auto bundleMgr = Connect();
505     if (bundleMgr == nullptr) {
506         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
507         return nullptr;
508     }
509 
510     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
511     return bundleMgr->GetAppControlProxy();
512 }
513 
QueryExtensionAbilityInfos(const Want & want,const int32_t & flag,const int32_t & userId,std::vector<ExtensionAbilityInfo> & extensionInfos)514 bool BundleMgrHelper::QueryExtensionAbilityInfos(const Want &want, const int32_t &flag, const int32_t &userId,
515     std::vector<ExtensionAbilityInfo> &extensionInfos)
516 {
517     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
518     auto bundleMgr = Connect();
519     if (bundleMgr == nullptr) {
520         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
521         return false;
522     }
523 
524     AAFwk::Want newWant = want;
525     newWant.RemoveAllFd();
526     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
527     return bundleMgr->QueryExtensionAbilityInfos(newWant, flag, userId, extensionInfos);
528 }
529 
GetBundleInfoV9(const std::string & bundleName,int32_t flags,BundleInfo & bundleInfo,int32_t userId)530 ErrCode BundleMgrHelper::GetBundleInfoV9(
531     const std::string &bundleName, int32_t flags, BundleInfo &bundleInfo, int32_t userId)
532 {
533     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
534     auto bundleMgr = Connect();
535     if (bundleMgr == nullptr) {
536         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
537         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
538     }
539 
540     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
541     return bundleMgr->GetBundleInfoV9(bundleName, flags, bundleInfo, userId);
542 }
543 
GetApplicationInfo(const std::string & appName,const ApplicationFlag flag,const int32_t userId,ApplicationInfo & appInfo)544 bool BundleMgrHelper::GetApplicationInfo(
545     const std::string &appName, const ApplicationFlag flag, const int32_t userId, ApplicationInfo &appInfo)
546 {
547     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
548     auto bundleMgr = Connect();
549     if (bundleMgr == nullptr) {
550         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
551         return false;
552     }
553 
554     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
555     return bundleMgr->GetApplicationInfo(appName, flag, userId, appInfo);
556 }
557 
GetApplicationInfo(const std::string & appName,int32_t flags,int32_t userId,ApplicationInfo & appInfo)558 bool BundleMgrHelper::GetApplicationInfo(
559     const std::string &appName, int32_t flags, int32_t userId, ApplicationInfo &appInfo)
560 {
561     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
562     auto bundleMgr = Connect();
563     if (bundleMgr == nullptr) {
564         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
565         return false;
566     }
567 
568     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
569     return bundleMgr->GetApplicationInfo(appName, flags, userId, appInfo);
570 }
571 
GetApplicationInfoWithAppIndex(const std::string & appName,int32_t appIndex,int32_t userId,ApplicationInfo & appInfo)572 bool BundleMgrHelper::GetApplicationInfoWithAppIndex(
573     const std::string &appName, int32_t appIndex, int32_t userId, ApplicationInfo &appInfo)
574 {
575     TAG_LOGI(AAFwkTag::BUNDLEMGRHELPER, "appName: %{public}s, appIndex: %{public}d", appName.c_str(), appIndex);
576     if (appIndex < 0) {
577         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Invalid appIndex");
578         return false;
579     }
580     auto bundleMgr = Connect();
581     if (bundleMgr == nullptr) {
582         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
583         return false;
584     }
585 
586     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
587     BundleInfo bundleInfo;
588     if (appIndex == 0) {
589         if (bundleMgr->GetApplicationInfo(appName, AppExecFwk::BundleFlag::GET_BUNDLE_DEFAULT, userId, appInfo)) {
590             return true;
591         }
592     } else if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) {
593         if (bundleMgr->GetCloneBundleInfo(appName,
594             static_cast<int32_t>(GetBundleInfoFlag::GET_BUNDLE_INFO_WITH_APPLICATION),
595             appIndex, bundleInfo, userId) == ERR_OK) {
596             appInfo = bundleInfo.applicationInfo;
597             return true;
598         }
599     } else {
600         if (bundleMgr->GetSandboxBundleInfo(appName, appIndex, userId, bundleInfo) == ERR_OK) {
601             appInfo = bundleInfo.applicationInfo;
602             return true;
603         }
604     }
605     TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "GetApplicationInfo failed");
606     return false;
607 }
608 
UnregisterBundleEventCallback(const sptr<IBundleEventCallback> & bundleEventCallback)609 bool BundleMgrHelper::UnregisterBundleEventCallback(const sptr<IBundleEventCallback> &bundleEventCallback)
610 {
611     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
612     if (bundleEventCallback == nullptr) {
613         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The bundleEventCallback is nullptr");
614         return false;
615     }
616 
617     auto bundleMgr = Connect();
618     if (bundleMgr == nullptr) {
619         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
620         return false;
621     }
622 
623     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
624     return bundleMgr->UnregisterBundleEventCallback(bundleEventCallback);
625 }
626 
QueryExtensionAbilityInfoByUri(const std::string & uri,int32_t userId,ExtensionAbilityInfo & extensionAbilityInfo)627 bool BundleMgrHelper::QueryExtensionAbilityInfoByUri(
628     const std::string &uri, int32_t userId, ExtensionAbilityInfo &extensionAbilityInfo)
629 {
630     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
631     auto bundleMgr = Connect();
632     if (bundleMgr == nullptr) {
633         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
634         return false;
635     }
636 
637     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
638     return bundleMgr->QueryExtensionAbilityInfoByUri(uri, userId, extensionAbilityInfo);
639 }
640 
ImplicitQueryInfoByPriority(const Want & want,int32_t flags,int32_t userId,AbilityInfo & abilityInfo,ExtensionAbilityInfo & extensionInfo)641 bool BundleMgrHelper::ImplicitQueryInfoByPriority(
642     const Want &want, int32_t flags, int32_t userId, AbilityInfo &abilityInfo, ExtensionAbilityInfo &extensionInfo)
643 {
644     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
645     auto bundleMgr = Connect();
646     if (bundleMgr == nullptr) {
647         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
648         return false;
649     }
650     AAFwk::Want newWant = want;
651     newWant.RemoveAllFd();
652     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
653     return bundleMgr->ImplicitQueryInfoByPriority(newWant, flags, userId, abilityInfo, extensionInfo);
654 }
655 
QueryAbilityInfoByUri(const std::string & abilityUri,int32_t userId,AbilityInfo & abilityInfo)656 bool BundleMgrHelper::QueryAbilityInfoByUri(const std::string &abilityUri, int32_t userId, AbilityInfo &abilityInfo)
657 {
658     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
659     auto bundleMgr = Connect();
660     if (bundleMgr == nullptr) {
661         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
662         return false;
663     }
664 
665     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
666     return bundleMgr->QueryAbilityInfoByUri(abilityUri, userId, abilityInfo);
667 }
668 
QueryAbilityInfo(const Want & want,int32_t flags,int32_t userId,AbilityInfo & abilityInfo,const sptr<IRemoteObject> & callBack)669 bool BundleMgrHelper::QueryAbilityInfo(
670     const Want &want, int32_t flags, int32_t userId, AbilityInfo &abilityInfo, const sptr<IRemoteObject> &callBack)
671 {
672     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
673     auto bundleMgr = Connect();
674     if (bundleMgr == nullptr) {
675         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
676         return false;
677     }
678 
679     AAFwk::Want newWant = want;
680     newWant.RemoveAllFd();
681     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
682     return bundleMgr->QueryAbilityInfo(newWant, flags, userId, abilityInfo, callBack);
683 }
684 
UpgradeAtomicService(const Want & want,int32_t userId)685 void BundleMgrHelper::UpgradeAtomicService(const Want &want, int32_t userId)
686 {
687     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
688     auto bundleMgr = Connect();
689     if (bundleMgr == nullptr) {
690         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
691         return;
692     }
693 
694     AAFwk::Want newWant = want;
695     newWant.RemoveAllFd();
696     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
697     bundleMgr->UpgradeAtomicService(newWant, userId);
698 }
699 
ImplicitQueryInfos(const Want & want,int32_t flags,int32_t userId,bool withDefault,std::vector<AbilityInfo> & abilityInfos,std::vector<ExtensionAbilityInfo> & extensionInfos)700 bool BundleMgrHelper::ImplicitQueryInfos(const Want &want, int32_t flags, int32_t userId, bool withDefault,
701     std::vector<AbilityInfo> &abilityInfos, std::vector<ExtensionAbilityInfo> &extensionInfos)
702 {
703     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
704     auto bundleMgr = Connect();
705     if (bundleMgr == nullptr) {
706         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
707         return false;
708     }
709 
710     AAFwk::Want newWant = want;
711     newWant.RemoveAllFd();
712     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
713     bool findDefaultApp = false;
714     bool ret = bundleMgr->ImplicitQueryInfos(newWant, flags, userId, withDefault, abilityInfos,
715         extensionInfos, findDefaultApp);
716     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "findDefaultApp is %{public}d.", findDefaultApp);
717     return ret;
718 }
719 
CleanBundleDataFiles(const std::string & bundleName,int32_t userId,int32_t appCloneIndex)720 bool BundleMgrHelper::CleanBundleDataFiles(const std::string &bundleName, int32_t userId, int32_t appCloneIndex)
721 {
722     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
723     auto bundleMgr = Connect();
724     if (bundleMgr == nullptr) {
725         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
726         return false;
727     }
728 
729     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
730     return bundleMgr->CleanBundleDataFiles(bundleName, userId, appCloneIndex);
731 }
732 
QueryDataGroupInfos(const std::string & bundleName,int32_t userId,std::vector<DataGroupInfo> & infos)733 bool BundleMgrHelper::QueryDataGroupInfos(
734     const std::string &bundleName, int32_t userId, std::vector<DataGroupInfo> &infos)
735 {
736     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
737     auto bundleMgr = Connect();
738     if (bundleMgr == nullptr) {
739         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
740         return false;
741     }
742 
743     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
744     return bundleMgr->QueryDataGroupInfos(bundleName, userId, infos);
745 }
746 
RegisterBundleEventCallback(const sptr<IBundleEventCallback> & bundleEventCallback)747 bool BundleMgrHelper::RegisterBundleEventCallback(const sptr<IBundleEventCallback> &bundleEventCallback)
748 {
749     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
750     if (bundleEventCallback == nullptr) {
751         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The bundleEventCallback is nullptr");
752         return false;
753     }
754 
755     auto bundleMgr = Connect();
756     if (bundleMgr == nullptr) {
757         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
758         return false;
759     }
760 
761     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
762     return bundleMgr->RegisterBundleEventCallback(bundleEventCallback);
763 }
764 
GetHapModuleInfo(const AbilityInfo & abilityInfo,int32_t userId,HapModuleInfo & hapModuleInfo)765 bool BundleMgrHelper::GetHapModuleInfo(const AbilityInfo &abilityInfo, int32_t userId, HapModuleInfo &hapModuleInfo)
766 {
767     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
768     auto bundleMgr = Connect();
769     if (bundleMgr == nullptr) {
770         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
771         return false;
772     }
773 
774     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
775     return bundleMgr->GetHapModuleInfo(abilityInfo, userId, hapModuleInfo);
776 }
777 
QueryAppGalleryBundleName(std::string & bundleName)778 bool BundleMgrHelper::QueryAppGalleryBundleName(std::string &bundleName)
779 {
780     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
781     auto bundleMgr = Connect();
782     if (bundleMgr == nullptr) {
783         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
784         return false;
785     }
786 
787     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
788     return bundleMgr->QueryAppGalleryBundleName(bundleName);
789 }
790 
GetUidByBundleName(const std::string & bundleName,int32_t userId,int32_t appCloneIndex)791 ErrCode BundleMgrHelper::GetUidByBundleName(const std::string &bundleName, int32_t userId, int32_t appCloneIndex)
792 {
793     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
794     auto bundleMgr = Connect();
795     if (bundleMgr == nullptr) {
796         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
797         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
798     }
799 
800     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
801     return bundleMgr->GetUidByBundleName(bundleName, userId, appCloneIndex);
802 }
803 
QueryExtensionAbilityInfosOnlyWithTypeName(const std::string & extensionTypeName,const uint32_t flag,const int32_t userId,std::vector<ExtensionAbilityInfo> & extensionInfos)804 ErrCode BundleMgrHelper::QueryExtensionAbilityInfosOnlyWithTypeName(const std::string &extensionTypeName,
805     const uint32_t flag, const int32_t userId, std::vector<ExtensionAbilityInfo> &extensionInfos)
806 {
807     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
808     auto bundleMgr = Connect();
809     if (bundleMgr == nullptr) {
810         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
811         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
812     }
813 
814     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
815     return bundleMgr->QueryExtensionAbilityInfosOnlyWithTypeName(extensionTypeName, flag, userId, extensionInfos);
816 }
817 
GetDefaultAppProxy()818 sptr<IDefaultApp> BundleMgrHelper::GetDefaultAppProxy()
819 {
820     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
821     auto bundleMgr = Connect();
822     if (bundleMgr == nullptr) {
823         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
824         return nullptr;
825     }
826 
827     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
828     return bundleMgr->GetDefaultAppProxy();
829 }
830 
GetJsonProfile(ProfileType profileType,const std::string & bundleName,const std::string & moduleName,std::string & profile,int32_t userId)831 ErrCode BundleMgrHelper::GetJsonProfile(ProfileType profileType, const std::string &bundleName,
832     const std::string &moduleName, std::string &profile, int32_t userId)
833 {
834     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
835     auto bundleMgr = Connect();
836     if (bundleMgr == nullptr) {
837         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
838         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
839     }
840 
841     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
842     return bundleMgr->GetJsonProfile(profileType, bundleName, moduleName, profile, userId);
843 }
844 
GetLaunchWantForBundle(const std::string & bundleName,Want & want,int32_t userId)845 ErrCode BundleMgrHelper::GetLaunchWantForBundle(const std::string &bundleName, Want &want, int32_t userId)
846 {
847     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
848     auto bundleMgr = Connect();
849     if (bundleMgr == nullptr) {
850         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
851         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
852     }
853 
854     want.RemoveAllFd();
855     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
856     return bundleMgr->GetLaunchWantForBundle(bundleName, want, userId);
857 }
858 
QueryCloneAbilityInfo(const ElementName & element,int32_t flags,int32_t appCloneIndex,AbilityInfo & abilityInfo,int32_t userId)859 ErrCode BundleMgrHelper::QueryCloneAbilityInfo(const ElementName &element, int32_t flags, int32_t appCloneIndex,
860     AbilityInfo &abilityInfo, int32_t userId)
861 {
862     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
863     auto bundleMgr = Connect();
864     if (bundleMgr == nullptr) {
865         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
866         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
867     }
868 
869     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
870     return bundleMgr->QueryCloneAbilityInfo(element, flags, appCloneIndex, abilityInfo, userId);
871 }
872 
GetCloneBundleInfo(const std::string & bundleName,int32_t flags,int32_t appCloneIndex,BundleInfo & bundleInfo,int32_t userId)873 ErrCode BundleMgrHelper::GetCloneBundleInfo(const std::string &bundleName, int32_t flags, int32_t appCloneIndex,
874     BundleInfo &bundleInfo, int32_t userId)
875 {
876     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
877     auto bundleMgr = Connect();
878     if (bundleMgr == nullptr) {
879         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
880         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
881     }
882 
883     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
884     return bundleMgr->GetCloneBundleInfo(bundleName, flags, appCloneIndex, bundleInfo, userId);
885 }
886 
QueryCloneExtensionAbilityInfoWithAppIndex(const ElementName & element,int32_t flags,int32_t appCloneIndex,ExtensionAbilityInfo & extensionInfo,int32_t userId)887 ErrCode BundleMgrHelper::QueryCloneExtensionAbilityInfoWithAppIndex(const ElementName &element, int32_t flags,
888     int32_t appCloneIndex, ExtensionAbilityInfo &extensionInfo, int32_t userId)
889 {
890     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called");
891     auto bundleMgr = Connect();
892     if (bundleMgr == nullptr) {
893         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
894         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
895     }
896 
897     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
898     return bundleMgr->QueryCloneExtensionAbilityInfoWithAppIndex(element, flags, appCloneIndex, extensionInfo, userId);
899 }
900 
GetCloneAppIndexes(const std::string & bundleName,std::vector<int32_t> & appIndexes,int32_t userId)901 ErrCode BundleMgrHelper::GetCloneAppIndexes(const std::string &bundleName, std::vector<int32_t> &appIndexes,
902     int32_t userId)
903 {
904     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "Called");
905     auto bundleMgr = Connect();
906     if (bundleMgr == nullptr) {
907         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
908         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
909     }
910 
911     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
912     return bundleMgr->GetCloneAppIndexes(bundleName, appIndexes, userId);
913 }
914 
GetSignatureInfoByBundleName(const std::string & bundleName,SignatureInfo & signatureInfo)915 ErrCode BundleMgrHelper::GetSignatureInfoByBundleName(const std::string &bundleName, SignatureInfo &signatureInfo)
916 {
917     TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "Called");
918     auto bundleMgr = Connect();
919     if (bundleMgr == nullptr) {
920         TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect");
921         return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR;
922     }
923 
924     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
925     return bundleMgr->GetSignatureInfoByBundleName(bundleName, signatureInfo);
926 }
927 }  // namespace AppExecFwk
928 }  // namespace OHOS