* Copyright (c) 2022-2026 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H
#define BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H
#include "ability_info.h"
#include "alternate_icon_info.h"
#include "app_install_extended_info.h"
#include "app_provision_info.h"
#include "base_cb_info.h"
#include "bundle_constants.h"
#include "bundle_info.h"
#include "bundle_mgr_interface.h"
#include "clean_cache_callback.h"
#include "common_event_manager.h"
#include "common_event_subscriber.h"
#include "common_event_support.h"
#include "dynamic_icon_info.h"
#include "napi/native_api.h"
#include "napi/native_common.h"
#include "napi/native_node_api.h"
#include "plugin/plugin_bundle_info.h"
#ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED
#include "pixel_map.h"
#endif
#include "preinstalled_application_info.h"
#include "process_cache_callback_host.h"
#include "recoverable_application_info.h"
#include "shared/shared_bundle_info.h"
#include "want.h"
namespace OHOS {
namespace AppExecFwk {
class ClearCacheListener final : public EventFwk::CommonEventSubscriber {
public:
explicit ClearCacheListener(const EventFwk::CommonEventSubscribeInfo &subscribeInfo);
virtual ~ClearCacheListener() = default;
void OnReceiveEvent(const EventFwk::CommonEventData &data) override;
static void HandleCleanEnv(void *data);
};
struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo {
explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
int32_t flags = 0;
std::string hapFilePath;
BundleInfo bundleInfo;
};
struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo {
explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
int32_t uid = 0;
std::string bundleName;
};
struct GetAppCloneIdentityCallbackInfo : public GetBundleNameByUidCallbackInfo {
explicit GetAppCloneIdentityCallbackInfo(napi_env env) : GetBundleNameByUidCallbackInfo(env) {}
int32_t appIndex = 0;
};
struct AbilityCallbackInfo : public BaseCallbackInfo {
explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
bool isSavedInCache = false;
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::vector<AbilityInfo> abilityInfos;
OHOS::AAFwk::Want want;
};
struct GetAbilityCallbackInfo : public BaseCallbackInfo {
explicit GetAbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
bool isSavedInCache = false;
uint32_t flags = 0;
std::vector<AbilityInfo> abilityInfos;
std::string uri;
};
struct BatchAbilityCallbackInfo : public BaseCallbackInfo {
explicit BatchAbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
bool isSavedInCache = false;
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::vector<AbilityInfo> abilityInfos;
std::vector<OHOS::AAFwk::Want> wants;
};
struct ExtensionCallbackInfo : public BaseCallbackInfo {
explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
bool isSavedInCache = false;
int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED);
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::vector<ExtensionAbilityInfo> extensionInfos;
OHOS::AAFwk::Want want;
};
struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo {
explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
std::string bundleName;
int32_t appIndex = 0;
OHOS::sptr<CleanCacheCallback> cleanCacheCallback;
};
struct CleanBundleCacheForSelfCallbackInfo : public BaseCallbackInfo {
explicit CleanBundleCacheForSelfCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
OHOS::sptr<CleanCacheCallback> cleanCacheCallback;
};
struct GetAllBundleCacheCallbackInfo : public BaseCallbackInfo {
explicit GetAllBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
uint64_t cacheSize = 0;
OHOS::sptr<ProcessCacheCallbackHost> cacheCallback;
int64_t startTime = 0;
};
struct CleanAllBundleCacheCallbackInfo : public BaseCallbackInfo {
explicit CleanAllBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
OHOS::sptr<ProcessCacheCallbackHost> cacheCallback;
};
struct AbilityIconCallbackInfo : public BaseCallbackInfo {
explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
std::string bundleName;
std::string moduleName;
std::string abilityName;
#ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED
std::shared_ptr<Media::PixelMap> pixelMap = nullptr;
#endif
};
struct AbilityLabelCallbackInfo : public BaseCallbackInfo {
explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
std::string bundleName;
std::string moduleName;
std::string abilityName;
std::string abilityLabel;
};
struct ApplicationLabelCallbackInfo : public BaseCallbackInfo {
explicit ApplicationLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
std::string bundleName;
int32_t appIndex = 0;
std::string applicationLabel;
};
struct ApplicationEnableCallbackInfo : public BaseCallbackInfo {
explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
bool isEnable = false;
bool killProcess = false;
int32_t appIndex = 0;
std::string bundleName;
};
struct LaunchWantCallbackInfo : public BaseCallbackInfo {
explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string bundleName;
OHOS::AAFwk::Want want;
};
struct VerifyCallbackInfo : public BaseCallbackInfo {
explicit VerifyCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
bool flag = false;
std::string deletePath;
std::vector<std::string> abcPaths;
};
struct BundleOption {
int32_t userId = Constants::UNSPECIFIED_USERID;
int32_t appIndex = Constants::DEFAULT_APP_INDEX;
bool isDefault = true;
};
struct DynamicIconCallbackInfo : public BaseCallbackInfo {
explicit DynamicIconCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::string bundleName;
std::string moduleName;
std::vector<std::string> moduleNames;
BundleOption option;
};
struct DynamicIconInfoCallbackInfo : public BaseCallbackInfo {
explicit DynamicIconInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string bundleName;
std::vector<DynamicIconInfo> dynamicIconInfos;
};
struct AlternateIconCallbackInfo : public BaseCallbackInfo {
explicit AlternateIconCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::string alternateIconName;
};
struct AlternateIconsCallbackInfo : public BaseCallbackInfo {
explicit AlternateIconsCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::vector<AlternateIconInfo> alternateIcons;
};
struct GetProfileCallbackInfo : public BaseCallbackInfo {
explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
Constants::AbilityProfileType type = Constants::AbilityProfileType::UNKNOWN_PROFILE;
std::string moduleName;
std::string abilityName;
std::string metadataName;
std::vector<std::string> profileVec;
};
struct AbilityEnableCallbackInfo : public BaseCallbackInfo {
explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
bool isEnable = false;
int32_t appIndex = 0;
AbilityInfo abilityInfo;
};
struct ApplicationInfoCallbackInfo : public BaseCallbackInfo {
explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string bundleName;
ApplicationInfo appInfo;
};
struct ApplicationInfosCallbackInfo : public BaseCallbackInfo {
explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::vector<ApplicationInfo> appInfos;
};
struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo {
explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::string permissionName;
OHOS::AppExecFwk::PermissionDef permissionDef;
};
struct MigrateDataCallbackInfo : public BaseCallbackInfo {
explicit MigrateDataCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
std::vector<std::string> sourcePaths;
std::string destinationPath;
};
struct Query {
std::string bundleName_;
std::string interfaceType_;
int32_t flags_ = 0;
int32_t userId_ = Constants::UNSPECIFIED_USERID;
napi_env env_;
Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env)
: bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {}
bool operator==(const Query &query) const
{
return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ &&
flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_;
}
};
struct QueryHash {
size_t operator()(const Query &query) const
{
return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^
std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_) ^
std::hash<napi_env>()(query.env_);
}
};
struct BundleInfosCallbackInfo : public BaseCallbackInfo {
explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::vector<BundleInfo> bundleInfos;
};
struct InstalledBundleListCallbackInfo : public BaseCallbackInfo {
explicit InstalledBundleListCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
uint32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::vector<BundleInfo> bundleInfos;
};
struct BundleInfoCallbackInfo : public BaseCallbackInfo {
explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
bool isSavedInCache = false;
napi_ref cachedRef = nullptr;
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
int32_t uid = 0;
std::string bundleName;
BundleInfo bundleInfo;
int64_t startTime = 0;
bool isForSelf = false;
};
struct BatchBundleInfoCallbackInfo : public BaseCallbackInfo {
explicit BatchBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
bool isSavedInCache = false;
int32_t flags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
int32_t uid = 0;
std::vector<std::string> bundleNames;
std::vector<BundleInfo> bundleInfos;
};
struct PluginCallbackInfo : public BaseCallbackInfo {
explicit PluginCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string hostBundleName;
std::vector<PluginBundleInfo> pluginBundleInfos;
};
struct SharedBundleCallbackInfo : public BaseCallbackInfo {
explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::string bundleName;
std::string moduleName;
std::vector<SharedBundleInfo> sharedBundles;
};
struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo {
explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string bundleName;
AppProvisionInfo appProvisionInfo;
};
struct AllAppInstallExtendedInfoCallbackInfo : public BaseCallbackInfo {
explicit AllAppInstallExtendedInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::vector<AppInstallExtendedInfo> appInstallExtendedInfos;
};
struct AllAppProvisionInfoCallbackInfo : public BaseCallbackInfo {
explicit AllAppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t userId = Constants::UNSPECIFIED_USERID;
std::vector<AppProvisionInfo> appProvisionInfos;
};
struct RecoverableApplicationCallbackInfo : public BaseCallbackInfo {
explicit RecoverableApplicationCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::vector<RecoverableApplicationInfo> recoverableApplicationInfos;
};
struct PreinstalledApplicationInfosCallbackInfo : public BaseCallbackInfo {
explicit PreinstalledApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::vector<PreinstalledApplicationInfo> preinstalledApplicationInfos;
};
struct CloneAppBundleInfoCallbackInfo : public BaseCallbackInfo {
explicit CloneAppBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t appIndex = 0;
int32_t bundleFlags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string bundleName;
BundleInfo bundleInfo;
};
struct CloneAppBundleInfosCallbackInfo : public BaseCallbackInfo {
explicit CloneAppBundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t bundleFlags = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string bundleName;
std::vector<BundleInfo> bundleInfos;
};
struct AppClonePreferenceCallbackInfo : public BaseCallbackInfo {
explicit AppClonePreferenceCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
std::string bundleName;
AppClonePreference preference;
AppClonePreference resultPreference;
};
struct RecoverOrRemoveBackupBundleDataCallbackInfo : public BaseCallbackInfo {
explicit RecoverOrRemoveBackupBundleDataCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
int32_t appIndex = 0;
int32_t userId = Constants::UNSPECIFIED_USERID;
std::string bundleName;
};
napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info);
napi_value GetBundleNameByUid(napi_env env, napi_callback_info info);
napi_value SetApplicationEnabled(napi_env env, napi_callback_info info);
napi_value SetAbilityEnabled(napi_env env, napi_callback_info info);
napi_value IsApplicationEnabled(napi_env env, napi_callback_info info);
napi_value IsAbilityEnabled(napi_env env, napi_callback_info info);
napi_value QueryAbilityInfos(napi_env env, napi_callback_info info);
napi_value BatchQueryAbilityInfos(napi_env env, napi_callback_info info);
napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info);
napi_value QueryExtensionInfos(napi_env env, napi_callback_info info);
napi_value GetAbilityLabel(napi_env env, napi_callback_info info);
napi_value GetApplicationLabel(napi_env env, napi_callback_info info);
napi_value GetAbilityIcon(napi_env env, napi_callback_info info);
napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info);
napi_value CleanBundleCacheFilesForSelf(napi_env env, napi_callback_info info);
napi_value GetPermissionDef(napi_env env, napi_callback_info info);
napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info);
napi_value GetProfile(napi_env env, napi_callback_info info, const Constants::AbilityProfileType &profileType);
napi_value GetProfileByAbility(napi_env env, napi_callback_info info);
napi_value GetProfileByExAbility(napi_env env, napi_callback_info info);
napi_value GetApplicationInfo(napi_env env, napi_callback_info info);
napi_value GetApplicationInfos(napi_env env, napi_callback_info info);
napi_value GetBundleInfos(napi_env env, napi_callback_info info);
napi_value GetInstalledBundleList(napi_env env, napi_callback_info info);
napi_value GetBundleInfo(napi_env env, napi_callback_info info);
napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info);
napi_value GetBundleInfoSync(napi_env env, napi_callback_info info);
napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info);
napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info);
napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info);
napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info);
napi_value GetAllAppProvisionInfo(napi_env env, napi_callback_info info);
napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info);
napi_value GetAdditionalInfo(napi_env env, napi_callback_info info);
napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info);
napi_value VerifyAbc(napi_env env, napi_callback_info info);
napi_value DeleteAbc(napi_env env, napi_callback_info info);
napi_value GetExtResource(napi_env env, napi_callback_info info);
napi_value EnableDynamicIcon(napi_env env, napi_callback_info info);
napi_value DisableDynamicIcon(napi_env env, napi_callback_info info);
napi_value GetDynamicIcon(napi_env env, napi_callback_info info);
napi_value GetJsonProfile(napi_env env, napi_callback_info info);
napi_value GetRecoverableApplicationInfo(napi_env env, napi_callback_info info);
napi_value SetAdditionalInfo(napi_env env, napi_callback_info info);
napi_value CanOpenLink(napi_env env, napi_callback_info info);
napi_value GetAllPreinstalledApplicationInfos(napi_env env, napi_callback_info info);
napi_value GetAllNewPreinstalledApplicationInfos(napi_env env, napi_callback_info info);
napi_value GetAllBundleInfoByDeveloperId(napi_env env, napi_callback_info info);
napi_value GetDeveloperIds(napi_env env, napi_callback_info info);
napi_value SwitchUninstallState(napi_env env, napi_callback_info info);
napi_value GetAppCloneBundleInfo(napi_env env, napi_callback_info info);
napi_value GetAllInstallInfo(napi_env env, napi_callback_info info);
napi_value GetAllAppCloneBundleInfo(napi_env env, napi_callback_info info);
napi_value GetAppClonePreference(napi_env env, napi_callback_info info);
napi_value SetAppClonePreference(napi_env env, napi_callback_info info);
napi_value GetAppCloneIdentity(napi_env env, napi_callback_info info);
napi_value GetAllPluginInfo(napi_env env, napi_callback_info info);
napi_value GetAllBundleCacheSize(napi_env env, napi_callback_info info);
napi_value CleanAllBundleCache(napi_env env, napi_callback_info info);
napi_value GetLaunchWant(napi_env env, napi_callback_info info);
napi_value MigrateData(napi_env env, napi_callback_info info);
napi_value GetAllDynamicIconInfo(napi_env env, napi_callback_info info);
napi_value GetDynamicIconInfo(napi_env env, napi_callback_info info);
napi_value GetAbilityInfos(napi_env env, napi_callback_info info);
napi_value SetAbilityFileTypesForSelf(napi_env env, napi_callback_info info);
napi_value RecoverBackupBundleData(napi_env env, napi_callback_info info);
napi_value RemoveBackupBundleData(napi_env env, napi_callback_info info);
napi_value IsApplicationDisableForbidden(napi_env env, napi_callback_info info);
napi_value SetAlternateIcon(napi_env env, napi_callback_info info);
napi_value GetAlternateIcons(napi_env env, napi_callback_info info);
void CreateApplicationFlagObject(napi_env env, napi_value value);
void CreateAbilityFlagObject(napi_env env, napi_value value);
void CreateExtensionAbilityFlagObject(napi_env env, napi_value value);
void CreateExtensionAbilityTypeObject(napi_env env, napi_value value);
void CreateBundleFlagObject(napi_env env, napi_value value);
void CreatePermissionGrantStateObject(napi_env env, napi_value value);
void CreateAbilityTypeObject(napi_env env, napi_value value);
void CreateDisplayOrientationObject(napi_env env, napi_value value);
void CreateOrientationRelatedToSensor(napi_env env, napi_value value);
void CreateLaunchTypeObject(napi_env env, napi_value value);
void CreateSupportWindowModesObject(napi_env env, napi_value value);
void CreateModuleTypeObject(napi_env env, napi_value value);
void CreateBundleTypeObject(napi_env env, napi_value value);
void CreateCompatiblePolicyObject(napi_env env, napi_value value);
void CreateProfileTypeObject(napi_env env, napi_value value);
void CreateAppDistributionTypeObject(napi_env env, napi_value value);
void RegisterClearCacheListener();
void CreateMultiAppModeTypeObject(napi_env env, napi_value value);
void CreateAppClonePreferenceModeObject(napi_env env, napi_value value);
void CreateApplicationInfoFlagObject(napi_env env, napi_value value);
}
}
#endif