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 "recoverable_application_info.h" 36 #include "shared/shared_bundle_info.h" 37 #include "want.h" 38 39 namespace OHOS { 40 namespace AppExecFwk { 41 class ClearCacheListener final : public EventFwk::CommonEventSubscriber { 42 public: 43 explicit ClearCacheListener(const EventFwk::CommonEventSubscribeInfo &subscribeInfo); 44 virtual ~ClearCacheListener() = default; 45 void OnReceiveEvent(const EventFwk::CommonEventData &data) override; 46 }; 47 struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo { GetBundleArchiveInfoCallbackInfoGetBundleArchiveInfoCallbackInfo48 explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 49 50 std::string hapFilePath; 51 int32_t flags = 0; 52 BundleInfo bundleInfo; 53 }; 54 struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo { GetBundleNameByUidCallbackInfoGetBundleNameByUidCallbackInfo55 explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 56 57 int32_t uid = 0; 58 std::string bundleName; 59 }; 60 struct AbilityCallbackInfo : public BaseCallbackInfo { AbilityCallbackInfoAbilityCallbackInfo61 explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 62 63 OHOS::AAFwk::Want want; 64 int32_t flags = 0; 65 int32_t userId = Constants::UNSPECIFIED_USERID; 66 bool isSavedInCache = false; 67 std::vector<AbilityInfo> abilityInfos; 68 }; 69 70 struct ExtensionCallbackInfo : public BaseCallbackInfo { ExtensionCallbackInfoExtensionCallbackInfo71 explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 72 73 OHOS::AAFwk::Want want; 74 int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED); 75 int32_t flags = 0; 76 int32_t userId = Constants::UNSPECIFIED_USERID; 77 bool isSavedInCache = false; 78 std::vector<ExtensionAbilityInfo> extensionInfos; 79 }; 80 81 struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo { CleanBundleCacheCallbackInfoCleanBundleCacheCallbackInfo82 explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 83 std::string bundleName; 84 OHOS::sptr<CleanCacheCallback> cleanCacheCallback; 85 }; 86 87 struct AbilityIconCallbackInfo : public BaseCallbackInfo { AbilityIconCallbackInfoAbilityIconCallbackInfo88 explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 89 std::string bundleName; 90 std::string moduleName; 91 std::string abilityName; 92 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED 93 std::shared_ptr<Media::PixelMap> pixelMap = nullptr; 94 #endif 95 }; 96 97 struct AbilityLabelCallbackInfo : public BaseCallbackInfo { AbilityLabelCallbackInfoAbilityLabelCallbackInfo98 explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 99 std::string bundleName; 100 std::string moduleName; 101 std::string abilityName; 102 std::string abilityLabel; 103 }; 104 105 struct ApplicationEnableCallbackInfo : public BaseCallbackInfo { ApplicationEnableCallbackInfoApplicationEnableCallbackInfo106 explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 107 std::string bundleName; 108 bool isEnable = false; 109 }; 110 111 struct LaunchWantCallbackInfo : public BaseCallbackInfo { LaunchWantCallbackInfoLaunchWantCallbackInfo112 explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 113 std::string bundleName; 114 int32_t userId = Constants::UNSPECIFIED_USERID; 115 OHOS::AAFwk::Want want; 116 }; 117 118 struct VerifyCallbackInfo : public BaseCallbackInfo { VerifyCallbackInfoVerifyCallbackInfo119 explicit VerifyCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 120 std::vector<std::string> abcPaths; 121 bool flag = false; 122 std::string deletePath; 123 }; 124 125 enum AbilityProfileType : uint32_t { 126 ABILITY_PROFILE = 0, 127 EXTENSION_PROFILE, 128 UNKNOWN_PROFILE 129 }; 130 131 struct GetProfileCallbackInfo : public BaseCallbackInfo { GetProfileCallbackInfoGetProfileCallbackInfo132 explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 133 AbilityProfileType type = AbilityProfileType::UNKNOWN_PROFILE; 134 std::string moduleName; 135 std::string abilityName; 136 std::string metadataName; 137 std::vector<std::string> profileVec; 138 }; 139 140 struct AbilityEnableCallbackInfo : public BaseCallbackInfo { AbilityEnableCallbackInfoAbilityEnableCallbackInfo141 explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 142 AbilityInfo abilityInfo; 143 bool isEnable = false; 144 }; 145 146 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo { ApplicationInfoCallbackInfoApplicationInfoCallbackInfo147 explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 148 149 std::string bundleName; 150 int32_t flags = 0; 151 int32_t userId = Constants::UNSPECIFIED_USERID; 152 ApplicationInfo appInfo; 153 }; 154 155 struct ApplicationInfosCallbackInfo : public BaseCallbackInfo { ApplicationInfosCallbackInfoApplicationInfosCallbackInfo156 explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 157 158 int32_t flags = 0; 159 int32_t userId = Constants::UNSPECIFIED_USERID; 160 std::vector<ApplicationInfo> appInfos; 161 }; 162 163 struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo { AsyncPermissionDefineCallbackInfoAsyncPermissionDefineCallbackInfo164 explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 165 std::string permissionName; 166 OHOS::AppExecFwk::PermissionDef permissionDef; 167 }; 168 169 struct Query { 170 std::string bundleName_; 171 std::string interfaceType_; 172 int32_t flags_ = 0; 173 int32_t userId_ = Constants::UNSPECIFIED_USERID; 174 napi_env env_; QueryQuery175 Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env) 176 : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {} 177 178 bool operator==(const Query &query) const 179 { 180 return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ && 181 flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_; 182 } 183 }; 184 185 struct QueryHash { operatorQueryHash186 size_t operator()(const Query &query) const 187 { 188 return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^ 189 std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_); 190 } 191 }; 192 193 struct BundleInfosCallbackInfo : public BaseCallbackInfo { BundleInfosCallbackInfoBundleInfosCallbackInfo194 explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 195 196 int32_t flags = 0; 197 int32_t userId = Constants::UNSPECIFIED_USERID; 198 std::vector<BundleInfo> bundleInfos; 199 }; 200 201 struct BundleInfoCallbackInfo : public BaseCallbackInfo { BundleInfoCallbackInfoBundleInfoCallbackInfo202 explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 203 std::string bundleName; 204 int32_t flags = 0; 205 int32_t userId = Constants::UNSPECIFIED_USERID; 206 bool isSavedInCache = false; 207 int32_t uid = 0; 208 BundleInfo bundleInfo; 209 }; 210 211 struct SharedBundleCallbackInfo : public BaseCallbackInfo { SharedBundleCallbackInfoSharedBundleCallbackInfo212 explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 213 214 std::string bundleName; 215 std::string moduleName; 216 std::vector<SharedBundleInfo> sharedBundles; 217 }; 218 219 struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo { AppProvisionInfoCallbackInfoAppProvisionInfoCallbackInfo220 explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 221 std::string bundleName; 222 int32_t userId = Constants::UNSPECIFIED_USERID; 223 AppProvisionInfo appProvisionInfo; 224 }; 225 226 struct RecoverableApplicationCallbackInfo : public BaseCallbackInfo { RecoverableApplicationCallbackInfoRecoverableApplicationCallbackInfo227 explicit RecoverableApplicationCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 228 229 std::vector<RecoverableApplicationInfo> recoverableApplicationInfos; 230 }; 231 232 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info); 233 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info); 234 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info); 235 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info); 236 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info); 237 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info); 238 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info); 239 napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info); 240 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info); 241 napi_value GetAbilityLabel(napi_env env, napi_callback_info info); 242 napi_value GetAbilityIcon(napi_env env, napi_callback_info info); 243 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info); 244 napi_value GetPermissionDef(napi_env env, napi_callback_info info); 245 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info); 246 napi_value GetProfile(napi_env env, napi_callback_info info, const AbilityProfileType &profileType); 247 napi_value GetProfileByAbility(napi_env env, napi_callback_info info); 248 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info); 249 napi_value GetApplicationInfo(napi_env env, napi_callback_info info); 250 napi_value GetApplicationInfos(napi_env env, napi_callback_info info); 251 napi_value GetBundleInfos(napi_env env, napi_callback_info info); 252 napi_value GetBundleInfo(napi_env env, napi_callback_info info); 253 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info); 254 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info); 255 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info); 256 napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info); 257 napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info); 258 napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info); 259 napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info); 260 napi_value GetAdditionalInfo(napi_env env, napi_callback_info info); 261 napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info); 262 napi_value VerifyAbc(napi_env env, napi_callback_info info); 263 napi_value DeleteAbc(napi_env env, napi_callback_info info); 264 napi_value GetJsonProfile(napi_env env, napi_callback_info info); 265 napi_value GetRecoverableApplicationInfo(napi_env env, napi_callback_info info); 266 napi_value SetAdditionalInfo(napi_env env, napi_callback_info info); 267 void CreateApplicationFlagObject(napi_env env, napi_value value); 268 void CreateAbilityFlagObject(napi_env env, napi_value value); 269 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value); 270 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value); 271 void CreateBundleFlagObject(napi_env env, napi_value value); 272 void CreatePermissionGrantStateObject(napi_env env, napi_value value); 273 void CreateAbilityTypeObject(napi_env env, napi_value value); 274 void CreateDisplayOrientationObject(napi_env env, napi_value value); 275 void CreateLaunchTypeObject(napi_env env, napi_value value); 276 void CreateSupportWindowModesObject(napi_env env, napi_value value); 277 void CreateModuleTypeObject(napi_env env, napi_value value); 278 void CreateBundleTypeObject(napi_env env, napi_value value); 279 void CreateCompatiblePolicyObject(napi_env env, napi_value value); 280 void CreateProfileTypeObject(napi_env env, napi_value value); 281 void RegisterClearCacheListener(); 282 } // namespace AppExecFwk 283 } // namespace OHOS 284 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H 285