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 "base_cb_info.h" 21 #include "bundle_constants.h" 22 #include "bundle_info.h" 23 #include "bundle_mgr_interface.h" 24 #include "clean_cache_callback.h" 25 #include "napi/native_api.h" 26 #include "napi/native_common.h" 27 #include "napi/native_node_api.h" 28 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED 29 #include "pixel_map.h" 30 #endif 31 #include "want.h" 32 33 namespace OHOS { 34 namespace AppExecFwk { 35 struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo { GetBundleArchiveInfoCallbackInfoGetBundleArchiveInfoCallbackInfo36 explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 37 38 std::string hapFilePath; 39 int32_t flags = 0; 40 BundleInfo bundleInfo; 41 }; 42 struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo { GetBundleNameByUidCallbackInfoGetBundleNameByUidCallbackInfo43 explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 44 45 int32_t uid = 0; 46 std::string bundleName; 47 }; 48 struct AbilityCallbackInfo : public BaseCallbackInfo { AbilityCallbackInfoAbilityCallbackInfo49 explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 50 51 OHOS::AAFwk::Want want; 52 int32_t flags = 0; 53 int32_t userId = Constants::UNSPECIFIED_USERID; 54 bool isSavedInCache = false; 55 std::vector<AbilityInfo> abilityInfos; 56 }; 57 58 struct ExtensionCallbackInfo : public BaseCallbackInfo { ExtensionCallbackInfoExtensionCallbackInfo59 explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 60 61 OHOS::AAFwk::Want want; 62 int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED); 63 int32_t flags = 0; 64 int32_t userId = Constants::UNSPECIFIED_USERID; 65 std::vector<ExtensionAbilityInfo> extensionInfos; 66 }; 67 68 struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo { CleanBundleCacheCallbackInfoCleanBundleCacheCallbackInfo69 explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 70 std::string bundleName; 71 OHOS::sptr<CleanCacheCallback> cleanCacheCallback; 72 }; 73 74 struct AbilityIconCallbackInfo : public BaseCallbackInfo { AbilityIconCallbackInfoAbilityIconCallbackInfo75 explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 76 std::string bundleName; 77 std::string moduleName; 78 std::string abilityName; 79 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED 80 std::shared_ptr<Media::PixelMap> pixelMap = nullptr; 81 #endif 82 }; 83 84 struct AbilityLabelCallbackInfo : public BaseCallbackInfo { AbilityLabelCallbackInfoAbilityLabelCallbackInfo85 explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 86 std::string bundleName; 87 std::string moduleName; 88 std::string abilityName; 89 std::string abilityLabel; 90 }; 91 92 struct ApplicationEnableCallbackInfo : public BaseCallbackInfo { ApplicationEnableCallbackInfoApplicationEnableCallbackInfo93 explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 94 std::string bundleName; 95 bool isEnable = false; 96 }; 97 98 struct LaunchWantCallbackInfo : public BaseCallbackInfo { LaunchWantCallbackInfoLaunchWantCallbackInfo99 explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 100 std::string bundleName; 101 int32_t userId = Constants::UNSPECIFIED_USERID; 102 OHOS::AAFwk::Want want; 103 }; 104 105 enum ProfileType : uint32_t { 106 ABILITY_PROFILE = 0, 107 EXTENSION_PROFILE, 108 UNKNOWN_PROFILE 109 }; 110 111 struct GetProfileCallbackInfo : public BaseCallbackInfo { GetProfileCallbackInfoGetProfileCallbackInfo112 explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 113 ProfileType type = ProfileType::UNKNOWN_PROFILE; 114 std::string moduleName; 115 std::string abilityName; 116 std::string metadataName; 117 std::vector<std::string> profileVec; 118 }; 119 120 struct AbilityEnableCallbackInfo : public BaseCallbackInfo { AbilityEnableCallbackInfoAbilityEnableCallbackInfo121 explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 122 AbilityInfo abilityInfo; 123 bool isEnable = false; 124 }; 125 126 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo { ApplicationInfoCallbackInfoApplicationInfoCallbackInfo127 explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {} 128 129 std::string bundleName; 130 int32_t flags = 0; 131 int32_t userId = Constants::UNSPECIFIED_USERID; 132 ApplicationInfo appInfo; 133 }; 134 135 struct ApplicationInfosCallbackInfo : public BaseCallbackInfo { ApplicationInfosCallbackInfoApplicationInfosCallbackInfo136 explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 137 138 int32_t flags = 0; 139 int32_t userId = Constants::UNSPECIFIED_USERID; 140 std::vector<ApplicationInfo> appInfos; 141 }; 142 143 struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo { AsyncPermissionDefineCallbackInfoAsyncPermissionDefineCallbackInfo144 explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 145 std::string permissionName; 146 OHOS::AppExecFwk::PermissionDef permissionDef; 147 }; 148 149 struct Query { 150 std::string bundleName_; 151 std::string interfaceType_; 152 int32_t flags_ = 0; 153 int32_t userId_ = Constants::UNSPECIFIED_USERID; 154 napi_env env_; QueryQuery155 Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env) 156 : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {} 157 158 bool operator==(const Query &query) const 159 { 160 return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ && 161 flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_; 162 } 163 }; 164 165 struct QueryHash { operatorQueryHash166 size_t operator()(const Query &query) const 167 { 168 return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^ 169 std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_); 170 } 171 }; 172 173 struct BundleInfosCallbackInfo : public BaseCallbackInfo { BundleInfosCallbackInfoBundleInfosCallbackInfo174 explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 175 176 int32_t flags = 0; 177 int32_t userId = Constants::UNSPECIFIED_USERID; 178 std::vector<BundleInfo> bundleInfos; 179 }; 180 181 struct BundleInfoCallbackInfo : public BaseCallbackInfo { BundleInfoCallbackInfoBundleInfoCallbackInfo182 explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {} 183 std::string bundleName; 184 int32_t flags = 0; 185 int32_t userId = Constants::UNSPECIFIED_USERID; 186 BundleInfo bundleInfo; 187 }; 188 189 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info); 190 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info); 191 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info); 192 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info); 193 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info); 194 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info); 195 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info); 196 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info); 197 napi_value GetAbilityLabel(napi_env env, napi_callback_info info); 198 napi_value GetAbilityIcon(napi_env env, napi_callback_info info); 199 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info); 200 napi_value GetPermissionDef(napi_env env, napi_callback_info info); 201 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info); 202 napi_value GetProfile(napi_env env, napi_callback_info info, const ProfileType &profileType); 203 napi_value GetProfileByAbility(napi_env env, napi_callback_info info); 204 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info); 205 napi_value GetApplicationInfo(napi_env env, napi_callback_info info); 206 napi_value GetApplicationInfos(napi_env env, napi_callback_info info); 207 napi_value GetBundleInfos(napi_env env, napi_callback_info info); 208 napi_value GetBundleInfo(napi_env env, napi_callback_info info); 209 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info); 210 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info); 211 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info); 212 void CreateApplicationFlagObject(napi_env env, napi_value value); 213 void CreateAbilityFlagObject(napi_env env, napi_value value); 214 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value); 215 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value); 216 void CreateBundleFlagObject(napi_env env, napi_value value); 217 void CreatePermissionGrantStateObject(napi_env env, napi_value value); 218 void CreateAbilityTypeObject(napi_env env, napi_value value); 219 void CreateDisplayOrientationObject(napi_env env, napi_value value); 220 void CreateLaunchTypeObject(napi_env env, napi_value value); 221 void CreateSupportWindowModesObject(napi_env env, napi_value value); 222 void CreateBundleTypeObject(napi_env env, napi_value value); 223 void CreateModuleTypeObject(napi_env env, napi_value value); 224 } // namespace AppExecFwk 225 } // namespace OHOS 226 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H 227