1 /* 2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef 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 "shared/shared_bundle_info.h" 36 #include "want.h" 37 38 namespace OHOS { 39 namespace AppExecFwk { 40 class ClearCacheListener final : public EventFwk::CommonEventSubscriber { 41 public: 42 explicit ClearCacheListener(const EventFwk::CommonEventSubscribeInfo &subscribeInfo); 43 virtual ~ClearCacheListener() = default; 44 void OnReceiveEvent(const EventFwk::CommonEventData &data) override; 45 }; 46 struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo { GetBundleArchiveInfoCallbackInfoGetBundleArchiveInfoCallbackInfo47 explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 48 49 std::string hapFilePath; 50 int32_t flags = 0; 51 BundleInfo bundleInfo; 52 }; 53 struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo { GetBundleNameByUidCallbackInfoGetBundleNameByUidCallbackInfo54 explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 55 56 int32_t uid = 0; 57 std::string bundleName; 58 }; 59 struct AbilityCallbackInfo : public BaseCallbackInfo { AbilityCallbackInfoAbilityCallbackInfo60 explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 61 62 OHOS::AAFwk::Want want; 63 int32_t flags = 0; 64 int32_t userId = Constants::UNSPECIFIED_USERID; 65 bool isSavedInCache = false; 66 std::vector<AbilityInfo> abilityInfos; 67 }; 68 69 struct ExtensionCallbackInfo : public BaseCallbackInfo { ExtensionCallbackInfoExtensionCallbackInfo70 explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 71 72 OHOS::AAFwk::Want want; 73 int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED); 74 int32_t flags = 0; 75 int32_t userId = Constants::UNSPECIFIED_USERID; 76 bool isSavedInCache = false; 77 std::vector<ExtensionAbilityInfo> extensionInfos; 78 }; 79 80 struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo { CleanBundleCacheCallbackInfoCleanBundleCacheCallbackInfo81 explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 82 std::string bundleName; 83 OHOS::sptr<CleanCacheCallback> cleanCacheCallback; 84 }; 85 86 struct AbilityIconCallbackInfo : public BaseCallbackInfo { AbilityIconCallbackInfoAbilityIconCallbackInfo87 explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 88 std::string bundleName; 89 std::string moduleName; 90 std::string abilityName; 91 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED 92 std::shared_ptr<Media::PixelMap> pixelMap = nullptr; 93 #endif 94 }; 95 96 struct AbilityLabelCallbackInfo : public BaseCallbackInfo { AbilityLabelCallbackInfoAbilityLabelCallbackInfo97 explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 98 std::string bundleName; 99 std::string moduleName; 100 std::string abilityName; 101 std::string abilityLabel; 102 }; 103 104 struct ApplicationEnableCallbackInfo : public BaseCallbackInfo { ApplicationEnableCallbackInfoApplicationEnableCallbackInfo105 explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 106 std::string bundleName; 107 bool isEnable = false; 108 }; 109 110 struct LaunchWantCallbackInfo : public BaseCallbackInfo { LaunchWantCallbackInfoLaunchWantCallbackInfo111 explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 112 std::string bundleName; 113 int32_t userId = Constants::UNSPECIFIED_USERID; 114 OHOS::AAFwk::Want want; 115 }; 116 117 enum ProfileType : uint32_t { 118 ABILITY_PROFILE = 0, 119 EXTENSION_PROFILE, 120 UNKNOWN_PROFILE 121 }; 122 123 struct GetProfileCallbackInfo : public BaseCallbackInfo { GetProfileCallbackInfoGetProfileCallbackInfo124 explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 125 ProfileType type = ProfileType::UNKNOWN_PROFILE; 126 std::string moduleName; 127 std::string abilityName; 128 std::string metadataName; 129 std::vector<std::string> profileVec; 130 }; 131 132 struct AbilityEnableCallbackInfo : public BaseCallbackInfo { AbilityEnableCallbackInfoAbilityEnableCallbackInfo133 explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 134 AbilityInfo abilityInfo; 135 bool isEnable = false; 136 }; 137 138 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo { ApplicationInfoCallbackInfoApplicationInfoCallbackInfo139 explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 140 141 std::string bundleName; 142 int32_t flags = 0; 143 int32_t userId = Constants::UNSPECIFIED_USERID; 144 ApplicationInfo appInfo; 145 }; 146 147 struct ApplicationInfosCallbackInfo : public BaseCallbackInfo { ApplicationInfosCallbackInfoApplicationInfosCallbackInfo148 explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 149 150 int32_t flags = 0; 151 int32_t userId = Constants::UNSPECIFIED_USERID; 152 std::vector<ApplicationInfo> appInfos; 153 }; 154 155 struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo { AsyncPermissionDefineCallbackInfoAsyncPermissionDefineCallbackInfo156 explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 157 std::string permissionName; 158 OHOS::AppExecFwk::PermissionDef permissionDef; 159 }; 160 161 struct Query { 162 std::string bundleName_; 163 std::string interfaceType_; 164 int32_t flags_ = 0; 165 int32_t userId_ = Constants::UNSPECIFIED_USERID; 166 napi_env env_; QueryQuery167 Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env) 168 : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {} 169 170 bool operator==(const Query &query) const 171 { 172 return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ && 173 flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_; 174 } 175 }; 176 177 struct QueryHash { operatorQueryHash178 size_t operator()(const Query &query) const 179 { 180 return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^ 181 std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_); 182 } 183 }; 184 185 struct BundleInfosCallbackInfo : public BaseCallbackInfo { BundleInfosCallbackInfoBundleInfosCallbackInfo186 explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 187 188 int32_t flags = 0; 189 int32_t userId = Constants::UNSPECIFIED_USERID; 190 std::vector<BundleInfo> bundleInfos; 191 }; 192 193 struct BundleInfoCallbackInfo : public BaseCallbackInfo { BundleInfoCallbackInfoBundleInfoCallbackInfo194 explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 195 std::string bundleName; 196 int32_t flags = 0; 197 int32_t userId = Constants::UNSPECIFIED_USERID; 198 bool isSavedInCache = false; 199 int32_t uid = 0; 200 BundleInfo bundleInfo; 201 }; 202 203 struct SharedBundleCallbackInfo : public BaseCallbackInfo { SharedBundleCallbackInfoSharedBundleCallbackInfo204 explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 205 206 std::string bundleName; 207 std::string moduleName; 208 std::vector<SharedBundleInfo> sharedBundles; 209 }; 210 211 struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo { AppProvisionInfoCallbackInfoAppProvisionInfoCallbackInfo212 explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 213 std::string bundleName; 214 int32_t userId = Constants::UNSPECIFIED_USERID; 215 AppProvisionInfo appProvisionInfo; 216 }; 217 218 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info); 219 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info); 220 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info); 221 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info); 222 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info); 223 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info); 224 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info); 225 napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info); 226 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info); 227 napi_value GetAbilityLabel(napi_env env, napi_callback_info info); 228 napi_value GetAbilityIcon(napi_env env, napi_callback_info info); 229 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info); 230 napi_value GetPermissionDef(napi_env env, napi_callback_info info); 231 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info); 232 napi_value GetProfile(napi_env env, napi_callback_info info, const ProfileType &profileType); 233 napi_value GetProfileByAbility(napi_env env, napi_callback_info info); 234 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info); 235 napi_value GetApplicationInfo(napi_env env, napi_callback_info info); 236 napi_value GetApplicationInfos(napi_env env, napi_callback_info info); 237 napi_value GetBundleInfos(napi_env env, napi_callback_info info); 238 napi_value GetBundleInfo(napi_env env, napi_callback_info info); 239 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info); 240 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info); 241 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info); 242 napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info); 243 napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info); 244 napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info); 245 napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info); 246 napi_value GetAdditionalInfo(napi_env env, napi_callback_info info); 247 napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info); 248 void CreateApplicationFlagObject(napi_env env, napi_value value); 249 void CreateAbilityFlagObject(napi_env env, napi_value value); 250 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value); 251 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value); 252 void CreateBundleFlagObject(napi_env env, napi_value value); 253 void CreatePermissionGrantStateObject(napi_env env, napi_value value); 254 void CreateAbilityTypeObject(napi_env env, napi_value value); 255 void CreateDisplayOrientationObject(napi_env env, napi_value value); 256 void CreateLaunchTypeObject(napi_env env, napi_value value); 257 void CreateSupportWindowModesObject(napi_env env, napi_value value); 258 void CreateModuleTypeObject(napi_env env, napi_value value); 259 void CreateBundleTypeObject(napi_env env, napi_value value); 260 void CreateCompatiblePolicyObject(napi_env env, napi_value value); 261 void RegisterClearCacheListener(); 262 } // namespace AppExecFwk 263 } // namespace OHOS 264 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H 265