• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 #ifndef FOUNDATION_APPEXECFWK_SERVICES_BUNDLEMGR_INCLUDE_INNER_BUNDLE_INFO_H
17 #define FOUNDATION_APPEXECFWK_SERVICES_BUNDLEMGR_INCLUDE_INNER_BUNDLE_INFO_H
18 
19 #include "nocopyable.h"
20 
21 #include "aot/aot_args.h"
22 #include "inner_app_quick_fix.h"
23 #include "inner_bundle_user_info.h"
24 #include "inner_common_info.h"
25 #include "property.h"
26 #include "quick_fix/app_quick_fix.h"
27 #include "quick_fix/hqf_info.h"
28 #include "shared/base_shared_bundle_info.h"
29 #include "shared/shared_bundle_info.h"
30 
31 namespace OHOS {
32 namespace AppExecFwk {
33 class InnerBundleInfo {
34 public:
35     enum class BundleStatus {
36         ENABLED = 1,
37         DISABLED,
38     };
39 
40     InnerBundleInfo();
41     InnerBundleInfo &operator=(const InnerBundleInfo &info);
42     ~InnerBundleInfo();
43 
44     void ToJson(nlohmann::json &jsonObject) const;
45     int32_t FromJson(const nlohmann::json &jsonObject);
46     bool AddModuleInfo(const InnerBundleInfo &newInfo);
47     void UpdateModuleInfo(const InnerBundleInfo &newInfo);
48     void RemoveModuleInfo(const std::string &modulePackage);
49     std::optional<HapModuleInfo> FindHapModuleInfo(
50         const std::string &modulePackage, int32_t userId = Constants::UNSPECIFIED_USERID) const;
51     void GetModuleWithHashValue(
52         int32_t flags, const std::string &modulePackage, HapModuleInfo &hapModuleInfo) const;
53     std::optional<AbilityInfo> FindAbilityInfo(
54         const std::string &moduleName,
55         const std::string &abilityName,
56         int32_t userId = Constants::UNSPECIFIED_USERID) const;
57     std::optional<AbilityInfo> FindAbilityInfoV9(
58         const std::string &moduleName, const std::string &abilityName) const;
59     ErrCode FindAbilityInfo(
60         const std::string &moduleName, const std::string &abilityName, AbilityInfo &info) const;
61     std::optional<std::vector<AbilityInfo>> FindAbilityInfos(
62         int32_t userId = Constants::UNSPECIFIED_USERID) const;
63     std::optional<ExtensionAbilityInfo> FindExtensionInfo(
64         const std::string &moduleName, const std::string &extensionName) const;
65     std::optional<std::vector<ExtensionAbilityInfo>> FindExtensionInfos() const;
66     std::string ToString() const;
AddModuleAbilityInfo(const std::map<std::string,AbilityInfo> & abilityInfos)67     void AddModuleAbilityInfo(const std::map<std::string, AbilityInfo> &abilityInfos)
68     {
69         for (const auto &ability : abilityInfos) {
70             baseAbilityInfos_.try_emplace(ability.first, ability.second);
71         }
72     }
73 
AddModuleExtensionInfos(const std::map<std::string,ExtensionAbilityInfo> & extensionInfos)74     void AddModuleExtensionInfos(const std::map<std::string, ExtensionAbilityInfo> &extensionInfos)
75     {
76         for (const auto &extensionInfo : extensionInfos) {
77             baseExtensionInfos_.try_emplace(extensionInfo.first, extensionInfo.second);
78         }
79     }
80 
AddModuleSkillInfo(const std::map<std::string,std::vector<Skill>> & skillInfos)81     void AddModuleSkillInfo(const std::map<std::string, std::vector<Skill>> &skillInfos)
82     {
83         for (const auto &skills : skillInfos) {
84             skillInfos_.try_emplace(skills.first, skills.second);
85         }
86     }
87 
AddModuleExtensionSkillInfos(const std::map<std::string,std::vector<Skill>> & extensionSkillInfos)88     void AddModuleExtensionSkillInfos(const std::map<std::string, std::vector<Skill>> &extensionSkillInfos)
89     {
90         for (const auto &skills : extensionSkillInfos) {
91             extensionSkillInfos_.try_emplace(skills.first, skills.second);
92         }
93     }
94 
AddModuleFormInfo(const std::map<std::string,std::vector<FormInfo>> & formInfos)95     void AddModuleFormInfo(const std::map<std::string, std::vector<FormInfo>> &formInfos)
96     {
97         for (const auto &forms : formInfos) {
98             formInfos_.try_emplace(forms.first, forms.second);
99         }
100     }
101 
AddModuleCommonEvent(const std::map<std::string,CommonEventInfo> & commonEvents)102     void AddModuleCommonEvent(const std::map<std::string, CommonEventInfo> &commonEvents)
103     {
104         for (const auto &commonEvent : commonEvents) {
105             commonEvents_.try_emplace(commonEvent.first, commonEvent.second);
106         }
107     }
108 
AddModuleShortcutInfo(const std::map<std::string,ShortcutInfo> & shortcutInfos)109     void AddModuleShortcutInfo(const std::map<std::string, ShortcutInfo> &shortcutInfos)
110     {
111         for (const auto &shortcut : shortcutInfos) {
112             shortcutInfos_.try_emplace(shortcut.first, shortcut.second);
113         }
114     }
115 
AddInnerModuleInfo(const std::map<std::string,InnerModuleInfo> & innerModuleInfos)116     void AddInnerModuleInfo(const std::map<std::string, InnerModuleInfo> &innerModuleInfos)
117     {
118         for (const auto &info : innerModuleInfos) {
119             innerModuleInfos_.try_emplace(info.first, info.second);
120         }
121     }
122 
123     void SetBundleInstallTime(
124         const int64_t time, int32_t userId = Constants::UNSPECIFIED_USERID);
125 
126     int64_t GetBundleInstallTime(int32_t userId = Constants::UNSPECIFIED_USERID) const
127     {
128         InnerBundleUserInfo innerBundleUserInfo;
129         if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) {
130             APP_LOGE("can not find userId %{public}d when GetBundleInstallTime", userId);
131             return -1;
132         }
133         return innerBundleUserInfo.installTime;
134     }
135 
136     void SetBundleUpdateTime(const int64_t time, int32_t userId = Constants::UNSPECIFIED_USERID);
137 
138     int64_t GetBundleUpdateTime(int32_t userId = Constants::UNSPECIFIED_USERID) const
139     {
140         InnerBundleUserInfo innerBundleUserInfo;
141         if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) {
142             APP_LOGE("can not find userId %{public}d when GetBundleUpdateTime", userId);
143             return -1;
144         }
145         return innerBundleUserInfo.updateTime;
146     }
147 
GetBaseBundleInfo()148     BundleInfo GetBaseBundleInfo() const
149     {
150         return *baseBundleInfo_;
151     }
152 
SetBaseBundleInfo(const BundleInfo & bundleInfo)153     void SetBaseBundleInfo(const BundleInfo &bundleInfo)
154     {
155         *baseBundleInfo_ = bundleInfo;
156     }
157 
158     void UpdateBaseBundleInfo(const BundleInfo &bundleInfo, bool isEntry);
159 
GetBaseApplicationInfo()160     ApplicationInfo GetBaseApplicationInfo() const
161     {
162         return *baseApplicationInfo_;
163     }
164 
SetBaseApplicationInfo(const ApplicationInfo & applicationInfo)165     void SetBaseApplicationInfo(const ApplicationInfo &applicationInfo)
166     {
167         *baseApplicationInfo_ = applicationInfo;
168     }
169 
170     void UpdateBaseApplicationInfo(const ApplicationInfo &applicationInfo, bool isEntry);
171 
172     bool GetApplicationEnabled(int32_t userId = Constants::UNSPECIFIED_USERID) const
173     {
174         InnerBundleUserInfo innerBundleUserInfo;
175         if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) {
176             APP_LOGD("can not find userId %{public}d when GetApplicationEnabled", userId);
177             return false;
178         }
179 
180         return innerBundleUserInfo.bundleUserInfo.enabled;
181     }
182 
GetApplicationEnabledV9(int32_t userId,bool & isEnabled)183     ErrCode GetApplicationEnabledV9(int32_t userId, bool &isEnabled) const
184     {
185         InnerBundleUserInfo innerBundleUserInfo;
186         if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) {
187             APP_LOGD("can not find bundleUserInfo in userId: %{public}d when GetApplicationEnabled", userId);
188             return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST;
189         }
190         isEnabled = innerBundleUserInfo.bundleUserInfo.enabled;
191         return ERR_OK;
192     }
193 
194     ErrCode SetApplicationEnabled(bool enabled, int32_t userId = Constants::UNSPECIFIED_USERID);
195 
InsertInnerModuleInfo(const std::string & modulePackage,const InnerModuleInfo & innerModuleInfo)196     void InsertInnerModuleInfo(const std::string &modulePackage, const InnerModuleInfo &innerModuleInfo)
197     {
198         innerModuleInfos_.try_emplace(modulePackage, innerModuleInfo);
199     }
200 
InsertAbilitiesInfo(const std::string & key,const AbilityInfo & abilityInfo)201     void InsertAbilitiesInfo(const std::string &key, const AbilityInfo &abilityInfo)
202     {
203         baseAbilityInfos_.emplace(key, abilityInfo);
204     }
205 
InsertExtensionInfo(const std::string & key,const ExtensionAbilityInfo & extensionInfo)206     void InsertExtensionInfo(const std::string &key, const ExtensionAbilityInfo &extensionInfo)
207     {
208         baseExtensionInfos_.emplace(key, extensionInfo);
209     }
210 
InsertSkillInfo(const std::string & key,const std::vector<Skill> & skills)211     void InsertSkillInfo(const std::string &key, const std::vector<Skill> &skills)
212     {
213         skillInfos_.emplace(key, skills);
214     }
215 
InsertExtensionSkillInfo(const std::string & key,const std::vector<Skill> & skills)216     void InsertExtensionSkillInfo(const std::string &key, const std::vector<Skill> &skills)
217     {
218         extensionSkillInfos_.emplace(key, skills);
219     }
220 
221     std::optional<AbilityInfo> FindAbilityInfoByUri(const std::string &abilityUri) const;
222     bool FindExtensionAbilityInfoByUri(
223         const std::string &uri, ExtensionAbilityInfo &extensionAbilityInfo) const;
224     void FindAbilityInfosByUri(const std::string &abilityUri,
225         std::vector<AbilityInfo> &abilityInfos,  int32_t userId = Constants::UNSPECIFIED_USERID);
226 
GetAbilityNames()227     auto GetAbilityNames() const
228     {
229         std::vector<std::string> abilityNames;
230         for (auto &ability : baseAbilityInfos_) {
231             abilityNames.emplace_back(ability.second.name);
232         }
233         return abilityNames;
234     }
235 
236     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(ApplicationName, baseApplicationInfo_, name, std::string);
237     BMS_DEFINE_PROPERTY(BundleStatus, bundleStatus_, BundleStatus);
238     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(BundleName, baseApplicationInfo_, bundleName, std::string);
239     BMS_DEFINE_PROPERTY_MEMBER_FILED(AppCodePath, baseApplicationInfo_, codePath, std::string);
240     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(VersionCode, baseBundleInfo_, versionCode, uint32_t);
241     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(VersionName, baseBundleInfo_, versionName, std::string);
242     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(Vendor, baseBundleInfo_, vendor, std::string);
243     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(CompatibleVersion, baseBundleInfo_, compatibleVersion, uint32_t);
244     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(TargetVersion, baseBundleInfo_, targetVersion, uint32_t);
245     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(ReleaseType, baseBundleInfo_, releaseType, std::string);
246     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(
247         MinCompatibleVersionCode, baseBundleInfo_, minCompatibleVersionCode, uint32_t);
248     BMS_DEFINE_PROPERTY_GET(InstallMark, mark_, InstallMark);
249     BMS_DEFINE_PROPERTY_MEMBER_FILED(AppDataDir, baseApplicationInfo_, dataDir, std::string);
250     BMS_DEFINE_PROPERTY_MEMBER_FILED_SET(AppDataBaseDir, baseApplicationInfo_, dataBaseDir, std::string);
251     BMS_DEFINE_PROPERTY_MEMBER_FILED_SET(AppCacheDir, baseApplicationInfo_, cacheDir, std::string);
252     BMS_DEFINE_PROPERTY_GET(AppType, appType_, Constants::AppType);
253     BMS_DEFINE_PROPERTY(UserId, userId_, int);
254     BMS_DEFINE_PROPERTY(CurrentModulePackage, currentPackage_, std::string);
255     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(IsKeepAlive, baseBundleInfo_, isKeepAlive, bool);
256     BMS_DEFINE_PROPERTY_MEMBER_FILED(IsFreeInstallApp, baseApplicationInfo_, isFreeInstallApp, bool);
257     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(AppId, baseBundleInfo_, appId, std::string);
258     BMS_DEFINE_PROPERTY(AppFeature, appFeature_, std::string);
259     BMS_DEFINE_PROPERTY_MEMBER_FILED_GET(
260         AppPrivilegeLevel, baseApplicationInfo_, appPrivilegeLevel, std::string);
261     BMS_DEFINE_PROPERTY_MEMBER_FILED(IsPreInstallApp, baseBundleInfo_, isPreInstallApp, bool);
262     BMS_DEFINE_PROPERTY(OnlyCreateBundleUser, onlyCreateBundleUser_, bool);
263     BMS_DEFINE_PROPERTY(IsNewVersion, isNewVersion_, bool);
264     BMS_DEFINE_PROPERTY_MEMBER_FILED(AsanEnabled, baseApplicationInfo_, asanEnabled, bool);
265     BMS_DEFINE_PROPERTY_GET(AllowedAcls, allowedAcls_, std::vector<std::string>);
266     BMS_DEFINE_PROPERTY(AppIndex, appIndex_, int32_t);
267     BMS_DEFINE_PROPERTY(IsSandbox, isSandboxApp_, bool);
268     BMS_DEFINE_PROPERTY_MEMBER_FILED(
269         CertificateFingerprint, baseApplicationInfo_, fingerprint, std::string);
270     BMS_DEFINE_PROPERTY_MEMBER_FILED(
271         NativeLibraryPath, baseApplicationInfo_, nativeLibraryPath, std::string);
272     BMS_DEFINE_PROPERTY_MEMBER_FILED(
273         ArkNativeFileAbi, baseApplicationInfo_, arkNativeFileAbi, std::string);
274     BMS_DEFINE_PROPERTY_MEMBER_FILED(
275         ArkNativeFilePath, baseApplicationInfo_, arkNativeFilePath, std::string);
276     BMS_DEFINE_PROPERTY_MEMBER_FILED(CpuAbi, baseApplicationInfo_, cpuAbi, std::string);
277     BMS_DEFINE_PROPERTY_MEMBER_FILED(Removable, baseApplicationInfo_, removable, bool);
278     BMS_DEFINE_PROPERTY_MEMBER_FILED_SET(
279         RunningResourcesApply, baseApplicationInfo_, runningResourcesApply, bool);
280     BMS_DEFINE_PROPERTY_MEMBER_FILED_SET(AssociatedWakeUp, baseApplicationInfo_, associatedWakeUp, bool);
281     BMS_DEFINE_PROPERTY_MEMBER_FILED_SET(UserDataClearable, baseApplicationInfo_, userDataClearable, bool);
282     BMS_DEFINE_PROPERTY_MEMBER_FILED_SET(FormVisibleNotify, baseApplicationInfo_, formVisibleNotify, bool);
283     BMS_DEFINE_PROPERTY_GET(OverlayBundleInfo, overlayBundleInfo_, std::vector<OverlayBundleInfo>);
284     BMS_DEFINE_PROPERTY_MEMBER_FILED(TargetBundleName, baseApplicationInfo_, targetBundleName, std::string);
285     BMS_DEFINE_PROPERTY_MEMBER_FILED(TargetPriority, baseApplicationInfo_, targetPriority, int32_t);
286     BMS_DEFINE_PROPERTY_MEMBER_FILED(OverlayState, baseApplicationInfo_, overlayState, int32_t);
287     BMS_DEFINE_PROPERTY(OverlayType, overlayType_, int32_t);
288     BMS_DEFINE_PROPERTY_MEMBER_FILED(AsanLogPath, baseApplicationInfo_, asanLogPath, std::string);
289     BMS_DEFINE_PROPERTY_MEMBER_FILED(ApplicationBundleType, baseApplicationInfo_, bundleType, BundleType);
290     BMS_DEFINE_PROPERTY(AppProvisionMetadata, provisionMetadatas_, std::vector<Metadata>);
291     BMS_DEFINE_PROPERTY_MEMBER_FILED(GwpAsanEnabled, baseApplicationInfo_, gwpAsanEnabled, bool);
292     BMS_DEFINE_PROPERTY_MEMBER_FILED(
293         ApplicationReservedFlag, baseApplicationInfo_, applicationReservedFlag, uint32_t);
294 
SetInstallMark(const std::string & bundleName,const std::string & packageName,const InstallExceptionStatus & status)295     void SetInstallMark(const std::string &bundleName, const std::string &packageName,
296         const InstallExceptionStatus &status)
297     {
298         mark_.bundleName = bundleName;
299         mark_.packageName = packageName;
300         mark_.status = status;
301     }
302 
303     int GetUid(int32_t userId = Constants::UNSPECIFIED_USERID) const
304     {
305         InnerBundleUserInfo innerBundleUserInfo;
306         if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) {
307             return Constants::INVALID_UID;
308         }
309 
310         return innerBundleUserInfo.uid;
311     }
312 
313     int GetGid(int32_t userId = Constants::UNSPECIFIED_USERID) const
314     {
315         InnerBundleUserInfo innerBundleUserInfo;
316         if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) {
317             return Constants::INVALID_GID;
318         }
319 
320         if (innerBundleUserInfo.gids.empty()) {
321             return Constants::INVALID_GID;
322         }
323 
324         return innerBundleUserInfo.gids[0];
325     }
326 
SetAppType(Constants::AppType appType)327     void SetAppType(Constants::AppType appType)
328     {
329         appType_ = appType;
330         if (appType_ == Constants::AppType::SYSTEM_APP) {
331             baseApplicationInfo_->isSystemApp = true;
332         } else {
333             baseApplicationInfo_->isSystemApp = false;
334         }
335     }
336 
AddModuleSrcDir(const std::string & moduleSrcDir)337     void AddModuleSrcDir(const std::string &moduleSrcDir)
338     {
339         if (innerModuleInfos_.count(currentPackage_) == 1) {
340             innerModuleInfos_.at(currentPackage_).modulePath = moduleSrcDir;
341         }
342     }
AddModuleDataDir(const std::string & moduleDataDir)343     void AddModuleDataDir(const std::string &moduleDataDir)
344     {
345         if (innerModuleInfos_.count(currentPackage_) == 1) {
346             innerModuleInfos_.at(currentPackage_).moduleDataDir = moduleDataDir;
347         }
348     }
349 
AddModuleResPath(const std::string & moduleSrcDir)350     void AddModuleResPath(const std::string &moduleSrcDir)
351     {
352         if (innerModuleInfos_.count(currentPackage_) == 1) {
353             std::string moduleResPath;
354             if (isNewVersion_) {
355                 moduleResPath = moduleSrcDir + Constants::PATH_SEPARATOR + Constants::RESOURCES_INDEX;
356             } else {
357                 moduleResPath = moduleSrcDir + Constants::PATH_SEPARATOR + Constants::ASSETS_DIR +
358                     Constants::PATH_SEPARATOR +innerModuleInfos_.at(currentPackage_).distro.moduleName +
359                     Constants::PATH_SEPARATOR + Constants::RESOURCES_INDEX;
360             }
361 
362             innerModuleInfos_.at(currentPackage_).moduleResPath = moduleResPath;
363             for (auto &abilityInfo : baseAbilityInfos_) {
364                 abilityInfo.second.resourcePath = moduleResPath;
365             }
366             for (auto &extensionInfo : baseExtensionInfos_) {
367                 extensionInfo.second.resourcePath = moduleResPath;
368             }
369         }
370     }
371 
372     void SetModuleHapPath(const std::string &hapPath);
GetModuleHapPath(const std::string & modulePackage)373     const std::string &GetModuleHapPath(const std::string &modulePackage) const
374     {
375         if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) {
376             return innerModuleInfos_.at(modulePackage).hapPath;
377         }
378 
379         return Constants::EMPTY_STRING;
380     }
381 
GetModuleName(const std::string & modulePackage)382     const std::string &GetModuleName(const std::string &modulePackage) const
383     {
384         if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) {
385             return innerModuleInfos_.at(modulePackage).moduleName;
386         }
387 
388         return Constants::EMPTY_STRING;
389     }
390 
391     const std::string &GetCurModuleName() const;
392 
GetDefinePermissions()393     std::vector<DefinePermission> GetDefinePermissions() const
394     {
395         std::vector<DefinePermission> definePermissions;
396         if (innerModuleInfos_.count(currentPackage_) == 1) {
397             definePermissions = innerModuleInfos_.at(currentPackage_).definePermissions;
398         }
399         return definePermissions;
400     }
401 
GetRequestPermissions()402     std::vector<RequestPermission> GetRequestPermissions() const
403     {
404         std::vector<RequestPermission> requestPermissions;
405         if (innerModuleInfos_.count(currentPackage_) == 1) {
406             requestPermissions = innerModuleInfos_.at(currentPackage_).requestPermissions;
407         }
408         return requestPermissions;
409     }
410 
411     std::vector<DefinePermission> GetAllDefinePermissions() const;
412 
413     std::vector<RequestPermission> GetAllRequestPermissions() const;
414 
FindModule(std::string modulePackage)415     bool FindModule(std::string modulePackage) const
416     {
417         return (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end());
418     }
419 
IsEntryModule(std::string modulePackage)420     bool IsEntryModule(std::string modulePackage) const
421     {
422         if (FindModule(modulePackage)) {
423             return innerModuleInfos_.at(modulePackage).isEntry;
424         }
425         return false;
426     }
427 
428     std::string GetEntryModuleName() const;
429 
430     std::string GetMainAbility() const;
431 
432     void GetMainAbilityInfo(AbilityInfo &abilityInfo) const;
433 
GetModuleDir(std::string modulePackage)434     std::string GetModuleDir(std::string modulePackage) const
435     {
436         if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) {
437             return innerModuleInfos_.at(modulePackage).modulePath;
438         }
439         return Constants::EMPTY_STRING;
440     }
441 
GetModuleDataDir(std::string modulePackage)442     std::string GetModuleDataDir(std::string modulePackage) const
443     {
444         if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) {
445             return innerModuleInfos_.at(modulePackage).moduleDataDir;
446         }
447         return Constants::EMPTY_STRING;
448     }
449 
IsDisabled()450     bool IsDisabled() const
451     {
452         return (bundleStatus_ == BundleStatus::DISABLED);
453     }
454 
IsEnabled()455     bool IsEnabled() const
456     {
457         return (bundleStatus_ == BundleStatus::ENABLED);
458     }
459 
IsOnlyModule(const std::string & modulePackage)460     bool IsOnlyModule(const std::string &modulePackage)
461     {
462         if ((innerModuleInfos_.size() == 1) && (innerModuleInfos_.count(modulePackage) == 1)) {
463             return true;
464         }
465         return false;
466     }
467 
SetProvisionId(const std::string & provisionId)468     void SetProvisionId(const std::string &provisionId)
469     {
470         baseBundleInfo_->appId = baseBundleInfo_->name + Constants::FILE_UNDERLINE + provisionId;
471     }
472 
GetProvisionId()473     std::string GetProvisionId() const
474     {
475         if (!baseBundleInfo_->appId.empty()) {
476             return baseBundleInfo_->appId.substr(baseBundleInfo_->name.size() + 1);
477         }
478         return "";
479     }
480 
SetAppPrivilegeLevel(const std::string & appPrivilegeLevel)481     void SetAppPrivilegeLevel(const std::string &appPrivilegeLevel)
482     {
483         if (appPrivilegeLevel.empty()) {
484             return;
485         }
486         baseApplicationInfo_->appPrivilegeLevel = appPrivilegeLevel;
487     }
488 
489     bool HasEntry() const;
490 
InsertFormInfos(const std::string & keyName,const std::vector<FormInfo> & formInfos)491     void InsertFormInfos(const std::string &keyName, const std::vector<FormInfo> &formInfos)
492     {
493         formInfos_.emplace(keyName, formInfos);
494     }
495 
InsertCommonEvents(const std::string & keyName,const CommonEventInfo & commonEvents)496     void InsertCommonEvents(const std::string &keyName, const CommonEventInfo &commonEvents)
497     {
498         commonEvents_.emplace(keyName, commonEvents);
499     }
500 
InsertShortcutInfos(const std::string & keyName,const ShortcutInfo & shortcutInfos)501     void InsertShortcutInfos(const std::string &keyName, const ShortcutInfo &shortcutInfos)
502     {
503         shortcutInfos_.emplace(keyName, shortcutInfos);
504     }
505     // use for new Info in updating progress
RestoreFromOldInfo(const InnerBundleInfo & oldInfo)506     void RestoreFromOldInfo(const InnerBundleInfo &oldInfo)
507     {
508         SetAppCodePath(oldInfo.GetAppCodePath());
509     }
RestoreModuleInfo(const InnerBundleInfo & oldInfo)510     void RestoreModuleInfo(const InnerBundleInfo &oldInfo)
511     {
512         if (oldInfo.FindModule(currentPackage_)) {
513             innerModuleInfos_.at(currentPackage_).moduleDataDir = oldInfo.GetModuleDataDir(currentPackage_);
514         }
515     }
516 
SetModuleHashValue(const std::string & hashValue)517     void SetModuleHashValue(const std::string &hashValue)
518     {
519         if (innerModuleInfos_.count(currentPackage_) == 1) {
520             innerModuleInfos_.at(currentPackage_).hashValue = hashValue;
521         }
522     }
523 
SetModuleCpuAbi(const std::string & cpuAbi)524     void SetModuleCpuAbi(const std::string &cpuAbi)
525     {
526         if (innerModuleInfos_.count(currentPackage_) == 1) {
527             innerModuleInfos_.at(currentPackage_).cpuAbi = cpuAbi;
528         }
529     }
530 
SetModuleNativeLibraryPath(const std::string & nativeLibraryPath)531     void SetModuleNativeLibraryPath(const std::string &nativeLibraryPath)
532     {
533         if (innerModuleInfos_.count(currentPackage_) == 1) {
534             innerModuleInfos_.at(currentPackage_).nativeLibraryPath = nativeLibraryPath;
535         }
536     }
537 
538     ErrCode SetAbilityEnabled(
539         const std::string &moduleName,
540         const std::string &abilityName,
541         bool isEnabled,
542         int32_t userId);
543     ErrCode SetModuleUpgradeFlag(std::string moduleName, int32_t upgradeFlag);
544     int32_t GetModuleUpgradeFlag(std::string moduleName) const;
545     void GetApplicationInfo(int32_t flags, int32_t userId, ApplicationInfo &appInfo) const;
546     ErrCode GetApplicationInfoV9(int32_t flags, int32_t userId, ApplicationInfo &appInfo) const;
547     bool GetBundleInfo(int32_t flags, BundleInfo &bundleInfo, int32_t userId = Constants::UNSPECIFIED_USERID) const;
548     ErrCode GetBundleInfoV9(int32_t flags,
549         BundleInfo &bundleInfo, int32_t userId = Constants::UNSPECIFIED_USERID) const;
550     bool CheckSpecialMetaData(const std::string &metaData) const;
551     void GetFormsInfoByModule(const std::string &moduleName, std::vector<FormInfo> &formInfos) const;
552     void GetFormsInfoByApp(std::vector<FormInfo> &formInfos) const;
553     void GetShortcutInfos(std::vector<ShortcutInfo> &shortcutInfos) const;
554     void GetCommonEvents(const std::string &eventKey, std::vector<CommonEventInfo> &commonEvents) const;
555     std::optional<InnerModuleInfo> GetInnerModuleInfoByModuleName(const std::string &moduleName) const;
556     void GetModuleNames(std::vector<std::string> &moduleNames) const;
GetInnerModuleInfos()557     const std::map<std::string, InnerModuleInfo> &GetInnerModuleInfos() const
558     {
559         return innerModuleInfos_;
560     }
561 
FetchInnerModuleInfos()562     std::map<std::string, InnerModuleInfo> &FetchInnerModuleInfos()
563     {
564         return innerModuleInfos_;
565     }
566 
FetchAbilityInfos()567     std::map<std::string, AbilityInfo> &FetchAbilityInfos()
568     {
569         return baseAbilityInfos_;
570     }
571 
GetInnerAbilityInfos()572     const std::map<std::string, AbilityInfo> &GetInnerAbilityInfos() const
573     {
574         return baseAbilityInfos_;
575     }
576 
GetInnerSkillInfos()577     const std::map<std::string, std::vector<Skill>> &GetInnerSkillInfos() const
578     {
579         return skillInfos_;
580     }
581 
FetchInnerExtensionInfos()582     std::map<std::string, ExtensionAbilityInfo> &FetchInnerExtensionInfos()
583     {
584         return baseExtensionInfos_;
585     }
586 
GetInnerExtensionInfos()587     const std::map<std::string, ExtensionAbilityInfo> &GetInnerExtensionInfos() const
588     {
589         return baseExtensionInfos_;
590     }
591 
GetExtensionSkillInfos()592     const std::map<std::string, std::vector<Skill>> &GetExtensionSkillInfos() const
593     {
594         return  extensionSkillInfos_;
595     }
596 
IsSystemApp()597     bool IsSystemApp() const
598     {
599         return baseApplicationInfo_->isSystemApp;
600     }
601 
GetInnerBundleUserInfos()602     const std::map<std::string, InnerBundleUserInfo>& GetInnerBundleUserInfos() const
603     {
604         return innerBundleUserInfos_;
605     }
606 
607     void ResetBundleState(int32_t userId);
608     void RemoveInnerBundleUserInfo(int32_t userId);
609     void AddInnerBundleUserInfo(const InnerBundleUserInfo& userInfo);
610     bool GetInnerBundleUserInfo(int32_t userId, InnerBundleUserInfo& userInfo) const;
611     bool HasInnerBundleUserInfo(int32_t userId) const;
612     int32_t GetResponseUserId(int32_t requestUserId) const;
IsSingleton()613     bool IsSingleton() const
614     {
615         return baseApplicationInfo_->singleton;
616     }
617 
GetModuleNameVec()618     std::vector<std::string> GetModuleNameVec() const
619     {
620         std::vector<std::string> moduleVec;
621         for (const auto &it : innerModuleInfos_) {
622             moduleVec.emplace_back(it.first);
623         }
624         return moduleVec;
625     }
626 
GetAccessTokenId(const int32_t userId)627     uint32_t GetAccessTokenId(const int32_t userId) const
628     {
629         InnerBundleUserInfo userInfo;
630         if (GetInnerBundleUserInfo(userId, userInfo)) {
631             return userInfo.accessTokenId;
632         }
633         return 0;
634     }
635 
636     void SetAccessTokenId(uint32_t accessToken, const int32_t userId);
GetAccessTokenIdEx(const int32_t userId)637     uint64_t GetAccessTokenIdEx(const int32_t userId) const
638     {
639         InnerBundleUserInfo userInfo;
640         if (GetInnerBundleUserInfo(userId, userInfo)) {
641             return userInfo.accessTokenIdEx;
642         }
643         return 0;
644     }
645 
646     void SetAccessTokenIdEx(
647         const Security::AccessToken::AccessTokenIDEx accessTokenIdEx, const int32_t userId);
648 
SetAllowedAcls(const std::vector<std::string> & allowedAcls)649     void SetAllowedAcls(const std::vector<std::string> &allowedAcls)
650     {
651         allowedAcls_.clear();
652         for (const auto &acl : allowedAcls) {
653             if (!acl.empty()) {
654                 allowedAcls_.emplace_back(acl);
655             }
656         }
657     }
658 
659     bool IsAbilityEnabled(const AbilityInfo &abilityInfo, int32_t userId) const;
660     ErrCode IsAbilityEnabledV9(const AbilityInfo &abilityInfo, int32_t userId, bool &isEnable) const;
661 
662     bool GetDependentModuleNames(const std::string &moduleName, std::vector<std::string> &dependentModuleNames) const;
663     bool GetAllDependentModuleNames(const std::string &moduleName,
664         std::vector<std::string> &dependentModuleNames) const;
665     bool IsBundleRemovable() const;
666     bool GetRemovableModules(std::vector<std::string> &moduleToDelete) const;
667     bool GetFreeInstallModules(std::vector<std::string> &freeInstallModule) const;
668     bool IsUserExistModule(const std::string &moduleName, int32_t userId) const;
669     ErrCode IsModuleRemovable(const std::string &moduleName, int32_t userId, bool &isRemovable) const;
670     bool AddModuleRemovableInfo(InnerModuleInfo &info, const std::string &stringUserId, bool isEnable) const;
671     bool SetModuleRemovable(const std::string &moduleName, bool isEnable, int32_t userId);
672     void DeleteModuleRemovable(const std::string &moduleName, int32_t userId);
673     void DeleteModuleRemovableInfo(InnerModuleInfo &info, const std::string &stringUserId);
SetEntryInstallationFree(bool installationFree)674     void SetEntryInstallationFree(bool installationFree)
675     {
676         baseBundleInfo_->entryInstallationFree = installationFree;
677         if (installationFree) {
678             baseApplicationInfo_->needAppDetail = false;
679             baseApplicationInfo_->appDetailAbilityLibraryPath = Constants::EMPTY_STRING;
680         }
681     }
682 
GetEntryInstallationFree()683     bool GetEntryInstallationFree() const
684     {
685         return baseBundleInfo_->entryInstallationFree;
686     }
687 
SetBundlePackInfo(const BundlePackInfo & bundlePackInfo)688     void SetBundlePackInfo(const BundlePackInfo &bundlePackInfo)
689     {
690         *bundlePackInfo_ = bundlePackInfo;
691     }
692 
GetBundlePackInfo()693     BundlePackInfo GetBundlePackInfo() const
694     {
695         return *bundlePackInfo_;
696     }
697 
CleanInnerBundleUserInfos()698     void CleanInnerBundleUserInfos()
699     {
700         innerBundleUserInfos_.clear();
701     }
702 
SetKeepAlive(bool keepAlive)703     void SetKeepAlive(bool keepAlive)
704     {
705         baseApplicationInfo_->keepAlive = keepAlive;
706         baseBundleInfo_->isKeepAlive = keepAlive;
707     }
708 
SetSingleton(bool singleton)709     void SetSingleton(bool singleton)
710     {
711         baseApplicationInfo_->singleton = singleton;
712         baseBundleInfo_->singleton = singleton;
713     }
714 
SetHideDesktopIcon(bool hideDesktopIcon)715     void SetHideDesktopIcon(bool hideDesktopIcon)
716     {
717         baseApplicationInfo_->hideDesktopIcon = hideDesktopIcon;
718         if (hideDesktopIcon) {
719             baseApplicationInfo_->needAppDetail = false;
720             baseApplicationInfo_->appDetailAbilityLibraryPath = Constants::EMPTY_STRING;
721         }
722     }
723 
SetAllowCommonEvent(const std::vector<std::string> & allowCommonEvent)724     void SetAllowCommonEvent(const std::vector<std::string> &allowCommonEvent)
725     {
726         baseApplicationInfo_->allowCommonEvent.clear();
727         for (const auto &event : allowCommonEvent) {
728             baseApplicationInfo_->allowCommonEvent.emplace_back(event);
729         }
730     }
731 
AddOverlayBundleInfo(const OverlayBundleInfo & overlayBundleInfo)732     void AddOverlayBundleInfo(const OverlayBundleInfo &overlayBundleInfo)
733     {
734         auto iterator = std::find_if(overlayBundleInfo_.begin(), overlayBundleInfo_.end(),
735             [&overlayBundleInfo](const auto &overlayInfo) {
736                 return overlayInfo.bundleName == overlayBundleInfo.bundleName;
737         });
738         if (iterator != overlayBundleInfo_.end()) {
739             overlayBundleInfo_.erase(iterator);
740         }
741         overlayBundleInfo_.emplace_back(overlayBundleInfo);
742     }
743 
RemoveOverLayBundleInfo(const std::string & bundleName)744     void RemoveOverLayBundleInfo(const std::string &bundleName)
745     {
746         auto iterator = std::find_if(overlayBundleInfo_.begin(), overlayBundleInfo_.end(),
747             [&bundleName](const auto &overlayInfo) {
748                 return overlayInfo.bundleName == bundleName;
749         });
750         if (iterator != overlayBundleInfo_.end()) {
751             overlayBundleInfo_.erase(iterator);
752         }
753     }
754 
CleanOverLayBundleInfo()755     void CleanOverLayBundleInfo()
756     {
757         overlayBundleInfo_.clear();
758     }
759 
760     void AddOverlayModuleInfo(const OverlayModuleInfo &overlayModuleInfo);
761     void RemoveOverlayModuleInfo(const std::string &targetModuleName,
762         const std::string &bundleName, const std::string &moduleName);
763     void RemoveAllOverlayModuleInfo(const std::string &bundleName);
764     void CleanAllOverlayModuleInfo();
765     bool isOverlayModule(const std::string &moduleName) const;
766     bool isExistedOverlayModule() const;
767     void KeepOldOverlayConnection(InnerBundleInfo &info);
768 
SetInnerModuleAtomicPreload(const std::string & moduleName,const std::vector<std::string> & preloads)769     bool SetInnerModuleAtomicPreload(const std::string &moduleName, const std::vector<std::string> &preloads)
770     {
771         if (innerModuleInfos_.find(moduleName) == innerModuleInfos_.end()) {
772             APP_LOGE("innerBundleInfo does not contain the module.");
773             return false;
774         }
775         innerModuleInfos_.at(moduleName).preloads = preloads;
776         return true;
777     }
778 
GetInnerSharedModuleInfos()779     const std::map<std::string, std::vector<InnerModuleInfo>> &GetInnerSharedModuleInfos() const
780     {
781         return innerSharedModuleInfos_;
782     }
783 
GetDependencies()784     std::vector<Dependency> GetDependencies() const
785     {
786         std::vector<Dependency> dependenciesList;
787         for (auto it = innerModuleInfos_.begin(); it != innerModuleInfos_.end(); it++) {
788             for (const auto &item : it->second.dependencies) {
789                 dependenciesList.emplace_back(item);
790             }
791         }
792         return dependenciesList;
793     }
794 
GetAllHspModuleNamesForVersion(uint32_t versionCode)795     std::vector<std::string> GetAllHspModuleNamesForVersion(uint32_t versionCode) const
796     {
797         std::vector<std::string> hspModuleNames;
798         for (const auto &[moduleName, modules] : innerSharedModuleInfos_) {
799             for (const auto &item : modules) {
800                 if (item.versionCode == versionCode) {
801                     hspModuleNames.emplace_back(moduleName);
802                 }
803             }
804         }
805         return hspModuleNames;
806     }
807 
GetModuleBuildHash(const std::string & moduleName,std::string & buildHash)808     bool GetModuleBuildHash(const std::string &moduleName, std::string &buildHash) const
809     {
810         if (innerModuleInfos_.find(moduleName) == innerModuleInfos_.end()) {
811             APP_LOGE("innerBundleInfo does not contain the module.");
812             return false;
813         }
814         buildHash = innerModuleInfos_.at(moduleName).buildHash;
815         return true;
816     }
817 
GetDataGroupInfos()818     const std::unordered_map<std::string, std::vector<DataGroupInfo>> GetDataGroupInfos() const
819     {
820         return dataGroupInfos_;
821     }
822 
823     void AddDataGroupInfo(const std::string &dataGroupId, const DataGroupInfo &info);
824     void RemoveGroupInfos(int32_t userId, const std::string &dataGroupId);
825     void UpdateDataGroupInfos(
826         const std::unordered_map<std::string, std::vector<DataGroupInfo>> &dataGroupInfos);
827 
ClearApplicationReservedFlag(uint32_t flag)828     void ClearApplicationReservedFlag(uint32_t flag)
829     {
830         baseApplicationInfo_->applicationReservedFlag &= ~flag;
831     }
832 
833     void SetAppDistributionType(const std::string &appDistributionType);
834     std::string GetAppDistributionType() const;
835     void SetAppProvisionType(const std::string &appProvisionType);
836     std::string GetAppProvisionType() const;
837 
838     void SetAppCrowdtestDeadline(int64_t crowdtestDeadline);
839     int64_t GetAppCrowdtestDeadline() const;
840 
841     std::vector<std::string> GetDistroModuleName() const;
842     std::string GetModuleNameByPackage(const std::string &packageName) const;
843     std::string GetModuleTypeByPackage(const std::string &packageName) const;
844 
845     AppQuickFix GetAppQuickFix() const;
846     void SetAppQuickFix(const AppQuickFix &appQuickFix);
847     std::vector<HqfInfo> GetQuickFixHqfInfos() const;
848     void SetQuickFixHqfInfos(const std::vector<HqfInfo> &hqfInfos);
849 
850     void UpdatePrivilegeCapability(const ApplicationInfo &applicationInfo);
851     void UpdateRemovable(bool isPreInstall, bool removable);
852     bool FetchNativeSoAttrs(
853         const std::string &requestPackage, std::string &cpuAbi, std::string &nativeLibraryPath) const;
854     void UpdateNativeLibAttrs(const ApplicationInfo &applicationInfo);
855     void UpdateArkNativeAttrs(const ApplicationInfo &applicationInfo);
856     bool IsLibIsolated(const std::string &moduleName) const;
857     std::vector<std::string> GetDeviceType(const std::string &packageName) const;
858     int64_t GetLastInstallationTime() const;
859     void UpdateAppDetailAbilityAttrs();
860     bool IsHideDesktopIcon() const;
861     void AddApplyQuickFixFrequency();
862     int32_t GetApplyQuickFixFrequency() const;
863     void ResetApplyQuickFixFrequency();
864 
865     bool GetOverlayModuleState(const std::string &moduleName, int32_t userId, int32_t &state) const;
866     void SetOverlayModuleState(const std::string &moduleName, int32_t state, int32_t userId);
867     void SetOverlayModuleState(const std::string &moduleName, int32_t state);
868     void ClearOverlayModuleStates(const std::string &moduleName);
869 
870     bool GetBaseSharedBundleInfo(const std::string &moduleName, uint32_t versionCode,
871         BaseSharedBundleInfo &baseSharedBundleInfo) const;
872     bool GetMaxVerBaseSharedBundleInfo(const std::string &moduleName,
873         BaseSharedBundleInfo &baseSharedBundleInfo) const;
874     void InsertInnerSharedModuleInfo(const std::string &moduleName, const InnerModuleInfo &innerModuleInfo);
875     void SetSharedModuleNativeLibraryPath(const std::string &nativeLibraryPath);
876     bool GetSharedBundleInfo(SharedBundleInfo &sharedBundleInfo) const;
877     bool GetSharedDependencies(const std::string &moduleName, std::vector<Dependency> &dependencies) const;
878     bool GetAllSharedDependencies(const std::string &moduleName, std::vector<Dependency> &dependencies) const;
879     std::vector<uint32_t> GetAllHspVersion() const;
880     void DeleteHspModuleByVersion(int32_t versionCode);
881     bool GetSharedBundleInfo(int32_t flags, BundleInfo &bundleInfo) const;
882     ErrCode GetProxyDataInfos(const std::string &moduleName, std::vector<ProxyData> &proxyDatas) const;
883     void GetAllProxyDataInfos(std::vector<ProxyData> &proxyDatas) const;
884     bool IsCompressNativeLibs(const std::string &moduleName) const;
885     void SetNativeLibraryFileNames(const std::string &moduleName, const std::vector<std::string> &fileNames);
886     void UpdateSharedModuleInfo();
887     AOTCompileStatus GetAOTCompileStatus(const std::string &moduleName) const;
888     void SetAOTCompileStatus(const std::string &moduleName, AOTCompileStatus aotCompileStatus);
889     void ResetAOTFlags();
890     ErrCode ResetAOTCompileStatus(const std::string &moduleName);
891     void GetInternalDependentHspInfo(const std::string &moduleName, std::vector<HspInfo> &hspInfoVector) const;
892     ErrCode SetExtName(const std::string &moduleName, const std::string &abilityName, const std::string extName);
893     ErrCode SetMimeType(const std::string &moduleName, const std::string &abilityName, const std::string mimeType);
894     ErrCode DelExtName(const std::string &moduleName, const std::string &abilityName, const std::string extName);
895     ErrCode DelMimeType(const std::string &moduleName, const std::string &abilityName, const std::string extName);
896     void SetResourcesApply(const std::vector<int32_t> &resourcesApply);
897     void SetAppIdentifier(const std::string &appIdentifier);
898     std::string GetAppIdentifier() const;
899     void AddOldAppId(const std::string &appId);
900     std::vector<std::string> GetOldAppIds() const;
901     void SetMoudleIsEncrpted(const std::string &packageName, bool isEncrypted);
902     bool IsEncryptedMoudle(const std::string &packageName) const;
903     bool IsContainEncryptedModule() const;
904     void UpdateDebug(bool debug, bool isEntry);
905     ErrCode GetAppServiceHspInfo(BundleInfo &bundleInfo) const;
906 
907 private:
908     bool IsExistLauncherAbility() const;
909     void GetBundleWithAbilities(
910         int32_t flags, BundleInfo &bundleInfo, int32_t userId = Constants::UNSPECIFIED_USERID) const;
911     void GetBundleWithExtension(
912         int32_t flags, BundleInfo &bundleInfo, int32_t userId = Constants::UNSPECIFIED_USERID) const;
913     void RemoveDuplicateName(std::vector<std::string> &name) const;
914     void GetBundleWithReqPermissionsV9(int32_t flags, int32_t userId, BundleInfo &bundleInfo) const;
915     void ProcessBundleFlags(int32_t flags, int32_t userId, BundleInfo &bundleInfo) const;
916     void ProcessBundleWithHapModuleInfoFlag(int32_t flags, BundleInfo &bundleInfo, int32_t userId) const;
917     void GetBundleWithAbilitiesV9(int32_t flags, HapModuleInfo &hapModuleInfo, int32_t userId) const;
918     void GetBundleWithExtensionAbilitiesV9(int32_t flags, HapModuleInfo &hapModuleInfo) const;
919     IsolationMode GetIsolationMode(const std::string &isolationMode) const;
920     void UpdateIsCompressNativeLibs();
921     void InnerProcessShortcut(const Shortcut &oldShortcut, ShortcutInfo &shortcutInfo) const;
922 
923     // using for get
924     Constants::AppType appType_ = Constants::AppType::THIRD_PARTY_APP;
925     int userId_ = Constants::DEFAULT_USERID;
926     BundleStatus bundleStatus_ = BundleStatus::ENABLED;
927     std::shared_ptr<ApplicationInfo> baseApplicationInfo_;
928     std::shared_ptr<BundleInfo> baseBundleInfo_;  // applicationInfo and abilityInfo empty
929     std::string appFeature_;
930     std::vector<std::string> allowedAcls_;
931     InstallMark mark_;
932     int32_t appIndex_ = Constants::INITIAL_APP_INDEX;
933     bool isSandboxApp_ = false;
934 
935     // only using for install or update progress, doesn't need to save to database
936     std::string currentPackage_;
937     // Auxiliary property, which is used when the application
938     // has been installed when the user is created.
939     bool onlyCreateBundleUser_ = false;
940 
941     std::map<std::string, InnerModuleInfo> innerModuleInfos_;
942     std::map<std::string, std::vector<FormInfo>> formInfos_;
943     std::map<std::string, CommonEventInfo> commonEvents_;
944     std::map<std::string, ShortcutInfo> shortcutInfos_;
945     std::map<std::string, AbilityInfo> baseAbilityInfos_;
946     std::map<std::string, std::vector<Skill>> skillInfos_;
947     std::map<std::string, InnerBundleUserInfo> innerBundleUserInfos_;
948     std::shared_ptr<BundlePackInfo> bundlePackInfo_;
949     // new version fields
950     bool isNewVersion_ = false;
951     std::map<std::string, ExtensionAbilityInfo> baseExtensionInfos_;
952     std::map<std::string, std::vector<Skill>> extensionSkillInfos_;
953 
954     // quick fix hqf info
955     std::vector<HqfInfo> hqfInfos_;
956     // apply quick fix frequency
957     int32_t applyQuickFixFrequency_ = 0;
958 
959     // overlay bundleInfo
960     std::vector<OverlayBundleInfo> overlayBundleInfo_;
961     int32_t overlayType_ = NON_OVERLAY_TYPE;
962 
963     // provision metadata
964     std::vector<Metadata> provisionMetadatas_;
965 
966     // shared module info
967     std::map<std::string, std::vector<InnerModuleInfo>> innerSharedModuleInfos_ ;
968 
969     // data group info
970     std::unordered_map<std::string, std::vector<DataGroupInfo>> dataGroupInfos_;
971 };
972 }  // namespace AppExecFwk
973 }  // namespace OHOS
974 #endif  // FOUNDATION_APPEXECFWK_SERVICES_BUNDLEMGR_INCLUDE_INNER_BUNDLE_INFO_H
975