• 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     int32_t flags = 0;
54     std::string hapFilePath;
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     bool isSavedInCache = false;
72     int32_t flags = 0;
73     int32_t userId = Constants::UNSPECIFIED_USERID;
74     std::vector<AbilityInfo> abilityInfos;
75     OHOS::AAFwk::Want want;
76 };
77 
78 struct BatchAbilityCallbackInfo : public BaseCallbackInfo {
BatchAbilityCallbackInfoBatchAbilityCallbackInfo79     explicit BatchAbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
80 
81     bool isSavedInCache = false;
82     int32_t flags = 0;
83     int32_t userId = Constants::UNSPECIFIED_USERID;
84     std::vector<AbilityInfo> abilityInfos;
85     std::vector<OHOS::AAFwk::Want> wants;
86 };
87 
88 struct ExtensionCallbackInfo : public BaseCallbackInfo {
ExtensionCallbackInfoExtensionCallbackInfo89     explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
90 
91     bool isSavedInCache = false;
92     int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED);
93     int32_t flags = 0;
94     int32_t userId = Constants::UNSPECIFIED_USERID;
95     std::vector<ExtensionAbilityInfo> extensionInfos;
96     OHOS::AAFwk::Want want;
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     bool isEnable = false;
140     int32_t appIndex = 0;
141     std::string bundleName;
142 };
143 
144 struct LaunchWantCallbackInfo : public BaseCallbackInfo {
LaunchWantCallbackInfoLaunchWantCallbackInfo145     explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
146     int32_t userId = Constants::UNSPECIFIED_USERID;
147     std::string bundleName;
148     OHOS::AAFwk::Want want;
149 };
150 
151 struct VerifyCallbackInfo : public BaseCallbackInfo {
VerifyCallbackInfoVerifyCallbackInfo152     explicit VerifyCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
153     bool flag = false;
154     std::string deletePath;
155     std::vector<std::string> abcPaths;
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     bool isEnable = false;
183     int32_t appIndex = 0;
184     AbilityInfo abilityInfo;
185 };
186 
187 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo {
ApplicationInfoCallbackInfoApplicationInfoCallbackInfo188     explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
189 
190     int32_t flags = 0;
191     int32_t userId = Constants::UNSPECIFIED_USERID;
192     std::string bundleName;
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 MigrateDataCallbackInfo : public BaseCallbackInfo {
MigrateDataCallbackInfoMigrateDataCallbackInfo211     explicit MigrateDataCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
212     std::vector<std::string> sourcePaths;
213     std::string destinationPath;
214 };
215 
216 struct Query {
217     std::string bundleName_;
218     std::string interfaceType_;
219     int32_t flags_ = 0;
220     int32_t userId_ = Constants::UNSPECIFIED_USERID;
221     napi_env env_;
QueryQuery222     Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env)
223         : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {}
224 
225     bool operator==(const Query &query) const
226     {
227         return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ &&
228             flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_;
229     }
230 };
231 
232 struct QueryHash  {
operatorQueryHash233     size_t operator()(const Query &query) const
234     {
235         return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^
236             std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_) ^
237             std::hash<napi_env>()(query.env_);
238     }
239 };
240 
241 struct BundleInfosCallbackInfo : public BaseCallbackInfo {
BundleInfosCallbackInfoBundleInfosCallbackInfo242     explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
243 
244     int32_t flags = 0;
245     int32_t userId = Constants::UNSPECIFIED_USERID;
246     std::vector<BundleInfo> bundleInfos;
247 };
248 
249 struct BundleInfoCallbackInfo : public BaseCallbackInfo {
BundleInfoCallbackInfoBundleInfoCallbackInfo250     explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
251     bool isSavedInCache = false;
252     int32_t flags = 0;
253     int32_t userId = Constants::UNSPECIFIED_USERID;
254     int32_t uid = 0;
255     std::string bundleName;
256     BundleInfo bundleInfo;
257 };
258 
259 struct BatchBundleInfoCallbackInfo : public BaseCallbackInfo {
BatchBundleInfoCallbackInfoBatchBundleInfoCallbackInfo260     explicit BatchBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
261     bool isSavedInCache = false;
262     int32_t flags = 0;
263     int32_t userId = Constants::UNSPECIFIED_USERID;
264     int32_t uid = 0;
265     std::vector<std::string> bundleNames;
266     std::vector<BundleInfo> bundleInfos;
267 };
268 
269 struct SharedBundleCallbackInfo : public BaseCallbackInfo {
SharedBundleCallbackInfoSharedBundleCallbackInfo270     explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
271 
272     std::string bundleName;
273     std::string moduleName;
274     std::vector<SharedBundleInfo> sharedBundles;
275 };
276 
277 struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo {
AppProvisionInfoCallbackInfoAppProvisionInfoCallbackInfo278     explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
279     int32_t userId = Constants::UNSPECIFIED_USERID;
280     std::string bundleName;
281     AppProvisionInfo appProvisionInfo;
282 };
283 
284 struct RecoverableApplicationCallbackInfo : public BaseCallbackInfo {
RecoverableApplicationCallbackInfoRecoverableApplicationCallbackInfo285     explicit RecoverableApplicationCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
286 
287     std::vector<RecoverableApplicationInfo> recoverableApplicationInfos;
288 };
289 
290 struct PreinstalledApplicationInfosCallbackInfo : public BaseCallbackInfo {
PreinstalledApplicationInfosCallbackInfoPreinstalledApplicationInfosCallbackInfo291     explicit PreinstalledApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
292     std::vector<PreinstalledApplicationInfo> preinstalledApplicationInfos;
293 };
294 
295 struct CloneAppBundleInfoCallbackInfo : public BaseCallbackInfo {
CloneAppBundleInfoCallbackInfoCloneAppBundleInfoCallbackInfo296     explicit CloneAppBundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
297 
298     int32_t appIndex = 0;
299     int32_t bundleFlags = 0;
300     int32_t userId = Constants::UNSPECIFIED_USERID;
301     std::string bundleName;
302     BundleInfo bundleInfo;
303 };
304 
305 struct CloneAppBundleInfosCallbackInfo : public BaseCallbackInfo {
CloneAppBundleInfosCallbackInfoCloneAppBundleInfosCallbackInfo306     explicit CloneAppBundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
307 
308     int32_t bundleFlags = 0;
309     int32_t userId = Constants::UNSPECIFIED_USERID;
310     std::string bundleName;
311     std::vector<BundleInfo> bundleInfos;
312 };
313 
314 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info);
315 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info);
316 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info);
317 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info);
318 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info);
319 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info);
320 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info);
321 napi_value BatchQueryAbilityInfos(napi_env env, napi_callback_info info);
322 napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info);
323 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info);
324 napi_value GetAbilityLabel(napi_env env, napi_callback_info info);
325 napi_value GetAbilityIcon(napi_env env, napi_callback_info info);
326 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info);
327 napi_value GetPermissionDef(napi_env env, napi_callback_info info);
328 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info);
329 napi_value GetProfile(napi_env env, napi_callback_info info, const AbilityProfileType &profileType);
330 napi_value GetProfileByAbility(napi_env env, napi_callback_info info);
331 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info);
332 napi_value GetApplicationInfo(napi_env env, napi_callback_info info);
333 napi_value GetApplicationInfos(napi_env env, napi_callback_info info);
334 napi_value GetBundleInfos(napi_env env, napi_callback_info info);
335 napi_value GetBundleInfo(napi_env env, napi_callback_info info);
336 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info);
337 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info);
338 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info);
339 napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info);
340 napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info);
341 napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info);
342 napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info);
343 napi_value GetAdditionalInfo(napi_env env, napi_callback_info info);
344 napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info);
345 napi_value VerifyAbc(napi_env env, napi_callback_info info);
346 napi_value DeleteAbc(napi_env env, napi_callback_info info);
347 napi_value GetExtResource(napi_env env, napi_callback_info info);
348 napi_value EnableDynamicIcon(napi_env env, napi_callback_info info);
349 napi_value DisableDynamicIcon(napi_env env, napi_callback_info info);
350 napi_value GetDynamicIcon(napi_env env, napi_callback_info info);
351 napi_value GetJsonProfile(napi_env env, napi_callback_info info);
352 napi_value GetRecoverableApplicationInfo(napi_env env, napi_callback_info info);
353 napi_value SetAdditionalInfo(napi_env env, napi_callback_info info);
354 napi_value CanOpenLink(napi_env env, napi_callback_info info);
355 napi_value GetAllPreinstalledApplicationInfos(napi_env env, napi_callback_info info);
356 napi_value GetAllBundleInfoByDeveloperId(napi_env env, napi_callback_info info);
357 napi_value GetDeveloperIds(napi_env env, napi_callback_info info);
358 napi_value SwitchUninstallState(napi_env env, napi_callback_info info);
359 napi_value GetAppCloneBundleInfo(napi_env env, napi_callback_info info);
360 napi_value GetAllAppCloneBundleInfo(napi_env env, napi_callback_info info);
361 napi_value GetAppCloneIdentity(napi_env env, napi_callback_info info);
362 napi_value GetAllBundleCacheSize(napi_env env, napi_callback_info info);
363 napi_value CleanAllBundleCache(napi_env env, napi_callback_info info);
364 napi_value GetLaunchWant(napi_env env, napi_callback_info info);
365 napi_value MigrateData(napi_env env, napi_callback_info info);
366 void CreateApplicationFlagObject(napi_env env, napi_value value);
367 void CreateAbilityFlagObject(napi_env env, napi_value value);
368 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value);
369 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value);
370 void CreateBundleFlagObject(napi_env env, napi_value value);
371 void CreatePermissionGrantStateObject(napi_env env, napi_value value);
372 void CreateAbilityTypeObject(napi_env env, napi_value value);
373 void CreateDisplayOrientationObject(napi_env env, napi_value value);
374 void CreateOrientationRelatedToSensor(napi_env env, napi_value value);
375 void CreateLaunchTypeObject(napi_env env, napi_value value);
376 void CreateSupportWindowModesObject(napi_env env, napi_value value);
377 void CreateModuleTypeObject(napi_env env, napi_value value);
378 void CreateBundleTypeObject(napi_env env, napi_value value);
379 void CreateCompatiblePolicyObject(napi_env env, napi_value value);
380 void CreateProfileTypeObject(napi_env env, napi_value value);
381 void CreateAppDistributionTypeObject(napi_env env, napi_value value);
382 void RegisterClearCacheListener();
383 void CreateMultiAppModeTypeObject(napi_env env, napi_value value);
384 void CreateApplicationInfoFlagObject(napi_env env, napi_value value);
385 }  // namespace AppExecFwk
386 }  // namespace OHOS
387 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H
388