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 "recoverable_application_info.h" 37 #include "shared/shared_bundle_info.h" 38 #include "want.h" 39 40 namespace OHOS { 41 namespace AppExecFwk { 42 class ClearCacheListener final : public EventFwk::CommonEventSubscriber { 43 public: 44 explicit ClearCacheListener(const EventFwk::CommonEventSubscribeInfo &subscribeInfo); 45 virtual ~ClearCacheListener() = default; 46 void OnReceiveEvent(const EventFwk::CommonEventData &data) override; 47 static void HandleCleanEnv(void *data); 48 }; 49 struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo { GetBundleArchiveInfoCallbackInfoGetBundleArchiveInfoCallbackInfo50 explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 51 52 std::string hapFilePath; 53 int32_t flags = 0; 54 BundleInfo bundleInfo; 55 }; 56 struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo { GetBundleNameByUidCallbackInfoGetBundleNameByUidCallbackInfo57 explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 58 59 int32_t uid = 0; 60 std::string bundleName; 61 }; 62 struct GetAppCloneIdentityCallbackInfo : public GetBundleNameByUidCallbackInfo { GetAppCloneIdentityCallbackInfoGetAppCloneIdentityCallbackInfo63 explicit GetAppCloneIdentityCallbackInfo(napi_env env) : GetBundleNameByUidCallbackInfo(env) {} 64 65 int32_t appIndex = 0; 66 }; 67 struct AbilityCallbackInfo : public BaseCallbackInfo { AbilityCallbackInfoAbilityCallbackInfo68 explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 69 70 OHOS::AAFwk::Want want; 71 int32_t flags = 0; 72 int32_t userId = Constants::UNSPECIFIED_USERID; 73 bool isSavedInCache = false; 74 std::vector<AbilityInfo> abilityInfos; 75 }; 76 77 struct BatchAbilityCallbackInfo : public BaseCallbackInfo { BatchAbilityCallbackInfoBatchAbilityCallbackInfo78 explicit BatchAbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 79 80 std::vector<OHOS::AAFwk::Want> wants; 81 int32_t flags = 0; 82 int32_t userId = Constants::UNSPECIFIED_USERID; 83 bool isSavedInCache = false; 84 std::vector<AbilityInfo> abilityInfos; 85 }; 86 87 struct ExtensionCallbackInfo : public BaseCallbackInfo { ExtensionCallbackInfoExtensionCallbackInfo88 explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 89 90 OHOS::AAFwk::Want want; 91 int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED); 92 int32_t flags = 0; 93 int32_t userId = Constants::UNSPECIFIED_USERID; 94 bool isSavedInCache = false; 95 std::vector<ExtensionAbilityInfo> extensionInfos; 96 }; 97 98 struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo { CleanBundleCacheCallbackInfoCleanBundleCacheCallbackInfo99 explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 100 std::string bundleName; 101 OHOS::sptr<CleanCacheCallback> cleanCacheCallback; 102 }; 103 104 struct AbilityIconCallbackInfo : public BaseCallbackInfo { AbilityIconCallbackInfoAbilityIconCallbackInfo105 explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 106 std::string bundleName; 107 std::string moduleName; 108 std::string abilityName; 109 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED 110 std::shared_ptr<Media::PixelMap> pixelMap = nullptr; 111 #endif 112 }; 113 114 struct AbilityLabelCallbackInfo : public BaseCallbackInfo { AbilityLabelCallbackInfoAbilityLabelCallbackInfo115 explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 116 std::string bundleName; 117 std::string moduleName; 118 std::string abilityName; 119 std::string abilityLabel; 120 }; 121 122 struct ApplicationEnableCallbackInfo : public BaseCallbackInfo { ApplicationEnableCallbackInfoApplicationEnableCallbackInfo123 explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 124 std::string bundleName; 125 bool isEnable = false; 126 int32_t appIndex = 0; 127 }; 128 129 struct LaunchWantCallbackInfo : public BaseCallbackInfo { LaunchWantCallbackInfoLaunchWantCallbackInfo130 explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 131 std::string bundleName; 132 int32_t userId = Constants::UNSPECIFIED_USERID; 133 OHOS::AAFwk::Want want; 134 }; 135 136 struct VerifyCallbackInfo : public BaseCallbackInfo { VerifyCallbackInfoVerifyCallbackInfo137 explicit VerifyCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 138 std::vector<std::string> abcPaths; 139 bool flag = false; 140 std::string deletePath; 141 }; 142 143 struct DynamicIconCallbackInfo : public BaseCallbackInfo { DynamicIconCallbackInfoDynamicIconCallbackInfo144 explicit DynamicIconCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 145 std::string bundleName; 146 std::string moduleName; 147 std::vector<std::string> moduleNames; 148 }; 149 150 enum AbilityProfileType : uint32_t { 151 ABILITY_PROFILE = 0, 152 EXTENSION_PROFILE, 153 UNKNOWN_PROFILE 154 }; 155 156 struct GetProfileCallbackInfo : public BaseCallbackInfo { GetProfileCallbackInfoGetProfileCallbackInfo157 explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 158 AbilityProfileType type = AbilityProfileType::UNKNOWN_PROFILE; 159 std::string moduleName; 160 std::string abilityName; 161 std::string metadataName; 162 std::vector<std::string> profileVec; 163 }; 164 165 struct AbilityEnableCallbackInfo : public BaseCallbackInfo { AbilityEnableCallbackInfoAbilityEnableCallbackInfo166 explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 167 AbilityInfo abilityInfo; 168 bool isEnable = false; 169 int32_t appIndex = 0; 170 }; 171 172 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo { ApplicationInfoCallbackInfoApplicationInfoCallbackInfo173 explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 174 175 std::string bundleName; 176 int32_t flags = 0; 177 int32_t userId = Constants::UNSPECIFIED_USERID; 178 ApplicationInfo appInfo; 179 }; 180 181 struct ApplicationInfosCallbackInfo : public BaseCallbackInfo { ApplicationInfosCallbackInfoApplicationInfosCallbackInfo182 explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 183 184 int32_t flags = 0; 185 int32_t userId = Constants::UNSPECIFIED_USERID; 186 std::vector<ApplicationInfo> appInfos; 187 }; 188 189 struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo { AsyncPermissionDefineCallbackInfoAsyncPermissionDefineCallbackInfo190 explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 191 std::string permissionName; 192 OHOS::AppExecFwk::PermissionDef permissionDef; 193 }; 194 195 struct Query { 196 std::string bundleName_; 197 std::string interfaceType_; 198 int32_t flags_ = 0; 199 int32_t userId_ = Constants::UNSPECIFIED_USERID; 200 napi_env env_; QueryQuery201 Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env) 202 : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {} 203 204 bool operator==(const Query &query) const 205 { 206 return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ && 207 flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_; 208 } 209 }; 210 211 struct QueryHash { operatorQueryHash212 size_t operator()(const Query &query) const 213 { 214 return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^ 215 std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_) ^ 216 std::hash<napi_env>()(query.env_); 217 } 218 }; 219 220 struct BundleInfosCallbackInfo : public BaseCallbackInfo { BundleInfosCallbackInfoBundleInfosCallbackInfo221 explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 222 223 int32_t flags = 0; 224 int32_t userId = Constants::UNSPECIFIED_USERID; 225 std::vector<BundleInfo> bundleInfos; 226 }; 227 228 struct BundleInfoCallbackInfo : public BaseCallbackInfo { BundleInfoCallbackInfoBundleInfoCallbackInfo229 explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 230 std::string bundleName; 231 int32_t flags = 0; 232 int32_t userId = Constants::UNSPECIFIED_USERID; 233 bool isSavedInCache = false; 234 int32_t uid = 0; 235 BundleInfo bundleInfo; 236 }; 237 238 struct BatchBundleInfoCallbackInfo : public BaseCallbackInfo { BatchBundleInfoCallbackInfoBatchBundleInfoCallbackInfo239 explicit BatchBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 240 std::vector<std::string> bundleNames; 241 int32_t flags = 0; 242 int32_t userId = Constants::UNSPECIFIED_USERID; 243 bool isSavedInCache = false; 244 int32_t uid = 0; 245 std::vector<BundleInfo> bundleInfos; 246 }; 247 248 struct SharedBundleCallbackInfo : public BaseCallbackInfo { SharedBundleCallbackInfoSharedBundleCallbackInfo249 explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 250 251 std::string bundleName; 252 std::string moduleName; 253 std::vector<SharedBundleInfo> sharedBundles; 254 }; 255 256 struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo { AppProvisionInfoCallbackInfoAppProvisionInfoCallbackInfo257 explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 258 std::string bundleName; 259 int32_t userId = Constants::UNSPECIFIED_USERID; 260 AppProvisionInfo appProvisionInfo; 261 }; 262 263 struct RecoverableApplicationCallbackInfo : public BaseCallbackInfo { RecoverableApplicationCallbackInfoRecoverableApplicationCallbackInfo264 explicit RecoverableApplicationCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 265 266 std::vector<RecoverableApplicationInfo> recoverableApplicationInfos; 267 }; 268 269 struct PreinstalledApplicationInfosCallbackInfo : public BaseCallbackInfo { PreinstalledApplicationInfosCallbackInfoPreinstalledApplicationInfosCallbackInfo270 explicit PreinstalledApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 271 std::vector<PreinstalledApplicationInfo> preinstalledApplicationInfos; 272 }; 273 274 struct CloneAppBundleInfoCallbackInfo : public BaseCallbackInfo { CloneAppBundleInfoCallbackInfoCloneAppBundleInfoCallbackInfo275 explicit CloneAppBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 276 277 std::string bundleName; 278 int32_t appIndex = 0; 279 int32_t bundleFlags = 0; 280 int32_t userId = Constants::UNSPECIFIED_USERID; 281 BundleInfo bundleInfo; 282 }; 283 284 struct CloneAppBundleInfosCallbackInfo : public BaseCallbackInfo { CloneAppBundleInfosCallbackInfoCloneAppBundleInfosCallbackInfo285 explicit CloneAppBundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 286 287 std::string bundleName; 288 int32_t bundleFlags = 0; 289 int32_t userId = Constants::UNSPECIFIED_USERID; 290 std::vector<BundleInfo> bundleInfos; 291 }; 292 293 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info); 294 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info); 295 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info); 296 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info); 297 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info); 298 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info); 299 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info); 300 napi_value BatchQueryAbilityInfos(napi_env env, napi_callback_info info); 301 napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info); 302 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info); 303 napi_value GetAbilityLabel(napi_env env, napi_callback_info info); 304 napi_value GetAbilityIcon(napi_env env, napi_callback_info info); 305 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info); 306 napi_value GetPermissionDef(napi_env env, napi_callback_info info); 307 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info); 308 napi_value GetProfile(napi_env env, napi_callback_info info, const AbilityProfileType &profileType); 309 napi_value GetProfileByAbility(napi_env env, napi_callback_info info); 310 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info); 311 napi_value GetApplicationInfo(napi_env env, napi_callback_info info); 312 napi_value GetApplicationInfos(napi_env env, napi_callback_info info); 313 napi_value GetBundleInfos(napi_env env, napi_callback_info info); 314 napi_value GetBundleInfo(napi_env env, napi_callback_info info); 315 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info); 316 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info); 317 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info); 318 napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info); 319 napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info); 320 napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info); 321 napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info); 322 napi_value GetAdditionalInfo(napi_env env, napi_callback_info info); 323 napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info); 324 napi_value VerifyAbc(napi_env env, napi_callback_info info); 325 napi_value DeleteAbc(napi_env env, napi_callback_info info); 326 napi_value GetExtResource(napi_env env, napi_callback_info info); 327 napi_value EnableDynamicIcon(napi_env env, napi_callback_info info); 328 napi_value DisableDynamicIcon(napi_env env, napi_callback_info info); 329 napi_value GetDynamicIcon(napi_env env, napi_callback_info info); 330 napi_value GetJsonProfile(napi_env env, napi_callback_info info); 331 napi_value GetRecoverableApplicationInfo(napi_env env, napi_callback_info info); 332 napi_value SetAdditionalInfo(napi_env env, napi_callback_info info); 333 napi_value CanOpenLink(napi_env env, napi_callback_info info); 334 napi_value GetAllPreinstalledApplicationInfos(napi_env env, napi_callback_info info); 335 napi_value GetAllBundleInfoByDeveloperId(napi_env env, napi_callback_info info); 336 napi_value GetDeveloperIds(napi_env env, napi_callback_info info); 337 napi_value SwitchUninstallState(napi_env env, napi_callback_info info); 338 napi_value GetAppCloneBundleInfo(napi_env env, napi_callback_info info); 339 napi_value GetAllAppCloneBundleInfo(napi_env env, napi_callback_info info); 340 napi_value GetAppCloneIdentity(napi_env env, napi_callback_info info); 341 napi_value GetLaunchWant(napi_env env, napi_callback_info info); 342 void CreateApplicationFlagObject(napi_env env, napi_value value); 343 void CreateAbilityFlagObject(napi_env env, napi_value value); 344 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value); 345 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value); 346 void CreateBundleFlagObject(napi_env env, napi_value value); 347 void CreatePermissionGrantStateObject(napi_env env, napi_value value); 348 void CreateAbilityTypeObject(napi_env env, napi_value value); 349 void CreateDisplayOrientationObject(napi_env env, napi_value value); 350 void CreateOrientationRelatedToSensor(napi_env env, napi_value value); 351 void CreateLaunchTypeObject(napi_env env, napi_value value); 352 void CreateSupportWindowModesObject(napi_env env, napi_value value); 353 void CreateModuleTypeObject(napi_env env, napi_value value); 354 void CreateBundleTypeObject(napi_env env, napi_value value); 355 void CreateCompatiblePolicyObject(napi_env env, napi_value value); 356 void CreateProfileTypeObject(napi_env env, napi_value value); 357 void CreateAppDistributionTypeObject(napi_env env, napi_value value); 358 void RegisterClearCacheListener(); 359 void CreateMultiAppModeTypeObject(napi_env env, napi_value value); 360 void CreateApplicationInfoFlagObject(napi_env env, napi_value value); 361 } // namespace AppExecFwk 362 } // namespace OHOS 363 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H 364