1 /* 2 * Copyright (c) 2022-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H 17 #define BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H 18 19 #include "ability_info.h" 20 #include "app_provision_info.h" 21 #include "base_cb_info.h" 22 #include "bundle_constants.h" 23 #include "bundle_info.h" 24 #include "bundle_mgr_interface.h" 25 #include "clean_cache_callback.h" 26 #include "common_event_manager.h" 27 #include "common_event_subscriber.h" 28 #include "common_event_support.h" 29 #include "napi/native_api.h" 30 #include "napi/native_common.h" 31 #include "napi/native_node_api.h" 32 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED 33 #include "pixel_map.h" 34 #endif 35 #include "preinstalled_application_info.h" 36 #include "process_cache_callback_host.h" 37 #include "recoverable_application_info.h" 38 #include "shared/shared_bundle_info.h" 39 #include "want.h" 40 41 namespace OHOS { 42 namespace AppExecFwk { 43 class ClearCacheListener final : public EventFwk::CommonEventSubscriber { 44 public: 45 explicit ClearCacheListener(const EventFwk::CommonEventSubscribeInfo &subscribeInfo); 46 virtual ~ClearCacheListener() = default; 47 void OnReceiveEvent(const EventFwk::CommonEventData &data) override; 48 static void HandleCleanEnv(void *data); 49 }; 50 struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo { GetBundleArchiveInfoCallbackInfoGetBundleArchiveInfoCallbackInfo51 explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 52 53 int32_t flags = 0; 54 std::string hapFilePath; 55 BundleInfo bundleInfo; 56 }; 57 struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo { GetBundleNameByUidCallbackInfoGetBundleNameByUidCallbackInfo58 explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 59 60 int32_t uid = 0; 61 std::string bundleName; 62 }; 63 struct GetAppCloneIdentityCallbackInfo : public GetBundleNameByUidCallbackInfo { GetAppCloneIdentityCallbackInfoGetAppCloneIdentityCallbackInfo64 explicit GetAppCloneIdentityCallbackInfo(napi_env env) : GetBundleNameByUidCallbackInfo(env) {} 65 66 int32_t appIndex = 0; 67 }; 68 struct AbilityCallbackInfo : public BaseCallbackInfo { AbilityCallbackInfoAbilityCallbackInfo69 explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 70 71 bool isSavedInCache = false; 72 int32_t flags = 0; 73 int32_t userId = Constants::UNSPECIFIED_USERID; 74 std::vector<AbilityInfo> abilityInfos; 75 OHOS::AAFwk::Want want; 76 }; 77 78 struct BatchAbilityCallbackInfo : public BaseCallbackInfo { BatchAbilityCallbackInfoBatchAbilityCallbackInfo79 explicit BatchAbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 80 81 bool isSavedInCache = false; 82 int32_t flags = 0; 83 int32_t userId = Constants::UNSPECIFIED_USERID; 84 std::vector<AbilityInfo> abilityInfos; 85 std::vector<OHOS::AAFwk::Want> wants; 86 }; 87 88 struct ExtensionCallbackInfo : public BaseCallbackInfo { ExtensionCallbackInfoExtensionCallbackInfo89 explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 90 91 bool isSavedInCache = false; 92 int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED); 93 int32_t flags = 0; 94 int32_t userId = Constants::UNSPECIFIED_USERID; 95 std::vector<ExtensionAbilityInfo> extensionInfos; 96 OHOS::AAFwk::Want want; 97 }; 98 99 struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo { CleanBundleCacheCallbackInfoCleanBundleCacheCallbackInfo100 explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 101 std::string bundleName; 102 int32_t appIndex = 0; 103 OHOS::sptr<CleanCacheCallback> cleanCacheCallback; 104 }; 105 106 struct GetAllBundleCacheCallbackInfo : public BaseCallbackInfo { GetAllBundleCacheCallbackInfoGetAllBundleCacheCallbackInfo107 explicit GetAllBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 108 109 uint64_t cacheSize = 0; 110 OHOS::sptr<ProcessCacheCallbackHost> cacheCallback; 111 }; 112 113 struct CleanAllBundleCacheCallbackInfo : public BaseCallbackInfo { CleanAllBundleCacheCallbackInfoCleanAllBundleCacheCallbackInfo114 explicit CleanAllBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 115 116 OHOS::sptr<ProcessCacheCallbackHost> cacheCallback; 117 }; 118 119 struct AbilityIconCallbackInfo : public BaseCallbackInfo { AbilityIconCallbackInfoAbilityIconCallbackInfo120 explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 121 std::string bundleName; 122 std::string moduleName; 123 std::string abilityName; 124 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED 125 std::shared_ptr<Media::PixelMap> pixelMap = nullptr; 126 #endif 127 }; 128 129 struct AbilityLabelCallbackInfo : public BaseCallbackInfo { AbilityLabelCallbackInfoAbilityLabelCallbackInfo130 explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 131 std::string bundleName; 132 std::string moduleName; 133 std::string abilityName; 134 std::string abilityLabel; 135 }; 136 137 struct ApplicationEnableCallbackInfo : public BaseCallbackInfo { ApplicationEnableCallbackInfoApplicationEnableCallbackInfo138 explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 139 bool isEnable = false; 140 int32_t appIndex = 0; 141 std::string bundleName; 142 }; 143 144 struct LaunchWantCallbackInfo : public BaseCallbackInfo { LaunchWantCallbackInfoLaunchWantCallbackInfo145 explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 146 int32_t userId = Constants::UNSPECIFIED_USERID; 147 std::string bundleName; 148 OHOS::AAFwk::Want want; 149 }; 150 151 struct VerifyCallbackInfo : public BaseCallbackInfo { VerifyCallbackInfoVerifyCallbackInfo152 explicit VerifyCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 153 bool flag = false; 154 std::string deletePath; 155 std::vector<std::string> abcPaths; 156 }; 157 158 struct DynamicIconCallbackInfo : public BaseCallbackInfo { DynamicIconCallbackInfoDynamicIconCallbackInfo159 explicit DynamicIconCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 160 std::string bundleName; 161 std::string moduleName; 162 std::vector<std::string> moduleNames; 163 }; 164 165 enum AbilityProfileType : uint32_t { 166 ABILITY_PROFILE = 0, 167 EXTENSION_PROFILE, 168 UNKNOWN_PROFILE 169 }; 170 171 struct GetProfileCallbackInfo : public BaseCallbackInfo { GetProfileCallbackInfoGetProfileCallbackInfo172 explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 173 AbilityProfileType type = AbilityProfileType::UNKNOWN_PROFILE; 174 std::string moduleName; 175 std::string abilityName; 176 std::string metadataName; 177 std::vector<std::string> profileVec; 178 }; 179 180 struct AbilityEnableCallbackInfo : public BaseCallbackInfo { AbilityEnableCallbackInfoAbilityEnableCallbackInfo181 explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 182 bool isEnable = false; 183 int32_t appIndex = 0; 184 AbilityInfo abilityInfo; 185 }; 186 187 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo { ApplicationInfoCallbackInfoApplicationInfoCallbackInfo188 explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 189 190 int32_t flags = 0; 191 int32_t userId = Constants::UNSPECIFIED_USERID; 192 std::string bundleName; 193 ApplicationInfo appInfo; 194 }; 195 196 struct ApplicationInfosCallbackInfo : public BaseCallbackInfo { ApplicationInfosCallbackInfoApplicationInfosCallbackInfo197 explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 198 199 int32_t flags = 0; 200 int32_t userId = Constants::UNSPECIFIED_USERID; 201 std::vector<ApplicationInfo> appInfos; 202 }; 203 204 struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo { AsyncPermissionDefineCallbackInfoAsyncPermissionDefineCallbackInfo205 explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 206 std::string permissionName; 207 OHOS::AppExecFwk::PermissionDef permissionDef; 208 }; 209 210 struct MigrateDataCallbackInfo : public BaseCallbackInfo { MigrateDataCallbackInfoMigrateDataCallbackInfo211 explicit MigrateDataCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 212 std::vector<std::string> sourcePaths; 213 std::string destinationPath; 214 }; 215 216 struct Query { 217 std::string bundleName_; 218 std::string interfaceType_; 219 int32_t flags_ = 0; 220 int32_t userId_ = Constants::UNSPECIFIED_USERID; 221 napi_env env_; QueryQuery222 Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env) 223 : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {} 224 225 bool operator==(const Query &query) const 226 { 227 return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ && 228 flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_; 229 } 230 }; 231 232 struct QueryHash { operatorQueryHash233 size_t operator()(const Query &query) const 234 { 235 return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^ 236 std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_) ^ 237 std::hash<napi_env>()(query.env_); 238 } 239 }; 240 241 struct BundleInfosCallbackInfo : public BaseCallbackInfo { BundleInfosCallbackInfoBundleInfosCallbackInfo242 explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 243 244 int32_t flags = 0; 245 int32_t userId = Constants::UNSPECIFIED_USERID; 246 std::vector<BundleInfo> bundleInfos; 247 }; 248 249 struct BundleInfoCallbackInfo : public BaseCallbackInfo { BundleInfoCallbackInfoBundleInfoCallbackInfo250 explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 251 bool isSavedInCache = false; 252 int32_t flags = 0; 253 int32_t userId = Constants::UNSPECIFIED_USERID; 254 int32_t uid = 0; 255 std::string bundleName; 256 BundleInfo bundleInfo; 257 }; 258 259 struct BatchBundleInfoCallbackInfo : public BaseCallbackInfo { BatchBundleInfoCallbackInfoBatchBundleInfoCallbackInfo260 explicit BatchBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 261 bool isSavedInCache = false; 262 int32_t flags = 0; 263 int32_t userId = Constants::UNSPECIFIED_USERID; 264 int32_t uid = 0; 265 std::vector<std::string> bundleNames; 266 std::vector<BundleInfo> bundleInfos; 267 }; 268 269 struct SharedBundleCallbackInfo : public BaseCallbackInfo { SharedBundleCallbackInfoSharedBundleCallbackInfo270 explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 271 272 std::string bundleName; 273 std::string moduleName; 274 std::vector<SharedBundleInfo> sharedBundles; 275 }; 276 277 struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo { AppProvisionInfoCallbackInfoAppProvisionInfoCallbackInfo278 explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 279 int32_t userId = Constants::UNSPECIFIED_USERID; 280 std::string bundleName; 281 AppProvisionInfo appProvisionInfo; 282 }; 283 284 struct RecoverableApplicationCallbackInfo : public BaseCallbackInfo { RecoverableApplicationCallbackInfoRecoverableApplicationCallbackInfo285 explicit RecoverableApplicationCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 286 287 std::vector<RecoverableApplicationInfo> recoverableApplicationInfos; 288 }; 289 290 struct PreinstalledApplicationInfosCallbackInfo : public BaseCallbackInfo { PreinstalledApplicationInfosCallbackInfoPreinstalledApplicationInfosCallbackInfo291 explicit PreinstalledApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 292 std::vector<PreinstalledApplicationInfo> preinstalledApplicationInfos; 293 }; 294 295 struct CloneAppBundleInfoCallbackInfo : public BaseCallbackInfo { CloneAppBundleInfoCallbackInfoCloneAppBundleInfoCallbackInfo296 explicit CloneAppBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 297 298 int32_t appIndex = 0; 299 int32_t bundleFlags = 0; 300 int32_t userId = Constants::UNSPECIFIED_USERID; 301 std::string bundleName; 302 BundleInfo bundleInfo; 303 }; 304 305 struct CloneAppBundleInfosCallbackInfo : public BaseCallbackInfo { CloneAppBundleInfosCallbackInfoCloneAppBundleInfosCallbackInfo306 explicit CloneAppBundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 307 308 int32_t bundleFlags = 0; 309 int32_t userId = Constants::UNSPECIFIED_USERID; 310 std::string bundleName; 311 std::vector<BundleInfo> bundleInfos; 312 }; 313 314 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info); 315 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info); 316 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info); 317 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info); 318 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info); 319 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info); 320 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info); 321 napi_value BatchQueryAbilityInfos(napi_env env, napi_callback_info info); 322 napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info); 323 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info); 324 napi_value GetAbilityLabel(napi_env env, napi_callback_info info); 325 napi_value GetAbilityIcon(napi_env env, napi_callback_info info); 326 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info); 327 napi_value GetPermissionDef(napi_env env, napi_callback_info info); 328 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info); 329 napi_value GetProfile(napi_env env, napi_callback_info info, const AbilityProfileType &profileType); 330 napi_value GetProfileByAbility(napi_env env, napi_callback_info info); 331 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info); 332 napi_value GetApplicationInfo(napi_env env, napi_callback_info info); 333 napi_value GetApplicationInfos(napi_env env, napi_callback_info info); 334 napi_value GetBundleInfos(napi_env env, napi_callback_info info); 335 napi_value GetBundleInfo(napi_env env, napi_callback_info info); 336 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info); 337 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info); 338 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info); 339 napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info); 340 napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info); 341 napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info); 342 napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info); 343 napi_value GetAdditionalInfo(napi_env env, napi_callback_info info); 344 napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info); 345 napi_value VerifyAbc(napi_env env, napi_callback_info info); 346 napi_value DeleteAbc(napi_env env, napi_callback_info info); 347 napi_value GetExtResource(napi_env env, napi_callback_info info); 348 napi_value EnableDynamicIcon(napi_env env, napi_callback_info info); 349 napi_value DisableDynamicIcon(napi_env env, napi_callback_info info); 350 napi_value GetDynamicIcon(napi_env env, napi_callback_info info); 351 napi_value GetJsonProfile(napi_env env, napi_callback_info info); 352 napi_value GetRecoverableApplicationInfo(napi_env env, napi_callback_info info); 353 napi_value SetAdditionalInfo(napi_env env, napi_callback_info info); 354 napi_value CanOpenLink(napi_env env, napi_callback_info info); 355 napi_value GetAllPreinstalledApplicationInfos(napi_env env, napi_callback_info info); 356 napi_value GetAllBundleInfoByDeveloperId(napi_env env, napi_callback_info info); 357 napi_value GetDeveloperIds(napi_env env, napi_callback_info info); 358 napi_value SwitchUninstallState(napi_env env, napi_callback_info info); 359 napi_value GetAppCloneBundleInfo(napi_env env, napi_callback_info info); 360 napi_value GetAllAppCloneBundleInfo(napi_env env, napi_callback_info info); 361 napi_value GetAppCloneIdentity(napi_env env, napi_callback_info info); 362 napi_value GetAllBundleCacheSize(napi_env env, napi_callback_info info); 363 napi_value CleanAllBundleCache(napi_env env, napi_callback_info info); 364 napi_value GetLaunchWant(napi_env env, napi_callback_info info); 365 napi_value MigrateData(napi_env env, napi_callback_info info); 366 void CreateApplicationFlagObject(napi_env env, napi_value value); 367 void CreateAbilityFlagObject(napi_env env, napi_value value); 368 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value); 369 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value); 370 void CreateBundleFlagObject(napi_env env, napi_value value); 371 void CreatePermissionGrantStateObject(napi_env env, napi_value value); 372 void CreateAbilityTypeObject(napi_env env, napi_value value); 373 void CreateDisplayOrientationObject(napi_env env, napi_value value); 374 void CreateOrientationRelatedToSensor(napi_env env, napi_value value); 375 void CreateLaunchTypeObject(napi_env env, napi_value value); 376 void CreateSupportWindowModesObject(napi_env env, napi_value value); 377 void CreateModuleTypeObject(napi_env env, napi_value value); 378 void CreateBundleTypeObject(napi_env env, napi_value value); 379 void CreateCompatiblePolicyObject(napi_env env, napi_value value); 380 void CreateProfileTypeObject(napi_env env, napi_value value); 381 void CreateAppDistributionTypeObject(napi_env env, napi_value value); 382 void RegisterClearCacheListener(); 383 void CreateMultiAppModeTypeObject(napi_env env, napi_value value); 384 void CreateApplicationInfoFlagObject(napi_env env, napi_value value); 385 } // namespace AppExecFwk 386 } // namespace OHOS 387 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H 388