• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2024 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 "preinstalled_application_info.h"
36 #include "process_cache_callback_host.h"
37 #include "recoverable_application_info.h"
38 #include "shared/shared_bundle_info.h"
39 #include "want.h"
40 
41 namespace OHOS {
42 namespace AppExecFwk {
43 class ClearCacheListener final : public EventFwk::CommonEventSubscriber {
44 public:
45     explicit ClearCacheListener(const EventFwk::CommonEventSubscribeInfo &subscribeInfo);
46     virtual ~ClearCacheListener() = default;
47     void OnReceiveEvent(const EventFwk::CommonEventData &data) override;
48     static void HandleCleanEnv(void *data);
49 };
50 struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo {
GetBundleArchiveInfoCallbackInfoGetBundleArchiveInfoCallbackInfo51     explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
52 
53     std::string hapFilePath;
54     int32_t flags = 0;
55     BundleInfo bundleInfo;
56 };
57 struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo {
GetBundleNameByUidCallbackInfoGetBundleNameByUidCallbackInfo58     explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
59 
60     int32_t uid = 0;
61     std::string bundleName;
62 };
63 struct GetAppCloneIdentityCallbackInfo : public GetBundleNameByUidCallbackInfo {
GetAppCloneIdentityCallbackInfoGetAppCloneIdentityCallbackInfo64     explicit GetAppCloneIdentityCallbackInfo(napi_env env) : GetBundleNameByUidCallbackInfo(env) {}
65 
66     int32_t appIndex = 0;
67 };
68 struct AbilityCallbackInfo : public BaseCallbackInfo {
AbilityCallbackInfoAbilityCallbackInfo69     explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
70 
71     OHOS::AAFwk::Want want;
72     int32_t flags = 0;
73     int32_t userId = Constants::UNSPECIFIED_USERID;
74     bool isSavedInCache = false;
75     std::vector<AbilityInfo> abilityInfos;
76 };
77 
78 struct BatchAbilityCallbackInfo : public BaseCallbackInfo {
BatchAbilityCallbackInfoBatchAbilityCallbackInfo79     explicit BatchAbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
80 
81     std::vector<OHOS::AAFwk::Want> wants;
82     int32_t flags = 0;
83     int32_t userId = Constants::UNSPECIFIED_USERID;
84     bool isSavedInCache = false;
85     std::vector<AbilityInfo> abilityInfos;
86 };
87 
88 struct ExtensionCallbackInfo : public BaseCallbackInfo {
ExtensionCallbackInfoExtensionCallbackInfo89     explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
90 
91     OHOS::AAFwk::Want want;
92     int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED);
93     int32_t flags = 0;
94     int32_t userId = Constants::UNSPECIFIED_USERID;
95     bool isSavedInCache = false;
96     std::vector<ExtensionAbilityInfo> extensionInfos;
97 };
98 
99 struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo {
CleanBundleCacheCallbackInfoCleanBundleCacheCallbackInfo100     explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
101     std::string bundleName;
102     int32_t appIndex = 0;
103     OHOS::sptr<CleanCacheCallback> cleanCacheCallback;
104 };
105 
106 struct GetAllBundleCacheCallbackInfo : public BaseCallbackInfo {
GetAllBundleCacheCallbackInfoGetAllBundleCacheCallbackInfo107     explicit GetAllBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
108 
109     uint64_t cacheSize = 0;
110     OHOS::sptr<ProcessCacheCallbackHost> cacheCallback;
111 };
112 
113 struct CleanAllBundleCacheCallbackInfo : public BaseCallbackInfo {
CleanAllBundleCacheCallbackInfoCleanAllBundleCacheCallbackInfo114     explicit CleanAllBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
115 
116     OHOS::sptr<ProcessCacheCallbackHost> cacheCallback;
117 };
118 
119 struct AbilityIconCallbackInfo : public BaseCallbackInfo {
AbilityIconCallbackInfoAbilityIconCallbackInfo120     explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
121     std::string bundleName;
122     std::string moduleName;
123     std::string abilityName;
124 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED
125     std::shared_ptr<Media::PixelMap> pixelMap = nullptr;
126 #endif
127 };
128 
129 struct AbilityLabelCallbackInfo : public BaseCallbackInfo {
AbilityLabelCallbackInfoAbilityLabelCallbackInfo130     explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
131     std::string bundleName;
132     std::string moduleName;
133     std::string abilityName;
134     std::string abilityLabel;
135 };
136 
137 struct ApplicationEnableCallbackInfo : public BaseCallbackInfo {
ApplicationEnableCallbackInfoApplicationEnableCallbackInfo138     explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
139     std::string bundleName;
140     bool isEnable = false;
141     int32_t appIndex = 0;
142 };
143 
144 struct LaunchWantCallbackInfo : public BaseCallbackInfo {
LaunchWantCallbackInfoLaunchWantCallbackInfo145     explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
146     std::string bundleName;
147     int32_t userId = Constants::UNSPECIFIED_USERID;
148     OHOS::AAFwk::Want want;
149 };
150 
151 struct VerifyCallbackInfo : public BaseCallbackInfo {
VerifyCallbackInfoVerifyCallbackInfo152     explicit VerifyCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
153     std::vector<std::string> abcPaths;
154     bool flag = false;
155     std::string deletePath;
156 };
157 
158 struct DynamicIconCallbackInfo : public BaseCallbackInfo {
DynamicIconCallbackInfoDynamicIconCallbackInfo159     explicit DynamicIconCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
160     std::string bundleName;
161     std::string moduleName;
162     std::vector<std::string> moduleNames;
163 };
164 
165 enum AbilityProfileType : uint32_t {
166     ABILITY_PROFILE = 0,
167     EXTENSION_PROFILE,
168     UNKNOWN_PROFILE
169 };
170 
171 struct GetProfileCallbackInfo : public BaseCallbackInfo {
GetProfileCallbackInfoGetProfileCallbackInfo172     explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
173     AbilityProfileType type = AbilityProfileType::UNKNOWN_PROFILE;
174     std::string moduleName;
175     std::string abilityName;
176     std::string metadataName;
177     std::vector<std::string> profileVec;
178 };
179 
180 struct AbilityEnableCallbackInfo : public BaseCallbackInfo {
AbilityEnableCallbackInfoAbilityEnableCallbackInfo181     explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
182     AbilityInfo abilityInfo;
183     bool isEnable = false;
184     int32_t appIndex = 0;
185 };
186 
187 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo {
ApplicationInfoCallbackInfoApplicationInfoCallbackInfo188     explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
189 
190     std::string bundleName;
191     int32_t flags = 0;
192     int32_t userId = Constants::UNSPECIFIED_USERID;
193     ApplicationInfo appInfo;
194 };
195 
196 struct ApplicationInfosCallbackInfo : public BaseCallbackInfo {
ApplicationInfosCallbackInfoApplicationInfosCallbackInfo197     explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
198 
199     int32_t flags = 0;
200     int32_t userId = Constants::UNSPECIFIED_USERID;
201     std::vector<ApplicationInfo> appInfos;
202 };
203 
204 struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo {
AsyncPermissionDefineCallbackInfoAsyncPermissionDefineCallbackInfo205     explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
206     std::string permissionName;
207     OHOS::AppExecFwk::PermissionDef permissionDef;
208 };
209 
210 struct Query {
211     std::string bundleName_;
212     std::string interfaceType_;
213     int32_t flags_ = 0;
214     int32_t userId_ = Constants::UNSPECIFIED_USERID;
215     napi_env env_;
QueryQuery216     Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env)
217         : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {}
218 
219     bool operator==(const Query &query) const
220     {
221         return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ &&
222             flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_;
223     }
224 };
225 
226 struct QueryHash  {
operatorQueryHash227     size_t operator()(const Query &query) const
228     {
229         return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^
230             std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_) ^
231             std::hash<napi_env>()(query.env_);
232     }
233 };
234 
235 struct BundleInfosCallbackInfo : public BaseCallbackInfo {
BundleInfosCallbackInfoBundleInfosCallbackInfo236     explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
237 
238     int32_t flags = 0;
239     int32_t userId = Constants::UNSPECIFIED_USERID;
240     std::vector<BundleInfo> bundleInfos;
241 };
242 
243 struct BundleInfoCallbackInfo : public BaseCallbackInfo {
BundleInfoCallbackInfoBundleInfoCallbackInfo244     explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
245     std::string bundleName;
246     int32_t flags = 0;
247     int32_t userId = Constants::UNSPECIFIED_USERID;
248     bool isSavedInCache = false;
249     int32_t uid = 0;
250     BundleInfo bundleInfo;
251 };
252 
253 struct BatchBundleInfoCallbackInfo : public BaseCallbackInfo {
BatchBundleInfoCallbackInfoBatchBundleInfoCallbackInfo254     explicit BatchBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
255     std::vector<std::string> bundleNames;
256     int32_t flags = 0;
257     int32_t userId = Constants::UNSPECIFIED_USERID;
258     bool isSavedInCache = false;
259     int32_t uid = 0;
260     std::vector<BundleInfo> bundleInfos;
261 };
262 
263 struct SharedBundleCallbackInfo : public BaseCallbackInfo {
SharedBundleCallbackInfoSharedBundleCallbackInfo264     explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
265 
266     std::string bundleName;
267     std::string moduleName;
268     std::vector<SharedBundleInfo> sharedBundles;
269 };
270 
271 struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo {
AppProvisionInfoCallbackInfoAppProvisionInfoCallbackInfo272     explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
273     std::string bundleName;
274     int32_t userId = Constants::UNSPECIFIED_USERID;
275     AppProvisionInfo appProvisionInfo;
276 };
277 
278 struct RecoverableApplicationCallbackInfo : public BaseCallbackInfo {
RecoverableApplicationCallbackInfoRecoverableApplicationCallbackInfo279     explicit RecoverableApplicationCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
280 
281     std::vector<RecoverableApplicationInfo> recoverableApplicationInfos;
282 };
283 
284 struct PreinstalledApplicationInfosCallbackInfo : public BaseCallbackInfo {
PreinstalledApplicationInfosCallbackInfoPreinstalledApplicationInfosCallbackInfo285     explicit PreinstalledApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
286     std::vector<PreinstalledApplicationInfo> preinstalledApplicationInfos;
287 };
288 
289 struct CloneAppBundleInfoCallbackInfo : public BaseCallbackInfo {
CloneAppBundleInfoCallbackInfoCloneAppBundleInfoCallbackInfo290     explicit CloneAppBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
291 
292     std::string bundleName;
293     int32_t appIndex = 0;
294     int32_t bundleFlags = 0;
295     int32_t userId = Constants::UNSPECIFIED_USERID;
296     BundleInfo bundleInfo;
297 };
298 
299 struct CloneAppBundleInfosCallbackInfo : public BaseCallbackInfo {
CloneAppBundleInfosCallbackInfoCloneAppBundleInfosCallbackInfo300     explicit CloneAppBundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
301 
302     std::string bundleName;
303     int32_t bundleFlags = 0;
304     int32_t userId = Constants::UNSPECIFIED_USERID;
305     std::vector<BundleInfo> bundleInfos;
306 };
307 
308 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info);
309 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info);
310 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info);
311 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info);
312 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info);
313 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info);
314 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info);
315 napi_value BatchQueryAbilityInfos(napi_env env, napi_callback_info info);
316 napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info);
317 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info);
318 napi_value GetAbilityLabel(napi_env env, napi_callback_info info);
319 napi_value GetAbilityIcon(napi_env env, napi_callback_info info);
320 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info);
321 napi_value GetPermissionDef(napi_env env, napi_callback_info info);
322 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info);
323 napi_value GetProfile(napi_env env, napi_callback_info info, const AbilityProfileType &profileType);
324 napi_value GetProfileByAbility(napi_env env, napi_callback_info info);
325 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info);
326 napi_value GetApplicationInfo(napi_env env, napi_callback_info info);
327 napi_value GetApplicationInfos(napi_env env, napi_callback_info info);
328 napi_value GetBundleInfos(napi_env env, napi_callback_info info);
329 napi_value GetBundleInfo(napi_env env, napi_callback_info info);
330 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info);
331 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info);
332 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info);
333 napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info);
334 napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info);
335 napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info);
336 napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info);
337 napi_value GetAdditionalInfo(napi_env env, napi_callback_info info);
338 napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info);
339 napi_value VerifyAbc(napi_env env, napi_callback_info info);
340 napi_value DeleteAbc(napi_env env, napi_callback_info info);
341 napi_value GetExtResource(napi_env env, napi_callback_info info);
342 napi_value EnableDynamicIcon(napi_env env, napi_callback_info info);
343 napi_value DisableDynamicIcon(napi_env env, napi_callback_info info);
344 napi_value GetDynamicIcon(napi_env env, napi_callback_info info);
345 napi_value GetJsonProfile(napi_env env, napi_callback_info info);
346 napi_value GetRecoverableApplicationInfo(napi_env env, napi_callback_info info);
347 napi_value SetAdditionalInfo(napi_env env, napi_callback_info info);
348 napi_value CanOpenLink(napi_env env, napi_callback_info info);
349 napi_value GetAllPreinstalledApplicationInfos(napi_env env, napi_callback_info info);
350 napi_value GetAllBundleInfoByDeveloperId(napi_env env, napi_callback_info info);
351 napi_value GetDeveloperIds(napi_env env, napi_callback_info info);
352 napi_value SwitchUninstallState(napi_env env, napi_callback_info info);
353 napi_value GetAppCloneBundleInfo(napi_env env, napi_callback_info info);
354 napi_value GetAllAppCloneBundleInfo(napi_env env, napi_callback_info info);
355 napi_value GetAppCloneIdentity(napi_env env, napi_callback_info info);
356 napi_value GetAllBundleCacheSize(napi_env env, napi_callback_info info);
357 napi_value CleanAllBundleCache(napi_env env, napi_callback_info info);
358 napi_value GetLaunchWant(napi_env env, napi_callback_info info);
359 void CreateApplicationFlagObject(napi_env env, napi_value value);
360 void CreateAbilityFlagObject(napi_env env, napi_value value);
361 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value);
362 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value);
363 void CreateBundleFlagObject(napi_env env, napi_value value);
364 void CreatePermissionGrantStateObject(napi_env env, napi_value value);
365 void CreateAbilityTypeObject(napi_env env, napi_value value);
366 void CreateDisplayOrientationObject(napi_env env, napi_value value);
367 void CreateOrientationRelatedToSensor(napi_env env, napi_value value);
368 void CreateLaunchTypeObject(napi_env env, napi_value value);
369 void CreateSupportWindowModesObject(napi_env env, napi_value value);
370 void CreateModuleTypeObject(napi_env env, napi_value value);
371 void CreateBundleTypeObject(napi_env env, napi_value value);
372 void CreateCompatiblePolicyObject(napi_env env, napi_value value);
373 void CreateProfileTypeObject(napi_env env, napi_value value);
374 void CreateAppDistributionTypeObject(napi_env env, napi_value value);
375 void RegisterClearCacheListener();
376 void CreateMultiAppModeTypeObject(napi_env env, napi_value value);
377 void CreateApplicationInfoFlagObject(napi_env env, napi_value value);
378 }  // namespace AppExecFwk
379 }  // namespace OHOS
380 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H
381