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