• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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