1 /* 2 * Copyright (c) 2021-2025 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 "ability_info.h" 22 #include "access_token.h" 23 #include "aot/aot_args.h" 24 #include "bundle_constants.h" 25 #include "bundle_info.h" 26 #include "bundle_service_constants.h" 27 #include "common_event_info.h" 28 #include "common_profile.h" 29 #include "data_group_info.h" 30 #include "data/inner_ability_info.h" 31 #include "data/inner_extension_info.h" 32 #include "distributed_bundle_info.h" 33 #include "dynamic_icon_info.h" 34 #include "extension_ability_info.h" 35 #include "form_info.h" 36 #include "hap_module_info.h" 37 #include "inner_app_quick_fix.h" 38 #include "inner_bundle_clone_info.h" 39 #include "inner_bundle_user_info.h" 40 #include "ipc/check_encryption_param.h" 41 #include "json_util.h" 42 #include "plugin/plugin_bundle_info.h" 43 #include "preinstalled_application_info.h" 44 #include "quick_fix/app_quick_fix.h" 45 #include "quick_fix/hqf_info.h" 46 #include "shared/base_shared_bundle_info.h" 47 #include "shared/shared_bundle_info.h" 48 #include "shortcut_info.h" 49 #include "want.h" 50 51 namespace OHOS { 52 namespace AppExecFwk { 53 struct Distro { 54 bool deliveryWithInstall = false; 55 bool installationFree = false; 56 std::string moduleName; 57 std::string moduleType; 58 }; 59 60 struct DefinePermission { 61 bool provisionEnable = true; 62 bool distributedSceneEnable = false; 63 bool isKernelEffect = false; 64 bool hasValue = false; 65 uint32_t labelId = 0; 66 uint32_t descriptionId = 0; 67 std::string name; 68 std::string grantMode = Profile::DEFINEPERMISSION_GRANT_MODE_SYSTEM_GRANT; 69 std::string availableLevel = Profile::DEFINEPERMISSION_AVAILABLE_LEVEL_DEFAULT_VALUE; 70 std::string label; 71 std::string description; 72 std::string availableType; 73 }; 74 75 struct InnerModuleInfo { 76 bool isEntry = false; 77 bool installationFree = false; 78 bool isModuleJson = false; 79 bool isStageBasedModel = false; 80 bool isLibIsolated = false; 81 bool compressNativeLibs = true; 82 bool isEncrypted = false; 83 bool asanEnabled = false; 84 bool gwpAsanEnabled = false; 85 bool tsanEnabled = false; 86 bool needDelete = false; 87 bool debug = false; 88 bool resizeable = false; 89 bool deduplicateHar = false; 90 uint8_t boolSet = 0; 91 uint32_t innerModuleInfoFlag = 0; 92 uint32_t labelId = 0; 93 uint32_t descriptionId = 0; 94 uint32_t iconId = 0; 95 uint32_t versionCode = 0; 96 int32_t upgradeFlag = 0; 97 int32_t targetPriority; 98 BundleType bundleType = BundleType::SHARED; 99 AOTCompileStatus aotCompileStatus = AOTCompileStatus::NOT_COMPILED; 100 ModuleColorMode colorMode = ModuleColorMode::AUTO; 101 std::string name; 102 std::string modulePackage; 103 std::string moduleName; 104 std::string modulePath; 105 std::string moduleDataDir; 106 std::string moduleResPath; 107 std::string moduleHnpsPath; 108 std::string label; 109 std::string hapPath; 110 std::string description; 111 std::string icon; 112 std::string mainAbility; // config.json : mainAbility; module.json : mainElement 113 std::string entryAbilityKey; // skills contains "action.system.home" and "entity.system.home" 114 std::string srcPath; 115 std::string hashValue; 116 std::string pages; 117 std::string systemTheme; 118 std::string process; 119 std::string srcEntrance; 120 std::string uiSyntax; 121 std::string virtualMachine; 122 std::string compileMode; 123 std::string nativeLibraryPath; 124 std::string cpuAbi; 125 std::string targetModuleName; 126 std::string versionName; 127 std::string buildHash; 128 std::string isolationMode; 129 std::string fileContextMenu; 130 std::string routerMap; 131 std::string packageName; 132 std::string appStartup; 133 std::string formExtensionModule; 134 std::string formWidgetModule; 135 std::string crossAppSharedConfig; 136 std::string abilitySrcEntryDelegator; 137 std::string abilityStageSrcEntryDelegator; 138 std::string moduleArkTSMode = Constants::ARKTS_MODE_DYNAMIC; 139 std::string arkTSMode = Constants::ARKTS_MODE_DYNAMIC; 140 Distro distro; 141 // all user's value of isRemovable 142 // key:userId 143 // value:isRemovable true or flase 144 std::vector<std::string> reqCapabilities; 145 std::vector<std::string> abilityKeys; 146 std::vector<std::string> skillKeys; 147 std::vector<std::string> deviceTypes; 148 std::map<std::string, std::vector<std::string>> requiredDeviceFeatures; 149 std::vector<std::string> extensionKeys; 150 std::vector<std::string> extensionSkillKeys; 151 std::vector<std::string> nativeLibraryFileNames; 152 std::vector<std::string> querySchemes; 153 std::vector<std::string> preloads; 154 std::vector<HnpPackage> hnpPackages; 155 // new version fields 156 std::vector<DefinePermission> definePermissions; 157 std::vector<RequestPermission> requestPermissions; 158 std::vector<Metadata> metadata; 159 std::vector<Dependency> dependencies; 160 std::vector<OverlayModuleInfo> overlayModuleInfo; 161 std::vector<ProxyData> proxyDatas; 162 std::vector<AppEnvironment> appEnvironments; 163 std::map<std::string, bool> isRemovable; 164 MetaData metaData; 165 }; 166 167 struct ExtendResourceInfo { 168 uint32_t iconId = 0; 169 std::string moduleName; 170 std::string filePath; 171 }; 172 173 enum InstallExceptionStatus : uint8_t { 174 INSTALL_START = 1, 175 INSTALL_FINISH, 176 UPDATING_EXISTED_START, 177 UPDATING_NEW_START, 178 UPDATING_FINISH, 179 UNINSTALL_BUNDLE_START, 180 UNINSTALL_PACKAGE_START, 181 UNKNOWN_STATUS, 182 }; 183 184 enum class GetInnerModuleInfoFlag : uint8_t { 185 GET_INNER_MODULE_INFO_WITH_HWASANENABLED = 1, 186 GET_INNER_MODULE_INFO_WITH_UBSANENABLED = 2, 187 }; 188 189 enum InnerModuleInfoBoolFlag : uint8_t { 190 HAS_INTENT = 0, 191 HAS_CLOUD_KIT_CONFIG = 1, 192 }; 193 194 struct InstallMark { 195 int32_t status = InstallExceptionStatus::UNKNOWN_STATUS; 196 std::string bundleName; 197 std::string packageName; 198 }; 199 class InnerBundleInfo { 200 public: 201 enum class BundleStatus : uint8_t { 202 ENABLED = 1, 203 DISABLED, 204 }; 205 206 InnerBundleInfo(); 207 InnerBundleInfo &operator=(const InnerBundleInfo &info); 208 ~InnerBundleInfo(); 209 /** 210 * @brief Transform the InnerBundleInfo object to json. 211 * @param jsonObject Indicates the obtained json object. 212 * @return 213 */ 214 void ToJson(nlohmann::json &jsonObject) const; 215 /** 216 * @brief Transform the json object to InnerBundleInfo object. 217 * @param jsonObject Indicates the obtained json object. 218 * @return Returns 0 if the json object parsed successfully; returns error code otherwise. 219 */ 220 int32_t FromJson(const nlohmann::json &jsonObject); 221 /** 222 * @brief Add module info to old InnerBundleInfo object. 223 * @param newInfo Indicates the new InnerBundleInfo object. 224 * @return Returns true if the module successfully added; returns false otherwise. 225 */ 226 bool AddModuleInfo(const InnerBundleInfo &newInfo); 227 /** 228 * @brief Update module info to old InnerBundleInfo object. 229 * @param newInfo Indicates the new InnerBundleInfo object. 230 * @return 231 */ 232 void UpdateModuleInfo(const InnerBundleInfo &newInfo); 233 /** 234 * @brief Remove module info from InnerBundleInfo object. 235 * @param modulePackage Indicates the module package to be remove. 236 * @return 237 */ 238 void RemoveModuleInfo(const std::string &modulePackage); 239 /** 240 * @brief Find hap module info by module package. 241 * @param modulePackage Indicates the module package. 242 * @param userId Indicates the user ID. 243 * @return Returns the HapModuleInfo object if find it; returns null otherwise. 244 */ 245 std::optional<HapModuleInfo> FindHapModuleInfo( 246 const std::string &modulePackage, int32_t userId = Constants::UNSPECIFIED_USERID, int32_t appIndex = 0) const; 247 /** 248 * @brief Get module hashValue. 249 * @param modulePackage Indicates the module package. 250 * @param hapModuleInfo Indicates the hapModuleInfo. 251 * @return 252 */ 253 void GetModuleWithHashValue( 254 int32_t flags, const std::string &modulePackage, HapModuleInfo &hapModuleInfo) const; 255 /** 256 * @brief Find abilityInfo by bundle name and ability name. 257 * @param moduleName Indicates the module name 258 * @param abilityName Indicates the ability name. 259 * @param userId Indicates the user ID. 260 * @return Returns the AbilityInfo object if find it; returns null otherwise. 261 */ 262 std::optional<AbilityInfo> FindAbilityInfo( 263 const std::string &moduleName, 264 const std::string &abilityName, 265 int32_t userId = Constants::UNSPECIFIED_USERID) const; 266 /** 267 * @brief Find abilityInfo by bundle name and ability name. 268 * @param moduleName Indicates the module name 269 * @param abilityName Indicates the ability name. 270 * @return Returns the AbilityInfo object if find it; returns null otherwise. 271 */ 272 std::optional<AbilityInfo> FindAbilityInfoV9( 273 const std::string &moduleName, const std::string &abilityName) const; 274 /** 275 * @brief Find abilityInfo by bundle name module name and ability name. 276 * @param moduleName Indicates the module name 277 * @param abilityName Indicates the ability name. 278 * @return Returns ERR_OK if abilityInfo find successfully obtained; returns other ErrCode otherwise. 279 */ 280 ErrCode FindAbilityInfo( 281 const std::string &moduleName, const std::string &abilityName, AbilityInfo &info) const; 282 /** 283 * @brief Find abilityInfo of list by bundle name. 284 * @param bundleName Indicates the bundle name. 285 * @param userId Indicates the user ID. 286 * @return Returns the AbilityInfo of list if find it; returns null otherwise. 287 */ 288 std::optional<std::vector<AbilityInfo>> FindAbilityInfos( 289 int32_t userId = Constants::UNSPECIFIED_USERID) const; 290 std::optional<AbilityInfo> FindAbilityInfo(const std::string continueType, 291 int32_t userId = Constants::UNSPECIFIED_USERID) const; 292 /** 293 * @brief Find extensionInfo by bundle name and extension name. 294 * @param moduleName Indicates the module name. 295 * @param extensionName Indicates the extension name 296 * @return Returns the ExtensionAbilityInfo object if find it; returns null otherwise. 297 */ 298 std::optional<ExtensionAbilityInfo> FindExtensionInfo( 299 const std::string &moduleName, const std::string &extensionName) const; 300 /** 301 * @brief Transform the InnerBundleInfo object to string. 302 * @return Returns the string object 303 */ 304 std::string ToString() const; 305 /** 306 * @brief Add InnerAbility infos to old InnerBundleInfo object. 307 * @param abilityInfos Indicates the InnerAbilityInfo object to be add. 308 * @return 309 */ AddModuleAbilityInfo(const std::map<std::string,InnerAbilityInfo> & innerAbilityInfos)310 void AddModuleAbilityInfo(const std::map<std::string, InnerAbilityInfo> &innerAbilityInfos) 311 { 312 for (const auto &item : innerAbilityInfos) { 313 baseAbilityInfos_.try_emplace(item.first, item.second); 314 } 315 } 316 AddModuleExtensionInfos(const std::map<std::string,InnerExtensionInfo> & extensionInfos)317 void AddModuleExtensionInfos(const std::map<std::string, InnerExtensionInfo> &extensionInfos) 318 { 319 for (const auto &extensionInfo : extensionInfos) { 320 baseExtensionInfos_.try_emplace(extensionInfo.first, extensionInfo.second); 321 } 322 } 323 /** 324 * @brief Add skill infos to old InnerBundleInfo object. 325 * @param skillInfos Indicates the Skill object to be add. 326 * @return 327 */ AddModuleSkillInfo(const std::map<std::string,std::vector<Skill>> & skillInfos)328 void AddModuleSkillInfo(const std::map<std::string, std::vector<Skill>> &skillInfos) 329 { 330 for (const auto &skills : skillInfos) { 331 skillInfos_.try_emplace(skills.first, skills.second); 332 } 333 } AddModuleExtensionSkillInfos(const std::map<std::string,std::vector<Skill>> & extensionSkillInfos)334 void AddModuleExtensionSkillInfos(const std::map<std::string, std::vector<Skill>> &extensionSkillInfos) 335 { 336 for (const auto &skills : extensionSkillInfos) { 337 extensionSkillInfos_.try_emplace(skills.first, skills.second); 338 } 339 } 340 /** 341 * @brief Add form infos to old InnerBundleInfo object. 342 * @param formInfos Indicates the Forms object to be add. 343 * @return 344 */ AddModuleFormInfo(const std::map<std::string,std::vector<FormInfo>> & formInfos)345 void AddModuleFormInfo(const std::map<std::string, std::vector<FormInfo>> &formInfos) 346 { 347 for (const auto &forms : formInfos) { 348 formInfos_.try_emplace(forms.first, forms.second); 349 } 350 } 351 /** 352 * @brief Add common events to old InnerBundleInfo object. 353 * @param commonEvents Indicates the Common Event object to be add. 354 * @return 355 */ AddModuleCommonEvent(const std::map<std::string,CommonEventInfo> & commonEvents)356 void AddModuleCommonEvent(const std::map<std::string, CommonEventInfo> &commonEvents) 357 { 358 for (const auto &commonEvent : commonEvents) { 359 commonEvents_.try_emplace(commonEvent.first, commonEvent.second); 360 } 361 } 362 /** 363 * @brief Add shortcut infos to old InnerBundleInfo object. 364 * @param shortcutInfos Indicates the Shortcut object to be add. 365 * @return 366 */ AddModuleShortcutInfo(const std::map<std::string,ShortcutInfo> & shortcutInfos)367 void AddModuleShortcutInfo(const std::map<std::string, ShortcutInfo> &shortcutInfos) 368 { 369 for (const auto &shortcut : shortcutInfos) { 370 shortcutInfos_.try_emplace(shortcut.first, shortcut.second); 371 } 372 } 373 /** 374 * @brief Add innerModuleInfos to old InnerBundleInfo object. 375 * @param innerModuleInfos Indicates the InnerModuleInfo object to be add. 376 * @return 377 */ AddInnerModuleInfo(const std::map<std::string,InnerModuleInfo> & innerModuleInfos)378 void AddInnerModuleInfo(const std::map<std::string, InnerModuleInfo> &innerModuleInfos) 379 { 380 for (const auto &info : innerModuleInfos) { 381 innerModuleInfos_.try_emplace(info.first, info.second); 382 } 383 } 384 /** 385 * @brief Get application name. 386 * @return Return application name 387 */ GetApplicationName()388 std::string GetApplicationName() const 389 { 390 return baseApplicationInfo_->name; 391 } 392 /** 393 * @brief Set bundle status. 394 * @param status Indicates the BundleStatus object to set. 395 * @return 396 */ SetBundleStatus(const BundleStatus & status)397 void SetBundleStatus(const BundleStatus &status) 398 { 399 bundleStatus_ = status; 400 } 401 /** 402 * @brief Get bundle status. 403 * @return Return the BundleStatus object 404 */ GetBundleStatus()405 BundleStatus GetBundleStatus() const 406 { 407 return bundleStatus_; 408 } 409 /** 410 * @brief Set bundle install time. 411 * @param time Indicates the install time to set. 412 * @param userId Indicates the user ID. 413 * @return 414 */ 415 void SetBundleInstallTime( 416 const int64_t time, int32_t userId = Constants::UNSPECIFIED_USERID); 417 /** 418 * @brief Get bundle install time. 419 * @param userId Indicates the user ID. 420 * @return Return the bundle install time. 421 */ 422 int64_t GetBundleInstallTime(int32_t userId = Constants::UNSPECIFIED_USERID) const 423 { 424 InnerBundleUserInfo innerBundleUserInfo; 425 if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) { 426 APP_LOGE("can not find userId %{public}d when GetBundleInstallTime", userId); 427 return -1; 428 } 429 return innerBundleUserInfo.installTime; 430 } 431 /** 432 * @brief Set bundle update time. 433 * @param time Indicates the update time to set. 434 * @param userId Indicates the user ID. 435 * @return 436 */ 437 void SetBundleUpdateTime(const int64_t time, int32_t userId = Constants::UNSPECIFIED_USERID); 438 /** 439 * @brief Get bundle update time. 440 * @param userId Indicates the user ID. 441 * @return Return the bundle update time. 442 */ 443 int64_t GetBundleUpdateTime(int32_t userId = Constants::UNSPECIFIED_USERID) const 444 { 445 InnerBundleUserInfo innerBundleUserInfo; 446 if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) { 447 APP_LOGE("can not find userId %{public}d when GetBundleUpdateTime", userId); 448 return -1; 449 } 450 return innerBundleUserInfo.updateTime; 451 } 452 /** 453 * @brief Set bundle first install time. 454 * @param time Indicates the first install time to set. 455 * @param userId Indicates the user ID. 456 * @return 457 */ 458 void SetFirstInstallTime(const int64_t time, int32_t userId); 459 /** 460 * @brief Get bundle name. 461 * @return Return bundle name 462 */ GetBundleName()463 const std::string GetBundleName() const 464 { 465 return baseApplicationInfo_->bundleName; 466 } 467 /** 468 * @brief Get baseBundleInfo. 469 * @return Return the BundleInfo object. 470 */ GetBaseBundleInfo()471 BundleInfo GetBaseBundleInfo() const 472 { 473 return *baseBundleInfo_; 474 } 475 /** 476 * @brief Set baseBundleInfo. 477 * @param bundleInfo Indicates the BundleInfo object. 478 */ SetBaseBundleInfo(const BundleInfo & bundleInfo)479 void SetBaseBundleInfo(const BundleInfo &bundleInfo) 480 { 481 *baseBundleInfo_ = bundleInfo; 482 } 483 /** 484 * @brief Update baseBundleInfo. 485 * @param bundleInfo Indicates the new BundleInfo object. 486 * @return 487 */ 488 void UpdateBaseBundleInfo(const BundleInfo &bundleInfo, bool isEntry); 489 /** 490 * @brief Get baseApplicationInfo. 491 * @return Return the ApplicationInfo object. 492 */ GetBaseApplicationInfo()493 ApplicationInfo GetBaseApplicationInfo() const 494 { 495 return *baseApplicationInfo_; 496 } 497 /** 498 * @brief Set baseApplicationInfo. 499 * @param applicationInfo Indicates the ApplicationInfo object. 500 */ SetBaseApplicationInfo(const ApplicationInfo & applicationInfo)501 void SetBaseApplicationInfo(const ApplicationInfo &applicationInfo) 502 { 503 *baseApplicationInfo_ = applicationInfo; 504 } 505 /** 506 * @brief Update baseApplicationInfo. 507 * @param applicationInfo Indicates the ApplicationInfo object. 508 * @param isEntry Indicates the isEntry. 509 */ 510 void UpdateBaseApplicationInfo(const InnerBundleInfo &newInfo); 511 /** 512 * @brief Get application enabled. 513 * @param userId Indicates the user ID. 514 * @return Return whether the application is enabled. 515 */ 516 bool GetApplicationEnabled(int32_t userId = Constants::UNSPECIFIED_USERID) const 517 { 518 InnerBundleUserInfo innerBundleUserInfo; 519 if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) { 520 APP_LOGD("can not find userId %{public}d when GetApplicationEnabled", userId); 521 return false; 522 } 523 PrintSetEnabledInfo(innerBundleUserInfo.bundleUserInfo.enabled, userId, 0, innerBundleUserInfo.bundleName, 524 innerBundleUserInfo.bundleUserInfo.setEnabledCaller); 525 return innerBundleUserInfo.bundleUserInfo.enabled; 526 } 527 528 ErrCode GetApplicationEnabledV9(int32_t userId, bool &isEnabled, 529 int32_t appIndex = 0) const; 530 /** 531 * @brief Set application enabled. 532 * @param userId Indicates the user ID. 533 * @return Returns ERR_OK if the SetApplicationEnabled is successfully; returns error code otherwise. 534 */ 535 ErrCode SetApplicationEnabled(bool enabled, const std::string &caller, 536 int32_t userId = Constants::UNSPECIFIED_USERID); 537 ErrCode SetCloneApplicationEnabled(bool enabled, int32_t appIndex, const std::string &caller, int32_t userId); 538 ErrCode SetCloneAbilityEnabled(const std::string &moduleName, const std::string &abilityName, 539 bool isEnabled, int32_t userId, int32_t appIndex); 540 /** 541 * @brief Get application code path. 542 * @return Return the string object. 543 */ GetAppCodePath()544 const std::string GetAppCodePath() const 545 { 546 return baseApplicationInfo_->codePath; 547 } 548 /** 549 * @brief Set application code path. 550 * @param codePath Indicates the code path to be set. 551 */ SetAppCodePath(const std::string codePath)552 void SetAppCodePath(const std::string codePath) 553 { 554 baseApplicationInfo_->codePath = codePath; 555 } 556 /** 557 * @brief Insert innerModuleInfos. 558 * @param modulePackage Indicates the modulePackage object as key. 559 * @param innerModuleInfo Indicates the InnerModuleInfo object as value. 560 */ InsertInnerModuleInfo(const std::string & modulePackage,const InnerModuleInfo & innerModuleInfo)561 void InsertInnerModuleInfo(const std::string &modulePackage, const InnerModuleInfo &innerModuleInfo) 562 { 563 innerModuleInfos_.try_emplace(modulePackage, innerModuleInfo); 564 } 565 566 /** 567 * @brief replace innerModuleInfos. 568 * @param modulePackage Indicates the modulePackage object as key. 569 * @param innerModuleInfo Indicates the InnerModuleInfo object as value. 570 */ ReplaceInnerModuleInfo(const std::string & modulePackage,const InnerModuleInfo & innerModuleInfo)571 void ReplaceInnerModuleInfo(const std::string &modulePackage, const InnerModuleInfo &innerModuleInfo) 572 { 573 innerModuleInfos_[modulePackage] = innerModuleInfo; 574 } 575 /** 576 * @brief Insert InnerAbilityInfo. 577 * @param key bundleName.moduleName.abilityName 578 * @param innerAbilityInfo value. 579 */ InsertAbilitiesInfo(const std::string & key,const InnerAbilityInfo & innerAbilityInfo)580 void InsertAbilitiesInfo(const std::string &key, const InnerAbilityInfo &innerAbilityInfo) 581 { 582 baseAbilityInfos_.emplace(key, innerAbilityInfo); 583 } 584 /** 585 * @brief Insert InnerExtensionInfo. 586 * @param key bundleName.moduleName.extensionName 587 * @param extensionInfo value. 588 */ InsertExtensionInfo(const std::string & key,const InnerExtensionInfo & extensionInfo)589 void InsertExtensionInfo(const std::string &key, const InnerExtensionInfo &extensionInfo) 590 { 591 baseExtensionInfos_.emplace(key, extensionInfo); 592 } 593 /** 594 * @brief Insert ability skillInfos. 595 * @param key bundleName.moduleName.abilityName 596 * @param skills ability skills. 597 */ InsertSkillInfo(const std::string & key,const std::vector<Skill> & skills)598 void InsertSkillInfo(const std::string &key, const std::vector<Skill> &skills) 599 { 600 skillInfos_.emplace(key, skills); 601 } 602 /** 603 * @brief Insert extension skillInfos. 604 * @param key bundleName.moduleName.extensionName 605 * @param skills extension skills. 606 */ InsertExtensionSkillInfo(const std::string & key,const std::vector<Skill> & skills)607 void InsertExtensionSkillInfo(const std::string &key, const std::vector<Skill> &skills) 608 { 609 extensionSkillInfos_.emplace(key, skills); 610 } 611 /** 612 * @brief Find AbilityInfo object by Uri. 613 * @param abilityUri Indicates the ability uri. 614 * @param userId Indicates the user ID. 615 * @return Returns the AbilityInfo object if find it; returns null otherwise. 616 */ FindAbilityInfoByUri(const std::string & abilityUri)617 std::optional<AbilityInfo> FindAbilityInfoByUri(const std::string &abilityUri) const 618 { 619 APP_LOGD("Uri is %{public}s", abilityUri.c_str()); 620 for (const auto &ability : baseAbilityInfos_) { 621 auto abilityInfo = ability.second; 622 if (abilityInfo.uri.size() < strlen(ServiceConstants::DATA_ABILITY_URI_PREFIX)) { 623 continue; 624 } 625 626 auto configUri = abilityInfo.uri.substr(strlen(ServiceConstants::DATA_ABILITY_URI_PREFIX)); 627 APP_LOGD("configUri is %{public}s", configUri.c_str()); 628 if (configUri == abilityUri) { 629 return InnerAbilityInfo::ConvertToAbilityInfo(abilityInfo); 630 } 631 } 632 return std::nullopt; 633 } 634 FindExtensionAbilityInfoByUri(const std::string & uri,ExtensionAbilityInfo & extensionAbilityInfo)635 bool FindExtensionAbilityInfoByUri(const std::string &uri, ExtensionAbilityInfo &extensionAbilityInfo) const 636 { 637 for (const auto &item : baseExtensionInfos_) { 638 if (uri == item.second.uri) { 639 extensionAbilityInfo = InnerExtensionInfo::ConvertToExtensionInfo(item.second); 640 APP_LOGD("find target extension, bundleName : %{public}s, moduleName : %{public}s, name : %{public}s", 641 extensionAbilityInfo.bundleName.c_str(), extensionAbilityInfo.moduleName.c_str(), 642 extensionAbilityInfo.name.c_str()); 643 return true; 644 } 645 } 646 return false; 647 } 648 649 /** 650 * @brief Find AbilityInfo object by Uri. 651 * @param abilityUri Indicates the ability uri. 652 * @param userId Indicates the user ID. 653 * @return Returns the AbilityInfo object if find it; returns null otherwise. 654 */ 655 void FindAbilityInfosByUri(const std::string &abilityUri, 656 std::vector<AbilityInfo> &abilityInfos, int32_t userId = Constants::UNSPECIFIED_USERID) 657 { 658 APP_LOGI("Uri is %{public}s", abilityUri.c_str()); 659 for (const auto &item : baseAbilityInfos_) { 660 if (item.second.uri.size() < strlen(ServiceConstants::DATA_ABILITY_URI_PREFIX)) { 661 continue; 662 } 663 664 auto configUri = item.second.uri.substr(strlen(ServiceConstants::DATA_ABILITY_URI_PREFIX)); 665 APP_LOGI("configUri is %{public}s", configUri.c_str()); 666 if (configUri == abilityUri) { 667 AbilityInfo abilityInfo = InnerAbilityInfo::ConvertToAbilityInfo(item.second); 668 GetApplicationInfo( 669 ApplicationFlag::GET_APPLICATION_INFO_WITH_PERMISSION, userId, abilityInfo.applicationInfo); 670 abilityInfos.emplace_back(abilityInfo); 671 } 672 } 673 return; 674 } 675 /** 676 * @brief Get all ability names in application. 677 * @return Returns ability names. 678 */ GetAbilityNames()679 auto GetAbilityNames() const 680 { 681 std::vector<std::string> abilityNames; 682 for (auto &ability : baseAbilityInfos_) { 683 abilityNames.emplace_back(ability.second.name); 684 } 685 return abilityNames; 686 } 687 GetCloudFileSyncEnabled()688 bool GetCloudFileSyncEnabled() const 689 { 690 return baseApplicationInfo_->cloudFileSyncEnabled; 691 } 692 SetCloudFileSyncEnabled(bool cloudFileSyncEnabled)693 void SetCloudFileSyncEnabled(bool cloudFileSyncEnabled) 694 { 695 baseApplicationInfo_->cloudFileSyncEnabled = cloudFileSyncEnabled; 696 } 697 GetCloudStructuredDataSyncEnabled()698 bool GetCloudStructuredDataSyncEnabled() const 699 { 700 return baseApplicationInfo_->cloudStructuredDataSyncEnabled; 701 } 702 SetCloudStructuredDataSyncEnabled(bool cloudStructuredDataSyncEnabled)703 void SetCloudStructuredDataSyncEnabled(bool cloudStructuredDataSyncEnabled) 704 { 705 baseApplicationInfo_->cloudStructuredDataSyncEnabled = cloudStructuredDataSyncEnabled; 706 } 707 708 /** 709 * @brief Get version code in application. 710 * @return Returns version code. 711 */ GetVersionCode()712 uint32_t GetVersionCode() const 713 { 714 return baseBundleInfo_->versionCode; 715 } 716 /** 717 * @brief Get version name in application. 718 * @return Returns version name. 719 */ GetVersionName()720 std::string GetVersionName() const 721 { 722 return baseBundleInfo_->versionName; 723 } 724 /** 725 * @brief Get vendor in application. 726 * @return Returns vendor. 727 */ GetVendor()728 std::string GetVendor() const 729 { 730 return baseBundleInfo_->vendor; 731 } 732 /** 733 * @brief Get comparible version in application. 734 * @return Returns comparible version. 735 */ GetCompatibleVersion()736 uint32_t GetCompatibleVersion() const 737 { 738 return baseBundleInfo_->compatibleVersion; 739 } 740 /** 741 * @brief Get target version in application. 742 * @return Returns target version. 743 */ GetTargetVersion()744 uint32_t GetTargetVersion() const 745 { 746 return baseBundleInfo_->targetVersion; 747 } 748 /** 749 * @brief Get release type in application. 750 * @return Returns release type. 751 */ GetReleaseType()752 std::string GetReleaseType() const 753 { 754 return baseBundleInfo_->releaseType; 755 } 756 /** 757 * @brief Get minCompatibleVersionCode in base bundleInfo. 758 * @return Returns release type. 759 */ GetMinCompatibleVersionCode()760 uint32_t GetMinCompatibleVersionCode() const 761 { 762 return baseBundleInfo_->minCompatibleVersionCode; 763 } 764 /** 765 * @brief Get install mark in application. 766 * @return Returns install mark. 767 */ SetInstallMark(const std::string & bundleName,const std::string & packageName,const InstallExceptionStatus & status)768 void SetInstallMark(const std::string &bundleName, const std::string &packageName, 769 const InstallExceptionStatus &status) 770 { 771 mark_.bundleName = bundleName; 772 mark_.packageName = packageName; 773 mark_.status = status; 774 } 775 /** 776 * @brief Get install mark in application. 777 * @return Returns install mark. 778 */ GetInstallMark()779 InstallMark GetInstallMark() const 780 { 781 return mark_; 782 } 783 /** 784 * @brief Get application data dir. 785 * @return Return the string object. 786 */ GetAppDataDir()787 std::string GetAppDataDir() const 788 { 789 return baseApplicationInfo_->dataDir; 790 } 791 /** 792 * @brief Set application data dir. 793 * @param dataDir Indicates the data Dir to be set. 794 */ SetAppDataDir(std::string dataDir)795 void SetAppDataDir(std::string dataDir) 796 { 797 baseApplicationInfo_->dataDir = dataDir; 798 } 799 /** 800 * @brief Set application data base dir. 801 * @param dataBaseDir Indicates the data base Dir to be set. 802 */ SetAppDataBaseDir(std::string dataBaseDir)803 void SetAppDataBaseDir(std::string dataBaseDir) 804 { 805 baseApplicationInfo_->dataBaseDir = dataBaseDir; 806 } 807 /** 808 * @brief Set application cache dir. 809 * @param cacheDir Indicates the cache Dir to be set. 810 */ SetAppCacheDir(std::string cacheDir)811 void SetAppCacheDir(std::string cacheDir) 812 { 813 baseApplicationInfo_->cacheDir = cacheDir; 814 } 815 816 int32_t GetUid(int32_t userId = Constants::UNSPECIFIED_USERID, int32_t appIndex = 0) const 817 { 818 InnerBundleUserInfo innerBundleUserInfo; 819 if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) { 820 return Constants::INVALID_UID; 821 } 822 if (appIndex != 0) { 823 auto iter = innerBundleUserInfo.cloneInfos.find(std::to_string(appIndex)); 824 if (iter != innerBundleUserInfo.cloneInfos.end()) { 825 return iter->second.uid; 826 } 827 return Constants::INVALID_UID; 828 } 829 830 return innerBundleUserInfo.uid; 831 } 832 /** 833 * @brief Get application gid. 834 * @param userId Indicates the user ID. 835 * @return Returns the gid. 836 */ 837 int GetGid(int32_t userId = Constants::UNSPECIFIED_USERID) const 838 { 839 InnerBundleUserInfo innerBundleUserInfo; 840 if (!GetInnerBundleUserInfo(userId, innerBundleUserInfo)) { 841 return ServiceConstants::INVALID_GID; 842 } 843 844 if (innerBundleUserInfo.gids.empty()) { 845 return ServiceConstants::INVALID_GID; 846 } 847 848 return innerBundleUserInfo.gids[0]; 849 } 850 /** 851 * @brief Get application AppType. 852 * @return Returns the AppType. 853 */ GetAppType()854 Constants::AppType GetAppType() const 855 { 856 return appType_; 857 } 858 /** 859 * @brief Set application AppType. 860 * @param gid Indicates the AppType to be set. 861 */ SetAppType(Constants::AppType appType)862 void SetAppType(Constants::AppType appType) 863 { 864 appType_ = appType; 865 if (appType_ == Constants::AppType::SYSTEM_APP) { 866 baseApplicationInfo_->isSystemApp = true; 867 } else { 868 baseApplicationInfo_->isSystemApp = false; 869 } 870 } 871 /** 872 * @brief Get application user id. 873 * @return Returns the user id. 874 */ GetUserId()875 int GetUserId() const 876 { 877 return userId_; 878 } 879 /** 880 * @brief Set application user id. 881 * @param gid Indicates the user id to be set. 882 */ SetUserId(int userId)883 void SetUserId(int userId) 884 { 885 userId_ = userId; 886 } 887 GetUsers()888 const std::unordered_set<int32_t> GetUsers() const 889 { 890 std::unordered_set<int32_t> userIds; 891 for (const auto &userInfoItem : innerBundleUserInfos_) { 892 userIds.insert(userInfoItem.second.bundleUserInfo.userId); 893 } 894 return userIds; 895 } 896 GetAllowMultiProcess()897 bool GetAllowMultiProcess() const 898 { 899 return baseApplicationInfo_->allowMultiProcess; 900 } 901 SetAllowMultiProcess(bool allowMultiProcess)902 void SetAllowMultiProcess(bool allowMultiProcess) 903 { 904 baseApplicationInfo_->allowMultiProcess = allowMultiProcess; 905 } 906 907 // only used in install progress with newInfo GetCurrentModulePackage()908 std::string GetCurrentModulePackage() const 909 { 910 return currentPackage_; 911 } SetCurrentModulePackage(const std::string & modulePackage)912 void SetCurrentModulePackage(const std::string &modulePackage) 913 { 914 currentPackage_ = modulePackage; 915 } AddModuleSrcDir(const std::string & moduleSrcDir)916 void AddModuleSrcDir(const std::string &moduleSrcDir) 917 { 918 if (innerModuleInfos_.count(currentPackage_) == 1) { 919 innerModuleInfos_.at(currentPackage_).modulePath = moduleSrcDir; 920 } 921 } AddModuleDataDir(const std::string & moduleDataDir)922 void AddModuleDataDir(const std::string &moduleDataDir) 923 { 924 if (innerModuleInfos_.count(currentPackage_) == 1) { 925 innerModuleInfos_.at(currentPackage_).moduleDataDir = moduleDataDir; 926 } 927 } 928 AddModuleResPath(const std::string & moduleSrcDir)929 void AddModuleResPath(const std::string &moduleSrcDir) 930 { 931 if (innerModuleInfos_.count(currentPackage_) == 1) { 932 std::string moduleResPath; 933 if (isNewVersion_) { 934 moduleResPath = moduleSrcDir + ServiceConstants::PATH_SEPARATOR + ServiceConstants::RESOURCES_INDEX; 935 } else { 936 moduleResPath = moduleSrcDir + ServiceConstants::PATH_SEPARATOR + ServiceConstants::ASSETS_DIR + 937 ServiceConstants::PATH_SEPARATOR +innerModuleInfos_.at(currentPackage_).distro.moduleName + 938 ServiceConstants::PATH_SEPARATOR + ServiceConstants::RESOURCES_INDEX; 939 } 940 941 innerModuleInfos_.at(currentPackage_).moduleResPath = moduleResPath; 942 for (auto &abilityInfo : baseAbilityInfos_) { 943 abilityInfo.second.resourcePath = moduleResPath; 944 } 945 for (auto &extensionInfo : baseExtensionInfos_) { 946 extensionInfo.second.resourcePath = moduleResPath; 947 } 948 } 949 } 950 AddModuleHnpsPath(const std::string & moduleSrcDir)951 void AddModuleHnpsPath(const std::string &moduleSrcDir) 952 { 953 if (innerModuleInfos_.count(currentPackage_) == 1) { 954 std::string moduleHnpsPath = moduleSrcDir + ServiceConstants::PATH_SEPARATOR + 955 ServiceConstants::HNPS_FILE_PATH; 956 innerModuleInfos_.at(currentPackage_).moduleHnpsPath = moduleHnpsPath; 957 } 958 } 959 960 void SetModuleHapPath(const std::string &hapPath); 961 GetModuleHapPath(const std::string & modulePackage)962 const std::string GetModuleHapPath(const std::string &modulePackage) const 963 { 964 if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) { 965 return innerModuleInfos_.at(modulePackage).hapPath; 966 } 967 968 return Constants::EMPTY_STRING; 969 } 970 GetModuleName(const std::string & modulePackage)971 const std::string GetModuleName(const std::string &modulePackage) const 972 { 973 if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) { 974 return innerModuleInfos_.at(modulePackage).moduleName; 975 } 976 977 return Constants::EMPTY_STRING; 978 } 979 980 const std::string GetCurModuleName() const; 981 bool IsBundleCrossAppSharedConfig() const; 982 GetDefinePermissions()983 std::vector<DefinePermission> GetDefinePermissions() const 984 { 985 std::vector<DefinePermission> definePermissions; 986 if (innerModuleInfos_.count(currentPackage_) == 1) { 987 definePermissions = innerModuleInfos_.at(currentPackage_).definePermissions; 988 } 989 return definePermissions; 990 } 991 GetRequestPermissions()992 std::vector<RequestPermission> GetRequestPermissions() const 993 { 994 std::vector<RequestPermission> requestPermissions; 995 if (innerModuleInfos_.count(currentPackage_) == 1) { 996 requestPermissions = innerModuleInfos_.at(currentPackage_).requestPermissions; 997 } 998 return requestPermissions; 999 } 1000 1001 std::vector<DefinePermission> GetAllDefinePermissions() const; 1002 1003 std::vector<RequestPermission> GetAllRequestPermissions() const; 1004 FindModule(std::string modulePackage)1005 bool FindModule(std::string modulePackage) const 1006 { 1007 return (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()); 1008 } 1009 IsEntryModule(std::string modulePackage)1010 bool IsEntryModule(std::string modulePackage) const 1011 { 1012 if (FindModule(modulePackage)) { 1013 return innerModuleInfos_.at(modulePackage).isEntry; 1014 } 1015 return false; 1016 } 1017 1018 std::string GetEntryModuleName() const; 1019 GetIsKeepAlive()1020 bool GetIsKeepAlive() const 1021 { 1022 return baseBundleInfo_->isKeepAlive; 1023 } 1024 SetIsFreeInstallApp(bool isFreeInstall)1025 void SetIsFreeInstallApp(bool isFreeInstall) 1026 { 1027 baseApplicationInfo_->isFreeInstallApp = isFreeInstall; 1028 } 1029 GetIsFreeInstallApp()1030 bool GetIsFreeInstallApp() const 1031 { 1032 return baseApplicationInfo_->isFreeInstallApp; 1033 } 1034 1035 std::string GetMainAbility() const; 1036 1037 void GetMainAbilityInfo(AbilityInfo &abilityInfo) const; 1038 GetModuleDir(std::string modulePackage)1039 std::string GetModuleDir(std::string modulePackage) const 1040 { 1041 if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) { 1042 return innerModuleInfos_.at(modulePackage).modulePath; 1043 } 1044 return Constants::EMPTY_STRING; 1045 } 1046 GetModuleDataDir(std::string modulePackage)1047 std::string GetModuleDataDir(std::string modulePackage) const 1048 { 1049 if (innerModuleInfos_.find(modulePackage) != innerModuleInfos_.end()) { 1050 return innerModuleInfos_.at(modulePackage).moduleDataDir; 1051 } 1052 return Constants::EMPTY_STRING; 1053 } 1054 IsDisabled()1055 bool IsDisabled() const 1056 { 1057 return (bundleStatus_ == BundleStatus::DISABLED); 1058 } 1059 IsEnabled()1060 bool IsEnabled() const 1061 { 1062 return (bundleStatus_ == BundleStatus::ENABLED); 1063 } 1064 IsOnlyModule(const std::string & modulePackage)1065 bool IsOnlyModule(const std::string &modulePackage) 1066 { 1067 if ((innerModuleInfos_.size() == 1) && (innerModuleInfos_.count(modulePackage) == 1)) { 1068 return true; 1069 } 1070 return false; 1071 } 1072 SetProvisionId(const std::string & provisionId)1073 void SetProvisionId(const std::string &provisionId) 1074 { 1075 baseBundleInfo_->appId = baseBundleInfo_->name + Constants::FILE_UNDERLINE + provisionId; 1076 } 1077 GetProvisionId()1078 std::string GetProvisionId() const 1079 { 1080 if (!baseBundleInfo_->appId.empty()) { 1081 return baseBundleInfo_->appId.substr(baseBundleInfo_->name.size() + 1); 1082 } 1083 return ""; 1084 } 1085 GetAppId()1086 std::string GetAppId() const 1087 { 1088 return baseBundleInfo_->appId; 1089 } 1090 SetAppFeature(const std::string & appFeature)1091 void SetAppFeature(const std::string &appFeature) 1092 { 1093 appFeature_ = appFeature; 1094 } 1095 GetAppFeature()1096 std::string GetAppFeature() const 1097 { 1098 return appFeature_; 1099 } 1100 SetAppPrivilegeLevel(const std::string & appPrivilegeLevel)1101 void SetAppPrivilegeLevel(const std::string &appPrivilegeLevel) 1102 { 1103 if (appPrivilegeLevel.empty()) { 1104 return; 1105 } 1106 baseApplicationInfo_->appPrivilegeLevel = appPrivilegeLevel; 1107 } 1108 GetAppPrivilegeLevel()1109 std::string GetAppPrivilegeLevel() const 1110 { 1111 return baseApplicationInfo_->appPrivilegeLevel; 1112 } 1113 1114 bool HasEntry() const; 1115 1116 bool IsHsp() const; 1117 1118 /** 1119 * @brief Insert formInfo. 1120 * @param keyName Indicates object as key. 1121 * @param formInfos Indicates the formInfo object as value. 1122 */ InsertFormInfos(const std::string & keyName,const std::vector<FormInfo> & formInfos)1123 void InsertFormInfos(const std::string &keyName, const std::vector<FormInfo> &formInfos) 1124 { 1125 formInfos_.emplace(keyName, formInfos); 1126 } 1127 /** 1128 * @brief Insert commonEvent. 1129 * @param keyName Indicates object as key. 1130 * @param commonEvents Indicates the common event object as value. 1131 */ InsertCommonEvents(const std::string & keyName,const CommonEventInfo & commonEvents)1132 void InsertCommonEvents(const std::string &keyName, const CommonEventInfo &commonEvents) 1133 { 1134 commonEvents_.emplace(keyName, commonEvents); 1135 } 1136 /** 1137 * @brief Insert shortcutInfos. 1138 * @param keyName Indicates object as key. 1139 * @param shortcutInfos Indicates the shortcutInfos object as value. 1140 */ InsertShortcutInfos(const std::string & keyName,const ShortcutInfo & shortcutInfos)1141 void InsertShortcutInfos(const std::string &keyName, const ShortcutInfo &shortcutInfos) 1142 { 1143 shortcutInfos_.emplace(keyName, shortcutInfos); 1144 } 1145 // use for new Info in updating progress RestoreFromOldInfo(const InnerBundleInfo & oldInfo)1146 void RestoreFromOldInfo(const InnerBundleInfo &oldInfo) 1147 { 1148 SetAppCodePath(oldInfo.GetAppCodePath()); 1149 } RestoreModuleInfo(const InnerBundleInfo & oldInfo)1150 void RestoreModuleInfo(const InnerBundleInfo &oldInfo) 1151 { 1152 if (oldInfo.FindModule(currentPackage_)) { 1153 innerModuleInfos_.at(currentPackage_).moduleDataDir = oldInfo.GetModuleDataDir(currentPackage_); 1154 } 1155 } 1156 SetModuleHashValue(const std::string & hashValue)1157 void SetModuleHashValue(const std::string &hashValue) 1158 { 1159 if (innerModuleInfos_.count(currentPackage_) == 1) { 1160 innerModuleInfos_.at(currentPackage_).hashValue = hashValue; 1161 } 1162 } 1163 SetModuleCpuAbi(const std::string & cpuAbi)1164 void SetModuleCpuAbi(const std::string &cpuAbi) 1165 { 1166 if (innerModuleInfos_.count(currentPackage_) == 1) { 1167 innerModuleInfos_.at(currentPackage_).cpuAbi = cpuAbi; 1168 } 1169 } 1170 SetModuleNativeLibraryPath(const std::string & nativeLibraryPath)1171 void SetModuleNativeLibraryPath(const std::string &nativeLibraryPath) 1172 { 1173 if (innerModuleInfos_.count(currentPackage_) == 1) { 1174 innerModuleInfos_.at(currentPackage_).nativeLibraryPath = nativeLibraryPath; 1175 } 1176 } 1177 1178 /** 1179 * @brief Set ability enabled. 1180 * @param moduleName Indicates the moduleName. 1181 * @param abilityName Indicates the abilityName. 1182 * @param isEnabled Indicates the ability enabled. 1183 * @param userId Indicates the user id. 1184 * @return Returns ERR_OK if the setAbilityEnabled is successfully; returns error code otherwise. 1185 */ 1186 ErrCode SetAbilityEnabled( 1187 const std::string &moduleName, 1188 const std::string &abilityName, 1189 bool isEnabled, 1190 int32_t userId); 1191 /** 1192 * @brief Set the Application Need Recover object 1193 * @param moduleName Indicates the module name of the application. 1194 * @param upgradeFlag Indicates the module is need update or not. 1195 * @return Return ERR_OK if set data successfully. 1196 */ 1197 ErrCode SetModuleUpgradeFlag(std::string moduleName, int32_t upgradeFlag); 1198 1199 /** 1200 * @brief Get the Application Need Recover object 1201 * @param moduleName Indicates the module name of the application. 1202 * @return upgradeFlag type,NOT_UPGRADE means not need to be upgraded,SINGLE_UPGRADE means 1203 * single module need to be upgraded,RELATION_UPGRADE means relation module need to be upgraded. 1204 */ 1205 int32_t GetModuleUpgradeFlag(std::string moduleName) const; 1206 1207 void GetApplicationInfo(int32_t flags, int32_t userId, ApplicationInfo &appInfo, int32_t appIndex = 0) const; 1208 ErrCode GetApplicationInfoV9(int32_t flags, int32_t userId, ApplicationInfo &appInfo, int32_t appIndex = 0) const; 1209 bool GetBundleInfo(int32_t flags, BundleInfo &bundleInfo, int32_t userId = Constants::UNSPECIFIED_USERID, 1210 int32_t appIndex = 0) const; 1211 ErrCode GetBundleInfoV9(int32_t flags, 1212 BundleInfo &bundleInfo, int32_t userId = Constants::UNSPECIFIED_USERID, int32_t appIndex = 0) const; 1213 bool CheckSpecialMetaData(const std::string &metaData) const; 1214 /** 1215 * @brief Obtains the FormInfo objects provided by all applications on the device. 1216 * @param moduleName Indicates the module name of the application. 1217 * @param formInfos List of FormInfo objects if obtained; 1218 */ 1219 void GetFormsInfoByModule(const std::string &moduleName, std::vector<FormInfo> &formInfos) const; 1220 /** 1221 * @brief Obtains the FormInfo objects provided by a specified application on the device. 1222 * @param formInfos List of FormInfo objects if obtained; 1223 */ 1224 void GetFormsInfoByApp(std::vector<FormInfo> &formInfos) const; 1225 /** 1226 * @brief Obtains the ShortcutInfo objects provided by a specified application on the device. 1227 * @param shortcutInfos List of ShortcutInfo objects if obtained. 1228 */ 1229 void GetShortcutInfos(std::vector<ShortcutInfo> &shortcutInfos) const; 1230 /** 1231 * @brief Obtains the common event objects provided by a specified application on the device. 1232 * @param commonEvents List of common event objects if obtained. 1233 */ 1234 void GetCommonEvents(const std::string &eventKey, std::vector<CommonEventInfo> &commonEvents) const; 1235 1236 1237 std::optional<InnerModuleInfo> GetInnerModuleInfoByModuleName(const std::string &moduleName) const; 1238 std::optional<std::vector<HnpPackage>> GetInnerModuleInfoHnpInfo(const std::string &moduleName) const; 1239 std::string GetInnerModuleInfoHnpPath(const std::string &moduleName) const; 1240 void GetModuleNames(std::vector<std::string> &moduleNames) const; 1241 AddExtendResourceInfos(std::vector<ExtendResourceInfo> extendResourceInfos)1242 void AddExtendResourceInfos(std::vector<ExtendResourceInfo> extendResourceInfos) 1243 { 1244 for (const auto &extendResourceInfo : extendResourceInfos) { 1245 extendResourceInfos_[extendResourceInfo.moduleName] = extendResourceInfo; 1246 } 1247 } 1248 RemoveExtendResourceInfo(const std::string & moduleName)1249 void RemoveExtendResourceInfo(const std::string &moduleName) 1250 { 1251 auto iter = extendResourceInfos_.find(moduleName); 1252 if (iter != extendResourceInfos_.end()) { 1253 extendResourceInfos_.erase(iter); 1254 } 1255 } 1256 RemoveExtendResourceInfos(const std::vector<std::string> & moduleNames)1257 void RemoveExtendResourceInfos(const std::vector<std::string> &moduleNames) 1258 { 1259 for (const auto &moduleName : moduleNames) { 1260 RemoveExtendResourceInfo(moduleName); 1261 } 1262 } 1263 GetExtendResourceInfos()1264 const std::map<std::string, ExtendResourceInfo> &GetExtendResourceInfos() const 1265 { 1266 return extendResourceInfos_; 1267 } 1268 1269 const std::string GetCurDynamicIconModule() const; 1270 1271 void SetCurDynamicIconModule(const std::string &curDynamicIconModule); 1272 1273 const std::string GetCurDynamicIconModule(const int32_t userId, const int32_t appIndex) const; 1274 1275 bool SetCurDynamicIconModule(const std::string &curDynamicIconModule, 1276 const int32_t userId, const int32_t appIndex); 1277 1278 bool IsDynamicIconModuleExist() const; 1279 GetIconId()1280 uint32_t GetIconId() const 1281 { 1282 return baseApplicationInfo_->iconId; 1283 } 1284 SetIconId(uint32_t iconId)1285 void SetIconId(uint32_t iconId) 1286 { 1287 baseApplicationInfo_->iconId = iconId; 1288 } 1289 GetInnerModuleInfos()1290 const std::map<std::string, InnerModuleInfo> &GetInnerModuleInfos() const 1291 { 1292 return innerModuleInfos_; 1293 } 1294 /** 1295 * @brief Fetch all innerModuleInfos, can be modify. 1296 */ FetchInnerModuleInfos()1297 std::map<std::string, InnerModuleInfo> &FetchInnerModuleInfos() 1298 { 1299 return innerModuleInfos_; 1300 } 1301 /** 1302 * @brief Fetch all abilityInfos, can be modify. 1303 */ FetchAbilityInfos()1304 std::map<std::string, InnerAbilityInfo> &FetchAbilityInfos() 1305 { 1306 return baseAbilityInfos_; 1307 } 1308 /** 1309 * @brief Obtains all abilityInfos. 1310 */ GetInnerAbilityInfos()1311 const std::map<std::string, InnerAbilityInfo> &GetInnerAbilityInfos() const 1312 { 1313 return baseAbilityInfos_; 1314 } 1315 /** 1316 * @brief Obtains all skillInfos. 1317 */ GetInnerSkillInfos()1318 const std::map<std::string, std::vector<Skill>> &GetInnerSkillInfos() const 1319 { 1320 return skillInfos_; 1321 } 1322 /** 1323 * @brief Fetch all extensionAbilityInfos, can be modify. 1324 */ FetchInnerExtensionInfos()1325 std::map<std::string, InnerExtensionInfo> &FetchInnerExtensionInfos() 1326 { 1327 return baseExtensionInfos_; 1328 } 1329 /** 1330 * @brief Obtains all innerExtensionInfos. 1331 */ GetInnerExtensionInfos()1332 const std::map<std::string, InnerExtensionInfo> &GetInnerExtensionInfos() const 1333 { 1334 return baseExtensionInfos_; 1335 } 1336 /** 1337 * @brief Obtains all extensionSkillInfos. 1338 */ GetExtensionSkillInfos()1339 const std::map<std::string, std::vector<Skill>> &GetExtensionSkillInfos() const 1340 { 1341 return extensionSkillInfos_; 1342 } 1343 /** 1344 * @brief Get the bundle is whether removable. 1345 * @return Return whether the bundle is removable. 1346 */ IsRemovable()1347 bool IsRemovable() const 1348 { 1349 return baseApplicationInfo_->removable; 1350 } SetIsPreInstallApp(bool isPreInstallApp)1351 void SetIsPreInstallApp(bool isPreInstallApp) 1352 { 1353 baseBundleInfo_->isPreInstallApp = isPreInstallApp; 1354 } IsPreInstallApp()1355 bool IsPreInstallApp() const 1356 { 1357 return baseBundleInfo_->isPreInstallApp; 1358 } 1359 /** 1360 * @brief Get whether the bundle is a system app. 1361 * @return Return whether the bundle is a system app. 1362 */ IsSystemApp()1363 bool IsSystemApp() const 1364 { 1365 return baseApplicationInfo_->isSystemApp; 1366 } 1367 /** 1368 * @brief Get all InnerBundleUserInfo. 1369 * @return Return about all userinfo under the app. 1370 */ GetInnerBundleUserInfos()1371 const std::map<std::string, InnerBundleUserInfo>& GetInnerBundleUserInfos() const 1372 { 1373 return innerBundleUserInfos_; 1374 } 1375 /** 1376 * @brief Reset bundle state. 1377 * @param userId Indicates the userId to set. 1378 */ 1379 void ResetBundleState(int32_t userId); 1380 /** 1381 * @brief Set userId to remove userinfo. 1382 * @param userId Indicates the userId to set. 1383 */ 1384 void RemoveInnerBundleUserInfo(int32_t userId); 1385 /** 1386 * @brief Set userId to add userinfo. 1387 * @param userId Indicates the userInfo to set. 1388 */ 1389 void AddInnerBundleUserInfo(const InnerBundleUserInfo& userInfo); 1390 /** 1391 * @brief Set userId to add userinfo. 1392 * @param userId Indicates the userInfo to set. 1393 * @param userInfo Indicates the userInfo to get. 1394 * @return Return whether the user information is obtained successfully. 1395 */ 1396 bool GetInnerBundleUserInfo(int32_t userId, InnerBundleUserInfo& userInfo) const; 1397 /** 1398 * @brief Check whether the user exists. 1399 * @param userId Indicates the userInfo to set. 1400 * @return Return whether the user exists.. 1401 */ 1402 bool HasInnerBundleUserInfo(int32_t userId) const; 1403 /** 1404 * @brief Check whether onlyCreateBundleUser. 1405 * @return Return onlyCreateBundleUser. 1406 */ IsOnlyCreateBundleUser()1407 bool IsOnlyCreateBundleUser() const 1408 { 1409 return onlyCreateBundleUser_; 1410 } 1411 /** 1412 * @brief Set onlyCreateBundleUser. 1413 * @param onlyCreateBundleUser Indicates the onlyCreateBundleUser. 1414 */ SetOnlyCreateBundleUser(bool onlyCreateBundleUser)1415 void SetOnlyCreateBundleUser(bool onlyCreateBundleUser) 1416 { 1417 onlyCreateBundleUser_ = onlyCreateBundleUser; 1418 } 1419 /** 1420 * @brief Check whether isSingleton. 1421 * @return Return isSingleton. 1422 */ IsSingleton()1423 bool IsSingleton() const 1424 { 1425 return baseApplicationInfo_->singleton; 1426 } 1427 /** 1428 * @brief Get response userId. 1429 * @param userId Indicates the request userId.. 1430 * @return Return response userId. 1431 */ 1432 int32_t GetResponseUserId(int32_t requestUserId) const; 1433 GetModuleNameVec()1434 std::vector<std::string> GetModuleNameVec() const 1435 { 1436 std::vector<std::string> moduleVec; 1437 for (const auto &it : innerModuleInfos_) { 1438 moduleVec.emplace_back(it.first); 1439 } 1440 return moduleVec; 1441 } 1442 GetAccessTokenId(const int32_t userId)1443 uint32_t GetAccessTokenId(const int32_t userId) const 1444 { 1445 InnerBundleUserInfo userInfo; 1446 if (GetInnerBundleUserInfo(userId, userInfo)) { 1447 return userInfo.accessTokenId; 1448 } 1449 return 0; 1450 } 1451 1452 void SetAccessTokenId(uint32_t accessToken, const int32_t userId); 1453 GetAccessTokenIdEx(const int32_t userId)1454 uint64_t GetAccessTokenIdEx(const int32_t userId) const 1455 { 1456 InnerBundleUserInfo userInfo; 1457 if (GetInnerBundleUserInfo(userId, userInfo)) { 1458 return userInfo.accessTokenIdEx; 1459 } 1460 return 0; 1461 } 1462 1463 void SetAccessTokenIdEx(const Security::AccessToken::AccessTokenIDEx accessTokenIdEx, const int32_t userId); 1464 1465 void SetAccessTokenIdExWithAppIndex( 1466 const Security::AccessToken::AccessTokenIDEx accessTokenIdEx, 1467 const int32_t userId, const int32_t appIndex); 1468 SetIsNewVersion(bool flag)1469 void SetIsNewVersion(bool flag) 1470 { 1471 isNewVersion_ = flag; 1472 } 1473 GetIsNewVersion()1474 bool GetIsNewVersion() const 1475 { 1476 return isNewVersion_; 1477 } 1478 GetAsanEnabled()1479 bool GetAsanEnabled() const 1480 { 1481 return baseApplicationInfo_->asanEnabled; 1482 } 1483 SetAsanEnabled(bool asanEnabled)1484 void SetAsanEnabled(bool asanEnabled) 1485 { 1486 baseApplicationInfo_->asanEnabled = asanEnabled; 1487 } 1488 SetAllowedAcls(const std::vector<std::string> & allowedAcls)1489 void SetAllowedAcls(const std::vector<std::string> &allowedAcls) 1490 { 1491 allowedAcls_.clear(); 1492 for (const auto &acl : allowedAcls) { 1493 if (!acl.empty()) { 1494 allowedAcls_.emplace_back(acl); 1495 } 1496 } 1497 } 1498 GetAllowedAcls()1499 std::vector<std::string> GetAllowedAcls() const 1500 { 1501 return allowedAcls_; 1502 } 1503 IsU1Enable()1504 bool IsU1Enable() const 1505 { 1506 auto iter = std::find(allowedAcls_.begin(), allowedAcls_.end(), 1507 std::string(Constants::PERMISSION_U1_ENABLED)); 1508 if (iter != allowedAcls_.end()) { 1509 return true; 1510 } 1511 return false; 1512 } 1513 1514 /** 1515 * @brief ability is enabled. 1516 * @param abilityInfo Indicates the abilityInfo. 1517 * @param userId Indicates the user Id. 1518 * @return Return set ability enabled result. 1519 */ 1520 bool IsAbilityEnabled(const AbilityInfo &abilityInfo, int32_t userId, 1521 int32_t appIndex = 0) const; 1522 ErrCode IsAbilityEnabledV9(const AbilityInfo &abilityInfo, 1523 int32_t userId, bool &isEnable, int32_t appIndex = 0) const; 1524 IsAccessible()1525 bool IsAccessible() const 1526 { 1527 return baseApplicationInfo_->accessible; 1528 } 1529 1530 bool GetDependentModuleNames(const std::string &moduleName, std::vector<std::string> &dependentModuleNames) const; 1531 1532 bool GetAllDependentModuleNames(const std::string &moduleName, 1533 std::vector<std::string> &dependentModuleNames) const; 1534 1535 bool IsBundleRemovable() const; 1536 /** 1537 * @brief Which modules can be removed. 1538 * @param moduleToDelete Indicates the modules. 1539 * @return Return get module isRemoved result 1540 */ 1541 bool GetRemovableModules(std::vector<std::string> &moduleToDelete) const; 1542 /** 1543 * @brief Get freeInstall module. 1544 * @param freeInstallModule Indicates the modules. 1545 * @return Return get freeInstall module result 1546 */ 1547 bool GetFreeInstallModules(std::vector<std::string> &freeInstallModule) const; 1548 /** 1549 * @brief Whether module of userId is exist. 1550 * @param moduleName Indicates the moduleName. 1551 * @param userId Indicates the userId. 1552 * @return Return get module exist result. 1553 */ 1554 bool IsUserExistModule(const std::string &moduleName, int32_t userId) const; 1555 /** 1556 * @brief whether userId's module should be removed. 1557 * @param moduleName Indicates the moduleName. 1558 * @param userId Indicates the userId. 1559 * @param isRemovable Indicates the module whether is removable. 1560 * @return Return get module isRemoved result. 1561 */ 1562 ErrCode IsModuleRemovable(const std::string &moduleName, int32_t userId, bool &isRemovable) const; 1563 /** 1564 * @brief Add module removable info 1565 * @param info Indicates the innerModuleInfo of module. 1566 * @param stringUserId Indicates the string userId add to isRemovable map. 1567 * @param isEnable Indicates the value of enable module is removed. 1568 * @return Return add module isRemovable info result. 1569 */ 1570 bool AddModuleRemovableInfo(InnerModuleInfo &info, const std::string &stringUserId, bool isEnable) const; 1571 /** 1572 * @brief Set userId's module value of isRemoved. 1573 * @param moduleName Indicates the moduleName. 1574 * @param isEnable Indicates the module isRemovable is enable. 1575 * @param userId Indicates the userId. 1576 * @return Return set module isRemoved result. 1577 */ 1578 bool SetModuleRemovable(const std::string &moduleName, bool isEnable, int32_t userId); 1579 /** 1580 * @brief Delete userId isRemoved info from module. 1581 * @param moduleName Indicates the moduleName. 1582 * @param userId Indicates the userId. 1583 * @return 1584 */ 1585 void DeleteModuleRemovable(const std::string &moduleName, int32_t userId); 1586 /** 1587 * @brief Delete removable info. 1588 * @param info Indicates the innerModuleInfo of module. 1589 * @param stringUserId Indicates the string userId of isRemovable map. 1590 * @return 1591 */ 1592 void DeleteModuleRemovableInfo(InnerModuleInfo &info, const std::string &stringUserId); 1593 1594 /** 1595 * @brief Set atomic service resizeable. 1596 * @param moduleName Indicates the moduleName. 1597 * @param resizeable Indicates the atomic service resizeable. 1598 * @return Return set atomic service resizeable result. 1599 */ 1600 bool SetInnerModuleAtomicResizeable(const std::string &moduleName, bool resizeable); 1601 SetEntryInstallationFree(bool installationFree)1602 void SetEntryInstallationFree(bool installationFree) 1603 { 1604 baseBundleInfo_->entryInstallationFree = installationFree; 1605 if (installationFree) { 1606 baseApplicationInfo_->needAppDetail = false; 1607 baseApplicationInfo_->appDetailAbilityLibraryPath = Constants::EMPTY_STRING; 1608 } 1609 } 1610 GetEntryInstallationFree()1611 bool GetEntryInstallationFree() const 1612 { 1613 return baseBundleInfo_->entryInstallationFree; 1614 } 1615 SetBundlePackInfo(const BundlePackInfo & bundlePackInfo)1616 void SetBundlePackInfo(const BundlePackInfo &bundlePackInfo) 1617 { 1618 *bundlePackInfo_ = bundlePackInfo; 1619 } 1620 GetBundlePackInfo()1621 BundlePackInfo GetBundlePackInfo() const 1622 { 1623 return *bundlePackInfo_; 1624 } 1625 SetAppIndex(int32_t appIndex)1626 void SetAppIndex(int32_t appIndex) 1627 { 1628 appIndex_ = appIndex; 1629 } 1630 GetAppIndex()1631 int32_t GetAppIndex() const 1632 { 1633 return appIndex_; 1634 } 1635 SetIsSandbox(bool isSandbox)1636 void SetIsSandbox(bool isSandbox) 1637 { 1638 isSandboxApp_ = isSandbox; 1639 } 1640 GetIsSandbox()1641 bool GetIsSandbox() const 1642 { 1643 return isSandboxApp_; 1644 } 1645 CleanInnerBundleUserInfos()1646 void CleanInnerBundleUserInfos() 1647 { 1648 innerBundleUserInfos_.clear(); 1649 } 1650 GetCertificateFingerprint()1651 std::string GetCertificateFingerprint() const 1652 { 1653 return baseApplicationInfo_->fingerprint; 1654 } 1655 SetCertificateFingerprint(const std::string & fingerprint)1656 void SetCertificateFingerprint(const std::string &fingerprint) 1657 { 1658 baseApplicationInfo_->fingerprint = fingerprint; 1659 } 1660 GetNativeLibraryPath()1661 const std::string &GetNativeLibraryPath() const 1662 { 1663 return baseApplicationInfo_->nativeLibraryPath; 1664 } 1665 SetNativeLibraryPath(const std::string & nativeLibraryPath)1666 void SetNativeLibraryPath(const std::string &nativeLibraryPath) 1667 { 1668 baseApplicationInfo_->nativeLibraryPath = nativeLibraryPath; 1669 } 1670 GetArkNativeFileAbi()1671 const std::string &GetArkNativeFileAbi() const 1672 { 1673 return baseApplicationInfo_->arkNativeFileAbi; 1674 } 1675 SetArkNativeFileAbi(const std::string & arkNativeFileAbi)1676 void SetArkNativeFileAbi(const std::string &arkNativeFileAbi) 1677 { 1678 baseApplicationInfo_->arkNativeFileAbi = arkNativeFileAbi; 1679 } 1680 GetArkNativeFilePath()1681 const std::string &GetArkNativeFilePath() const 1682 { 1683 return baseApplicationInfo_->arkNativeFilePath; 1684 } 1685 SetArkNativeFilePath(const std::string & arkNativeFilePath)1686 void SetArkNativeFilePath(const std::string &arkNativeFilePath) 1687 { 1688 baseApplicationInfo_->arkNativeFilePath = arkNativeFilePath; 1689 } 1690 SetAllowAppRunWhenDeviceFirstLocked(bool allowAppRunWhenDeviceFirstLocked)1691 void SetAllowAppRunWhenDeviceFirstLocked(bool allowAppRunWhenDeviceFirstLocked) 1692 { 1693 baseApplicationInfo_->allowAppRunWhenDeviceFirstLocked = allowAppRunWhenDeviceFirstLocked; 1694 } 1695 SetAllowEnableNotification(bool allowEnableNotification)1696 void SetAllowEnableNotification(bool allowEnableNotification) 1697 { 1698 baseApplicationInfo_->allowEnableNotification = allowEnableNotification; 1699 } 1700 GetCpuAbi()1701 const std::string &GetCpuAbi() const 1702 { 1703 return baseApplicationInfo_->cpuAbi; 1704 } 1705 SetCpuAbi(const std::string & cpuAbi)1706 void SetCpuAbi(const std::string &cpuAbi) 1707 { 1708 baseApplicationInfo_->cpuAbi = cpuAbi; 1709 } 1710 SetRemovable(bool removable)1711 void SetRemovable(bool removable) 1712 { 1713 baseApplicationInfo_->removable = removable; 1714 } 1715 SetKeepAlive(bool keepAlive)1716 void SetKeepAlive(bool keepAlive) 1717 { 1718 baseApplicationInfo_->keepAlive = keepAlive; 1719 baseBundleInfo_->isKeepAlive = keepAlive; 1720 } 1721 SetSingleton(bool singleton)1722 void SetSingleton(bool singleton) 1723 { 1724 baseApplicationInfo_->singleton = singleton; 1725 baseBundleInfo_->singleton = singleton; 1726 } 1727 SetRunningResourcesApply(bool runningResourcesApply)1728 void SetRunningResourcesApply(bool runningResourcesApply) 1729 { 1730 baseApplicationInfo_->runningResourcesApply = runningResourcesApply; 1731 } 1732 SetAssociatedWakeUp(bool associatedWakeUp)1733 void SetAssociatedWakeUp(bool associatedWakeUp) 1734 { 1735 baseApplicationInfo_->associatedWakeUp = associatedWakeUp; 1736 } 1737 SetUserDataClearable(bool userDataClearable)1738 void SetUserDataClearable(bool userDataClearable) 1739 { 1740 baseApplicationInfo_->userDataClearable = userDataClearable; 1741 } 1742 SetHideDesktopIcon(bool hideDesktopIcon)1743 void SetHideDesktopIcon(bool hideDesktopIcon) 1744 { 1745 baseApplicationInfo_->hideDesktopIcon = hideDesktopIcon; 1746 if (hideDesktopIcon) { 1747 baseApplicationInfo_->needAppDetail = false; 1748 baseApplicationInfo_->appDetailAbilityLibraryPath = Constants::EMPTY_STRING; 1749 } 1750 } 1751 SetFormVisibleNotify(bool formVisibleNotify)1752 void SetFormVisibleNotify(bool formVisibleNotify) 1753 { 1754 baseApplicationInfo_->formVisibleNotify = formVisibleNotify; 1755 } 1756 SetAllowCommonEvent(const std::vector<std::string> & allowCommonEvent)1757 void SetAllowCommonEvent(const std::vector<std::string> &allowCommonEvent) 1758 { 1759 baseApplicationInfo_->allowCommonEvent.clear(); 1760 for (const auto &event : allowCommonEvent) { 1761 baseApplicationInfo_->allowCommonEvent.emplace_back(event); 1762 } 1763 } 1764 GetOverlayBundleInfo()1765 std::vector<OverlayBundleInfo> GetOverlayBundleInfo() const 1766 { 1767 return overlayBundleInfo_; 1768 } 1769 AddOverlayBundleInfo(const OverlayBundleInfo & overlayBundleInfo)1770 void AddOverlayBundleInfo(const OverlayBundleInfo &overlayBundleInfo) 1771 { 1772 auto iterator = std::find_if(overlayBundleInfo_.begin(), overlayBundleInfo_.end(), 1773 [&overlayBundleInfo](const auto &overlayInfo) { 1774 return overlayInfo.bundleName == overlayBundleInfo.bundleName; 1775 }); 1776 if (iterator != overlayBundleInfo_.end()) { 1777 overlayBundleInfo_.erase(iterator); 1778 } 1779 overlayBundleInfo_.emplace_back(overlayBundleInfo); 1780 } 1781 RemoveOverLayBundleInfo(const std::string & bundleName)1782 void RemoveOverLayBundleInfo(const std::string &bundleName) 1783 { 1784 auto iterator = std::find_if(overlayBundleInfo_.begin(), overlayBundleInfo_.end(), 1785 [&bundleName](const auto &overlayInfo) { 1786 return overlayInfo.bundleName == bundleName; 1787 }); 1788 if (iterator != overlayBundleInfo_.end()) { 1789 overlayBundleInfo_.erase(iterator); 1790 } 1791 } 1792 CleanOverLayBundleInfo()1793 void CleanOverLayBundleInfo() 1794 { 1795 overlayBundleInfo_.clear(); 1796 } 1797 GetTargetBundleName()1798 std::string GetTargetBundleName() const 1799 { 1800 return baseApplicationInfo_->targetBundleName; 1801 } 1802 SetTargetBundleName(const std::string & targetBundleName)1803 void SetTargetBundleName(const std::string &targetBundleName) 1804 { 1805 baseApplicationInfo_->targetBundleName = targetBundleName; 1806 } 1807 GetTargetPriority()1808 int32_t GetTargetPriority() const 1809 { 1810 return baseApplicationInfo_->targetPriority; 1811 } 1812 SetTargetPriority(int32_t priority)1813 void SetTargetPriority(int32_t priority) 1814 { 1815 baseApplicationInfo_->targetPriority = priority; 1816 } 1817 GetOverlayState()1818 int32_t GetOverlayState() const 1819 { 1820 return baseApplicationInfo_->overlayState; 1821 } 1822 SetOverlayState(int32_t state)1823 void SetOverlayState(int32_t state) 1824 { 1825 baseApplicationInfo_->overlayState = state; 1826 } 1827 GetOverlayType()1828 int32_t GetOverlayType() const 1829 { 1830 return overlayType_; 1831 } 1832 SetOverlayType(int32_t type)1833 void SetOverlayType(int32_t type) 1834 { 1835 overlayType_ = type; 1836 } 1837 AddOverlayModuleInfo(const OverlayModuleInfo & overlayModuleInfo)1838 void AddOverlayModuleInfo(const OverlayModuleInfo &overlayModuleInfo) 1839 { 1840 auto iterator = innerModuleInfos_.find(overlayModuleInfo.targetModuleName); 1841 if (iterator == innerModuleInfos_.end()) { 1842 return; 1843 } 1844 auto innerModuleInfo = iterator->second; 1845 auto overlayModuleInfoIt = std::find_if(innerModuleInfo.overlayModuleInfo.begin(), 1846 innerModuleInfo.overlayModuleInfo.end(), [&overlayModuleInfo](const auto &overlayInfo) { 1847 return (overlayInfo.moduleName == overlayModuleInfo.moduleName) && 1848 (overlayInfo.bundleName == overlayModuleInfo.bundleName); 1849 }); 1850 if (overlayModuleInfoIt != innerModuleInfo.overlayModuleInfo.end()) { 1851 innerModuleInfo.overlayModuleInfo.erase(overlayModuleInfoIt); 1852 } 1853 innerModuleInfo.overlayModuleInfo.emplace_back(overlayModuleInfo); 1854 innerModuleInfos_.erase(iterator); 1855 innerModuleInfos_.try_emplace(overlayModuleInfo.targetModuleName, innerModuleInfo); 1856 } 1857 RemoveOverlayModuleInfo(const std::string & targetModuleName,const std::string & bundleName,const std::string & moduleName)1858 void RemoveOverlayModuleInfo(const std::string &targetModuleName, const std::string &bundleName, 1859 const std::string &moduleName) 1860 { 1861 auto iterator = innerModuleInfos_.find(targetModuleName); 1862 if (iterator == innerModuleInfos_.end()) { 1863 return; 1864 } 1865 auto innerModuleInfo = iterator->second; 1866 auto overlayModuleInfoIt = std::find_if(innerModuleInfo.overlayModuleInfo.begin(), 1867 innerModuleInfo.overlayModuleInfo.end(), [&moduleName, &bundleName](const auto &overlayInfo) { 1868 return (overlayInfo.moduleName == moduleName) && (overlayInfo.bundleName == bundleName); 1869 }); 1870 if (overlayModuleInfoIt == innerModuleInfo.overlayModuleInfo.end()) { 1871 return; 1872 } 1873 innerModuleInfo.overlayModuleInfo.erase(overlayModuleInfoIt); 1874 innerModuleInfos_.erase(iterator); 1875 innerModuleInfos_.try_emplace(targetModuleName, innerModuleInfo); 1876 } 1877 RemoveAllOverlayModuleInfo(const std::string & bundleName)1878 void RemoveAllOverlayModuleInfo(const std::string &bundleName) 1879 { 1880 for (auto &innerModuleInfo : innerModuleInfos_) { 1881 innerModuleInfo.second.overlayModuleInfo.erase(std::remove_if( 1882 innerModuleInfo.second.overlayModuleInfo.begin(), innerModuleInfo.second.overlayModuleInfo.end(), 1883 [&bundleName](const auto &overlayInfo) { 1884 return overlayInfo.bundleName == bundleName; 1885 }), innerModuleInfo.second.overlayModuleInfo.end()); 1886 } 1887 } 1888 CleanAllOverlayModuleInfo()1889 void CleanAllOverlayModuleInfo() 1890 { 1891 for (auto &innerModuleInfo : innerModuleInfos_) { 1892 innerModuleInfo.second.overlayModuleInfo.clear(); 1893 } 1894 } 1895 isOverlayModule(const std::string & moduleName)1896 bool isOverlayModule(const std::string &moduleName) const 1897 { 1898 if (innerModuleInfos_.find(moduleName) == innerModuleInfos_.end()) { 1899 return true; 1900 } 1901 return !innerModuleInfos_.at(moduleName).targetModuleName.empty(); 1902 } 1903 isExistedOverlayModule()1904 bool isExistedOverlayModule() const 1905 { 1906 for (const auto &innerModuleInfo : innerModuleInfos_) { 1907 if (!innerModuleInfo.second.targetModuleName.empty()) { 1908 return true; 1909 } 1910 } 1911 return false; 1912 } 1913 KeepOldOverlayConnection(InnerBundleInfo & info)1914 void KeepOldOverlayConnection(InnerBundleInfo &info) 1915 { 1916 auto &newInnerModuleInfos = info.FetchInnerModuleInfos(); 1917 for (const auto &innerModuleInfo : innerModuleInfos_) { 1918 if ((!innerModuleInfo.second.overlayModuleInfo.empty()) && 1919 (newInnerModuleInfos.find(innerModuleInfo.second.moduleName) != newInnerModuleInfos.end())) { 1920 newInnerModuleInfos[innerModuleInfo.second.moduleName].overlayModuleInfo = 1921 innerModuleInfo.second.overlayModuleInfo; 1922 return; 1923 } 1924 } 1925 } 1926 SetAsanLogPath(const std::string & asanLogPath)1927 void SetAsanLogPath(const std::string& asanLogPath) 1928 { 1929 baseApplicationInfo_->asanLogPath = asanLogPath; 1930 } 1931 GetAsanLogPath()1932 std::string GetAsanLogPath() const 1933 { 1934 return baseApplicationInfo_->asanLogPath; 1935 } 1936 SetApplicationBundleType(BundleType type)1937 void SetApplicationBundleType(BundleType type) 1938 { 1939 baseApplicationInfo_->bundleType = type; 1940 } 1941 GetApplicationBundleType()1942 BundleType GetApplicationBundleType() const 1943 { 1944 return baseApplicationInfo_->bundleType; 1945 } 1946 SetInnerModuleAtomicPreload(const std::string & moduleName,const std::vector<std::string> & preloads)1947 bool SetInnerModuleAtomicPreload(const std::string &moduleName, const std::vector<std::string> &preloads) 1948 { 1949 if (innerModuleInfos_.find(moduleName) == innerModuleInfos_.end()) { 1950 APP_LOGE("innerBundleInfo does not contain the module"); 1951 return false; 1952 } 1953 innerModuleInfos_.at(moduleName).preloads = preloads; 1954 return true; 1955 } 1956 SetAppProvisionMetadata(const std::vector<Metadata> & metadatas)1957 void SetAppProvisionMetadata(const std::vector<Metadata> &metadatas) 1958 { 1959 provisionMetadatas_ = metadatas; 1960 } 1961 GetAppProvisionMetadata()1962 std::vector<Metadata> GetAppProvisionMetadata() const 1963 { 1964 return provisionMetadatas_; 1965 } 1966 GetInnerSharedModuleInfos()1967 const std::map<std::string, std::vector<InnerModuleInfo>> &GetInnerSharedModuleInfos() const 1968 { 1969 return innerSharedModuleInfos_; 1970 } 1971 GetDependencies()1972 std::vector<Dependency> GetDependencies() const 1973 { 1974 std::vector<Dependency> dependenciesList; 1975 for (auto it = innerModuleInfos_.begin(); it != innerModuleInfos_.end(); it++) { 1976 for (const auto &item : it->second.dependencies) { 1977 dependenciesList.emplace_back(item); 1978 } 1979 } 1980 return dependenciesList; 1981 } 1982 GetAllHspModuleNamesForVersion(uint32_t versionCode)1983 std::vector<std::string> GetAllHspModuleNamesForVersion(uint32_t versionCode) const 1984 { 1985 std::vector<std::string> hspModuleNames; 1986 for (const auto &[moduleName, modules] : innerSharedModuleInfos_) { 1987 for (const auto &item : modules) { 1988 if (item.versionCode == versionCode) { 1989 hspModuleNames.emplace_back(moduleName); 1990 } 1991 } 1992 } 1993 return hspModuleNames; 1994 } 1995 1996 void AddAllowedAcls(const std::vector<std::string> &allowedAcls); GetModuleBuildHash(const std::string & moduleName,std::string & buildHash)1997 bool GetModuleBuildHash(const std::string &moduleName, std::string &buildHash) const 1998 { 1999 if (innerModuleInfos_.find(moduleName) == innerModuleInfos_.end()) { 2000 APP_LOGE("innerBundleInfo does not contain the module"); 2001 return false; 2002 } 2003 buildHash = innerModuleInfos_.at(moduleName).buildHash; 2004 return true; 2005 } 2006 GetDataGroupInfos()2007 const std::unordered_map<std::string, std::vector<DataGroupInfo>> GetDataGroupInfos() const 2008 { 2009 return dataGroupInfos_; 2010 } 2011 DeleteDataGroupInfo(const std::string & dataGroupId)2012 void DeleteDataGroupInfo(const std::string &dataGroupId) 2013 { 2014 if (dataGroupInfos_.find(dataGroupId) == dataGroupInfos_.end()) { 2015 return; 2016 } 2017 dataGroupInfos_.erase(dataGroupId); 2018 } 2019 2020 void AddDataGroupInfo(const std::string &dataGroupId, const DataGroupInfo &info); 2021 RemoveGroupInfos(int32_t userId,const std::string & dataGroupId)2022 void RemoveGroupInfos(int32_t userId, const std::string &dataGroupId) 2023 { 2024 auto iter = dataGroupInfos_.find(dataGroupId); 2025 if (iter == dataGroupInfos_.end()) { 2026 return; 2027 } 2028 for (auto dataGroupIter = iter->second.begin(); dataGroupIter != iter->second.end(); dataGroupIter++) { 2029 if (dataGroupIter->userId == userId) { 2030 iter->second.erase(dataGroupIter); 2031 return; 2032 } 2033 } 2034 } 2035 UpdateDataGroupInfos(const std::unordered_map<std::string,std::vector<DataGroupInfo>> & dataGroupInfos)2036 void UpdateDataGroupInfos(const std::unordered_map<std::string, std::vector<DataGroupInfo>> &dataGroupInfos) 2037 { 2038 std::set<int32_t> userIdList; 2039 for (auto item = dataGroupInfos.begin(); item != dataGroupInfos.end(); item++) { 2040 for (const DataGroupInfo &info : item->second) { 2041 userIdList.insert(info.userId); 2042 } 2043 } 2044 2045 std::vector<std::string> deletedGroupIds; 2046 for (auto &item : dataGroupInfos_) { 2047 if (dataGroupInfos.find(item.first) == dataGroupInfos.end()) { 2048 for (int32_t userId : userIdList) { 2049 RemoveGroupInfos(userId, item.first); 2050 } 2051 } 2052 if (item.second.empty()) { 2053 deletedGroupIds.emplace_back(item.first); 2054 } 2055 } 2056 for (std::string groupId : deletedGroupIds) { 2057 dataGroupInfos_.erase(groupId); 2058 } 2059 for (auto item = dataGroupInfos.begin(); item != dataGroupInfos.end(); item++) { 2060 std::string dataGroupId = item->first; 2061 for (const DataGroupInfo &info : item->second) { 2062 AddDataGroupInfo(dataGroupId, info); 2063 } 2064 } 2065 } 2066 SetApplicationReservedFlag(uint32_t flag)2067 void SetApplicationReservedFlag(uint32_t flag) 2068 { 2069 baseApplicationInfo_->applicationReservedFlag |= flag; 2070 } 2071 ClearApplicationReservedFlag(uint32_t flag)2072 void ClearApplicationReservedFlag(uint32_t flag) 2073 { 2074 baseApplicationInfo_->applicationReservedFlag &= ~flag; 2075 } 2076 GetApplicationReservedFlag()2077 uint32_t GetApplicationReservedFlag() const 2078 { 2079 return baseApplicationInfo_->applicationReservedFlag; 2080 } 2081 SetGwpAsanEnabled(bool gwpAsanEnabled)2082 void SetGwpAsanEnabled(bool gwpAsanEnabled) 2083 { 2084 baseApplicationInfo_->gwpAsanEnabled = gwpAsanEnabled; 2085 } 2086 GetGwpAsanEnabled()2087 bool GetGwpAsanEnabled() const 2088 { 2089 return baseApplicationInfo_->gwpAsanEnabled; 2090 } 2091 GetTsanEnabled()2092 bool GetTsanEnabled() const 2093 { 2094 return baseApplicationInfo_->tsanEnabled; 2095 } 2096 SetTsanEnabled(bool tsanEnabled)2097 void SetTsanEnabled(bool tsanEnabled) 2098 { 2099 baseApplicationInfo_->tsanEnabled = tsanEnabled; 2100 } 2101 GetHwasanEnabled()2102 bool GetHwasanEnabled() const 2103 { 2104 return baseApplicationInfo_->hwasanEnabled; 2105 } 2106 SetHwasanEnabled(bool hwasanEnabled)2107 void SetHwasanEnabled(bool hwasanEnabled) 2108 { 2109 baseApplicationInfo_->hwasanEnabled = hwasanEnabled; 2110 } 2111 GetUbsanEnabled()2112 bool GetUbsanEnabled() const 2113 { 2114 return baseApplicationInfo_->ubsanEnabled; 2115 } 2116 SetUbsanEnabled(bool ubsanEnabled)2117 void SetUbsanEnabled(bool ubsanEnabled) 2118 { 2119 baseApplicationInfo_->ubsanEnabled = ubsanEnabled; 2120 } 2121 GetAppEnvironments()2122 std::vector<ApplicationEnvironment> GetAppEnvironments() const 2123 { 2124 return baseApplicationInfo_->appEnvironments; 2125 } 2126 SetAppEnvironments(std::vector<ApplicationEnvironment> appEnvironments)2127 void SetAppEnvironments(std::vector<ApplicationEnvironment> appEnvironments) 2128 { 2129 baseApplicationInfo_->appEnvironments = appEnvironments; 2130 } 2131 GetAssetAccessGroups()2132 std::vector<std::string> GetAssetAccessGroups() const 2133 { 2134 return baseApplicationInfo_->assetAccessGroups; 2135 } 2136 GetDeveloperId()2137 std::string GetDeveloperId() const 2138 { 2139 return developerId_; 2140 } 2141 GetMaxChildProcess()2142 int32_t GetMaxChildProcess() const 2143 { 2144 return baseApplicationInfo_->maxChildProcess; 2145 } 2146 SetMaxChildProcess(int32_t maxChildProcess)2147 void SetMaxChildProcess(int32_t maxChildProcess) 2148 { 2149 baseApplicationInfo_->maxChildProcess = maxChildProcess; 2150 } 2151 SetOrganization(const std::string & organization)2152 void SetOrganization(const std::string &organization) 2153 { 2154 baseApplicationInfo_->organization = organization; 2155 } 2156 GetMultiAppMaxCount()2157 int32_t GetMultiAppMaxCount() const 2158 { 2159 return baseApplicationInfo_->multiAppMode.maxCount; 2160 } 2161 GetMultiAppModeType()2162 MultiAppModeType GetMultiAppModeType() const 2163 { 2164 return baseApplicationInfo_->multiAppMode.multiAppModeType; 2165 } 2166 SetInstallSource(const std::string & installSource)2167 void SetInstallSource(const std::string &installSource) 2168 { 2169 baseApplicationInfo_->installSource = installSource; 2170 } 2171 IsInstalledForAllUser()2172 bool IsInstalledForAllUser() const 2173 { 2174 return baseApplicationInfo_->installedForAllUser; 2175 } 2176 SetInstalledForAllUser(bool installedForAllUser)2177 void SetInstalledForAllUser(bool installedForAllUser) const 2178 { 2179 // only update from false to true 2180 if (baseApplicationInfo_->installedForAllUser && !installedForAllUser) { 2181 APP_LOGI("origin value is true, return"); 2182 return; 2183 } 2184 baseApplicationInfo_->installedForAllUser = installedForAllUser; 2185 } 2186 GetAllPluginBundleInfo()2187 std::unordered_map<std::string, PluginBundleInfo> GetAllPluginBundleInfo() const 2188 { 2189 APP_LOGI("pluginBundleInfos size: %{public}zu", pluginBundleInfos_.size()); 2190 return pluginBundleInfos_; 2191 } 2192 2193 bool GetPluginBundleInfos(const int32_t userId, 2194 std::unordered_map<std::string, PluginBundleInfo> &pluginBundleInfos) const; 2195 void SetApplicationFlags(ApplicationInfoFlag flag); 2196 2197 void UpdateExtensionSandboxInfo(const std::vector<std::string> &typeList); 2198 std::vector<std::string> GetAllExtensionDirsInSpecifiedModule(const std::string &moduleName) const; 2199 std::vector<std::string> GetAllExtensionDirs() const; 2200 void UpdateExtensionDataGroupInfo(const std::string &key, const std::vector<std::string> &dataGroupIds); 2201 void SetAppDistributionType(const std::string &appDistributionType); 2202 2203 std::string GetAppDistributionType() const; 2204 2205 void SetAppProvisionType(const std::string &appProvisionType); 2206 2207 std::string GetAppProvisionType() const; 2208 2209 void SetAppCrowdtestDeadline(int64_t crowdtestDeadline); 2210 2211 int64_t GetAppCrowdtestDeadline() const; 2212 2213 std::vector<std::string> GetDistroModuleName() const; 2214 2215 std::string GetModuleNameByPackage(const std::string &packageName) const; 2216 2217 std::string GetModuleTypeByPackage(const std::string &packageName) const; 2218 2219 AppQuickFix GetAppQuickFix() const; 2220 2221 void SetAppQuickFix(const AppQuickFix &appQuickFix); 2222 2223 std::vector<HqfInfo> GetQuickFixHqfInfos() const; 2224 2225 void SetQuickFixHqfInfos(const std::vector<HqfInfo> &hqfInfos); 2226 2227 void UpdatePrivilegeCapability(const ApplicationInfo &applicationInfo); 2228 void UpdateRemovable(bool isPreInstall, bool removable); 2229 bool FetchNativeSoAttrs( 2230 const std::string &requestPackage, std::string &cpuAbi, std::string &nativeLibraryPath) const; 2231 void UpdateNativeLibAttrs(const ApplicationInfo &applicationInfo); 2232 void UpdateArkNativeAttrs(const ApplicationInfo &applicationInfo); 2233 bool IsLibIsolated(const std::string &moduleName) const; 2234 std::vector<std::string> GetDeviceType(const std::string &packageName) const; 2235 std::map<std::string, std::vector<std::string>> GetRequiredDeviceFeatures(const std::string &packageName) const; 2236 int64_t GetLastInstallationTime() const; 2237 void UpdateAppDetailAbilityAttrs(); 2238 bool IsHideDesktopIcon() const; 2239 void AddApplyQuickFixFrequency(); 2240 int32_t GetApplyQuickFixFrequency() const; 2241 void ResetApplyQuickFixFrequency(); 2242 2243 bool GetOverlayModuleState(const std::string &moduleName, int32_t userId, int32_t &state) const; 2244 2245 void SetOverlayModuleState(const std::string &moduleName, int32_t state, int32_t userId); 2246 2247 void SetOverlayModuleState(const std::string &moduleName, int32_t state); 2248 2249 void ClearOverlayModuleStates(const std::string &moduleName); 2250 2251 void SetInnerModuleNeedDelete(const std::string &moduleName, const bool needDelete); 2252 2253 bool GetInnerModuleNeedDelete(const std::string &moduleName); 2254 2255 bool GetBaseSharedBundleInfo(const std::string &moduleName, uint32_t versionCode, 2256 BaseSharedBundleInfo &baseSharedBundleInfo) const; 2257 bool GetMaxVerBaseSharedBundleInfo(const std::string &moduleName, 2258 BaseSharedBundleInfo &baseSharedBundleInfo) const; 2259 void InsertInnerSharedModuleInfo(const std::string &moduleName, const InnerModuleInfo &innerModuleInfo); 2260 void SetSharedModuleNativeLibraryPath(const std::string &nativeLibraryPath); 2261 bool GetSharedBundleInfo(SharedBundleInfo &sharedBundleInfo) const; 2262 bool GetSharedDependencies(const std::string &moduleName, std::vector<Dependency> &dependencies) const; 2263 bool GetAllSharedDependencies(const std::string &moduleName, std::vector<Dependency> &dependencies) const; 2264 std::vector<uint32_t> GetAllHspVersion() const; 2265 void DeleteHspModuleByVersion(int32_t versionCode); 2266 bool GetSharedBundleInfo(int32_t flags, BundleInfo &bundleInfo) const; 2267 ErrCode GetProxyDataInfos(const std::string &moduleName, std::vector<ProxyData> &proxyDatas) const; 2268 void GetAllProxyDataInfos(std::vector<ProxyData> &proxyDatas) const; 2269 bool IsCompressNativeLibs(const std::string &moduleName) const; 2270 void SetNativeLibraryFileNames(const std::string &moduleName, const std::vector<std::string> &fileNames); 2271 void UpdateSharedModuleInfo(); 2272 AOTCompileStatus GetAOTCompileStatus(const std::string &moduleName) const; 2273 void SetAOTCompileStatus(const std::string &moduleName, AOTCompileStatus aotCompileStatus); 2274 bool IsAOTFlagsInitial() const; 2275 void ResetAOTFlags(); 2276 ErrCode ResetAOTCompileStatus(const std::string &moduleName); 2277 void GetInternalDependentHspInfo(const std::string &moduleName, std::vector<HspInfo> &hspInfoVector) const; 2278 ErrCode SetExtName(const std::string &moduleName, const std::string &abilityName, const std::string extName); 2279 ErrCode SetMimeType(const std::string &moduleName, const std::string &abilityName, const std::string mimeType); 2280 ErrCode DelExtName(const std::string &moduleName, const std::string &abilityName, const std::string extName); 2281 ErrCode DelMimeType(const std::string &moduleName, const std::string &abilityName, const std::string extName); 2282 void SetResourcesApply(const std::vector<int32_t> &resourcesApply); 2283 void SetAppIdentifier(const std::string &appIdentifier); 2284 std::string GetAppIdentifier() const; 2285 void SetCertificate(const std::string &certificate); 2286 std::string GetCertificate() const; 2287 void AddOldAppId(const std::string &appId); 2288 std::vector<std::string> GetOldAppIds() const; 2289 void SetMoudleIsEncrpted(const std::string &packageName, bool isEncrypted); 2290 bool IsEncryptedMoudle(const std::string &packageName) const; 2291 void GetAllEncryptedModuleNames(std::vector<std::string> &moduleNames) const; 2292 bool IsContainEncryptedModule() const; 2293 void UpdateDebug(const InnerBundleInfo &newInfo); 2294 bool GetDebugFromModules(const std::map<std::string, InnerModuleInfo> &innerModuleInfos); 2295 ErrCode GetAppServiceHspInfo(BundleInfo &bundleInfo) const; 2296 std::vector<std::string> GetQuerySchemes() const; 2297 void UpdateOdid(const std::string &developerId, const std::string &odid); 2298 void UpdateOdidByBundleInfo(const InnerBundleInfo &info); 2299 void GetDeveloperidAndOdid(std::string &developerId, std::string &odid) const; 2300 void GetOdid(std::string &odid) const; 2301 bool IsAsanEnabled() const; 2302 bool IsGwpAsanEnabled() const; 2303 bool IsTsanEnabled() const; 2304 bool NeedCreateEl5Dir() const; 2305 bool GetUninstallState() const; 2306 void SetUninstallState(const bool &uninstallState); 2307 bool IsNeedSendNotify() const; 2308 void SetNeedSendNotify(const bool needStatus); 2309 void UpdateMultiAppMode(const InnerBundleInfo &newInfo); 2310 void UpdateReleaseType(const InnerBundleInfo &newInfo); 2311 ErrCode AddCloneBundle(const InnerBundleCloneInfo &attr); 2312 ErrCode RemoveCloneBundle(const int32_t userId, const int32_t appIndex); 2313 ErrCode GetAvailableCloneAppIndex(const int32_t userId, int32_t &appIndex); 2314 ErrCode IsCloneAppIndexExisted(const int32_t userId, const int32_t appIndex, bool &res); 2315 void SetkeyId(const int32_t userId, const std::string &keyId, const int32_t appIndex = 0); 2316 void InnerSetKeyId(const int32_t userId, const std::string &keyId, const int32_t appIndex = 0); 2317 std::string GetKeyId(const int32_t userId, const int32_t appIndex); 2318 bool GetApplicationInfoAdaptBundleClone(const InnerBundleUserInfo &innerBundleUserInfo, int32_t appIndex, 2319 ApplicationInfo &appInfo) const; 2320 bool GetBundleInfoAdaptBundleClone(const InnerBundleUserInfo &innerBundleUserInfo, int32_t appIndex, 2321 BundleInfo &bundleInfo) const; 2322 ErrCode VerifyAndAckCloneAppIndex(int32_t userId, int32_t &appIndex); 2323 void AdaptMainLauncherResourceInfo(ApplicationInfo &applicationInfo) const; 2324 bool IsHwasanEnabled() const; 2325 bool IsUbsanEnabled() const; 2326 ErrCode UpdateAppEncryptedStatus(const std::string &bundleName, bool isExisted, int32_t appIndex); 2327 std::set<int32_t> GetCloneBundleAppIndexes() const; 2328 static uint8_t GetSanitizerFlag(GetInnerModuleInfoFlag flag); 2329 void InnerProcessShortcut(const Shortcut &oldShortcut, ShortcutInfo &shortcutInfo) const; 2330 void HandleOTACodeEncryption(std::vector<std::string> &withoutKeyBundles, 2331 std::vector<std::string> &withKeyBundles) const; 2332 void CheckHapEncryption(const CheckEncryptionParam &checkEncryptionParam, 2333 const InnerModuleInfo &moduleInfo) const; 2334 void CheckSoEncryption(const CheckEncryptionParam &checkEncryptionParam, const std::string &requestPackage, 2335 const InnerModuleInfo &moduleInfo) const; 2336 std::string GetModuleArkTSMode(const std::string &moduleName) const; 2337 SetMultiAppMode(MultiAppModeData multiAppMode)2338 void SetMultiAppMode(MultiAppModeData multiAppMode) 2339 { 2340 baseApplicationInfo_->multiAppMode = multiAppMode; 2341 } 2342 2343 void SetDFXParamStatus(); GetApplicationFlags()2344 int32_t GetApplicationFlags() const 2345 { 2346 return baseApplicationInfo_->applicationFlags; 2347 } 2348 bool ConvertPluginBundleInfo(const std::string &bundleName, PluginBundleInfo &pluginBundleInfo) const; 2349 bool AddPluginBundleInfo(const PluginBundleInfo &pluginBundleInfo, const int32_t userId); 2350 bool RemovePluginBundleInfo(const std::string &pluginBundleName, const int32_t userId); 2351 bool HasMultiUserPlugin(const std::string &pluginBundleName) const; 2352 bool UpdatePluginBundleInfo(const PluginBundleInfo &pluginBundleInfo); 2353 bool RemovePluginFromUserInfo(const std::string &pluginBundleName, const int32_t userId); 2354 void GetAllDynamicIconInfo(const int32_t userId, std::vector<DynamicIconInfo> &dynamicIconInfos) const; 2355 std::string GetApplicationArkTSMode() const; 2356 void UpdateHasCloudkitConfig(); 2357 int32_t GetModuleSize() const; 2358 2359 private: 2360 bool IsExistLauncherAbility() const; 2361 void GetBundleWithAbilities( 2362 int32_t flags, BundleInfo &bundleInfo, int32_t appIndex, int32_t userId = Constants::UNSPECIFIED_USERID) const; 2363 void GetBundleWithExtension( 2364 int32_t flags, BundleInfo &bundleInfo, int32_t appIndex, int32_t userId = Constants::UNSPECIFIED_USERID) const; 2365 void BuildDefaultUserInfo(); 2366 void RemoveDuplicateName(std::vector<std::string> &name) const; 2367 void GetBundleWithReqPermissionsV9( 2368 int32_t flags, int32_t userId, BundleInfo &bundleInfo, int32_t appIndex = 0) const; 2369 void ProcessBundleFlags( 2370 int32_t flags, int32_t userId, BundleInfo &bundleInfo, int32_t appIndex = 0) const; 2371 void ProcessBundleWithHapModuleInfoFlag( 2372 int32_t flags, BundleInfo &bundleInfo, int32_t userId, int32_t appIndex = 0) const; 2373 void GetBundleWithAbilitiesV9( 2374 int32_t flags, HapModuleInfo &hapModuleInfo, int32_t userId, int32_t appIndex = 0) const; 2375 void GetBundleWithExtensionAbilitiesV9(int32_t flags, HapModuleInfo &hapModuleInfo, int32_t appIndex = 0) const; 2376 IsolationMode GetIsolationMode(const std::string &isolationMode) const; 2377 void UpdateIsCompressNativeLibs(); 2378 void InnerProcessRequestPermissions( 2379 const std::unordered_map<std::string, std::string> &moduleNameMap, 2380 std::vector<RequestPermission> &requestPermissions) const; 2381 bool ShouldReplacePermission(const RequestPermission &oldPermission, const RequestPermission &newPermission, 2382 const std::unordered_map<std::string, std::string> &moduleNameTypeMap) const; 2383 void PrintSetEnabledInfo(bool isEnabled, int32_t userId, int32_t appIndex, 2384 const std::string &bundleName, const std::string &caller) const; 2385 void GetPreInstallApplicationFlags(ApplicationInfo &appInfo) const; 2386 2387 bool isSandboxApp_ = false; 2388 // Auxiliary property, which is used when the application 2389 // has been installed when the user is created. 2390 bool onlyCreateBundleUser_ = false; 2391 // new version fields 2392 bool isNewVersion_ = false; 2393 2394 // use to control uninstalling 2395 bool uninstallState_ = true; 2396 2397 // need to send a notification when uninstallState_ change 2398 bool isNeedSendNotify_ = false; 2399 BundleStatus bundleStatus_ = BundleStatus::ENABLED; 2400 int32_t appIndex_ = Constants::INITIAL_APP_INDEX; 2401 // apply quick fix frequency 2402 int32_t applyQuickFixFrequency_ = 0; 2403 int32_t overlayType_ = NON_OVERLAY_TYPE; 2404 // using for get 2405 Constants::AppType appType_ = Constants::AppType::THIRD_PARTY_APP; 2406 int userId_ = Constants::DEFAULT_USERID; 2407 std::string appFeature_; 2408 2409 // only using for install or update progress, doesn't need to save to database 2410 std::string currentPackage_; 2411 // curDynamicIconModule only in ExtendResourceInfos 2412 std::string curDynamicIconModule_; 2413 2414 // for odid 2415 std::string developerId_; 2416 std::string odid_; 2417 std::shared_ptr<ApplicationInfo> baseApplicationInfo_; 2418 std::shared_ptr<BundleInfo> baseBundleInfo_; // applicationInfo and abilityInfo empty 2419 2420 std::shared_ptr<BundlePackInfo> bundlePackInfo_; 2421 InstallMark mark_; 2422 std::vector<std::string> allowedAcls_; 2423 2424 // quick fix hqf info 2425 std::vector<HqfInfo> hqfInfos_; 2426 2427 // overlay bundleInfo 2428 std::vector<OverlayBundleInfo> overlayBundleInfo_; 2429 2430 // provision metadata 2431 std::vector<Metadata> provisionMetadatas_; 2432 2433 std::map<std::string, InnerModuleInfo> innerModuleInfos_; 2434 2435 std::map<std::string, std::vector<FormInfo>> formInfos_; 2436 std::map<std::string, CommonEventInfo> commonEvents_; 2437 std::map<std::string, ShortcutInfo> shortcutInfos_; 2438 2439 std::map<std::string, InnerAbilityInfo> baseAbilityInfos_; 2440 std::map<std::string, std::vector<Skill>> skillInfos_; 2441 2442 std::map<std::string, InnerBundleUserInfo> innerBundleUserInfos_; 2443 std::map<std::string, InnerExtensionInfo> baseExtensionInfos_; 2444 std::map<std::string, std::vector<Skill>> extensionSkillInfos_; 2445 2446 // shared module info 2447 std::map<std::string, std::vector<InnerModuleInfo>> innerSharedModuleInfos_ ; 2448 2449 // key:moduleName value:ExtendResourceInfo 2450 std::map<std::string, ExtendResourceInfo> extendResourceInfos_; 2451 2452 // data group info 2453 std::unordered_map<std::string, std::vector<DataGroupInfo>> dataGroupInfos_; 2454 2455 // pluginBundleName -> pluginBundleInfo 2456 std::unordered_map<std::string, PluginBundleInfo> pluginBundleInfos_; 2457 }; 2458 2459 void from_json(const nlohmann::json &jsonObject, InnerModuleInfo &info); 2460 void from_json(const nlohmann::json &jsonObject, Distro &distro); 2461 void from_json(const nlohmann::json &jsonObject, InstallMark &installMark); 2462 void from_json(const nlohmann::json &jsonObject, DefinePermission &definePermission); 2463 void from_json(const nlohmann::json &jsonObject, Dependency &dependency); 2464 void from_json(const nlohmann::json &jsonObject, OverlayBundleInfo &overlayBundleInfo); 2465 void from_json(const nlohmann::json &jsonObject, ExtendResourceInfo &extendResourceInfo); 2466 void to_json(nlohmann::json &jsonObject, const ExtendResourceInfo &extendResourceInfo); 2467 } // namespace AppExecFwk 2468 } // namespace OHOS 2469 #endif // FOUNDATION_APPEXECFWK_SERVICES_BUNDLEMGR_INCLUDE_INNER_BUNDLE_INFO_H 2470