• 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 "shared/shared_bundle_info.h"
36 #include "want.h"
37 
38 namespace OHOS {
39 namespace AppExecFwk {
40 class ClearCacheListener final : public EventFwk::CommonEventSubscriber {
41 public:
42     explicit ClearCacheListener(const EventFwk::CommonEventSubscribeInfo &subscribeInfo);
43     virtual ~ClearCacheListener() = default;
44     void OnReceiveEvent(const EventFwk::CommonEventData &data) override;
45 };
46 struct GetBundleArchiveInfoCallbackInfo : public BaseCallbackInfo {
GetBundleArchiveInfoCallbackInfoGetBundleArchiveInfoCallbackInfo47     explicit GetBundleArchiveInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
48 
49     std::string hapFilePath;
50     int32_t flags = 0;
51     BundleInfo bundleInfo;
52 };
53 struct GetBundleNameByUidCallbackInfo : public BaseCallbackInfo {
GetBundleNameByUidCallbackInfoGetBundleNameByUidCallbackInfo54     explicit GetBundleNameByUidCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
55 
56     int32_t uid = 0;
57     std::string bundleName;
58 };
59 struct AbilityCallbackInfo : public BaseCallbackInfo {
AbilityCallbackInfoAbilityCallbackInfo60     explicit AbilityCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
61 
62     OHOS::AAFwk::Want want;
63     int32_t flags = 0;
64     int32_t userId = Constants::UNSPECIFIED_USERID;
65     bool isSavedInCache = false;
66     std::vector<AbilityInfo> abilityInfos;
67 };
68 
69 struct ExtensionCallbackInfo : public BaseCallbackInfo {
ExtensionCallbackInfoExtensionCallbackInfo70     explicit ExtensionCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
71 
72     OHOS::AAFwk::Want want;
73     int32_t extensionAbilityType = static_cast<int32_t>(ExtensionAbilityType::UNSPECIFIED);
74     int32_t flags = 0;
75     int32_t userId = Constants::UNSPECIFIED_USERID;
76     bool isSavedInCache = false;
77     std::vector<ExtensionAbilityInfo> extensionInfos;
78 };
79 
80 struct CleanBundleCacheCallbackInfo : public BaseCallbackInfo {
CleanBundleCacheCallbackInfoCleanBundleCacheCallbackInfo81     explicit CleanBundleCacheCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
82     std::string bundleName;
83     OHOS::sptr<CleanCacheCallback> cleanCacheCallback;
84 };
85 
86 struct AbilityIconCallbackInfo : public BaseCallbackInfo {
AbilityIconCallbackInfoAbilityIconCallbackInfo87     explicit AbilityIconCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
88     std::string bundleName;
89     std::string moduleName;
90     std::string abilityName;
91 #ifdef BUNDLE_FRAMEWORK_GET_ABILITY_ICON_ENABLED
92     std::shared_ptr<Media::PixelMap> pixelMap = nullptr;
93 #endif
94 };
95 
96 struct AbilityLabelCallbackInfo : public BaseCallbackInfo {
AbilityLabelCallbackInfoAbilityLabelCallbackInfo97     explicit AbilityLabelCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
98     std::string bundleName;
99     std::string moduleName;
100     std::string abilityName;
101     std::string abilityLabel;
102 };
103 
104 struct ApplicationEnableCallbackInfo : public BaseCallbackInfo {
ApplicationEnableCallbackInfoApplicationEnableCallbackInfo105     explicit ApplicationEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
106     std::string bundleName;
107     bool isEnable = false;
108 };
109 
110 struct LaunchWantCallbackInfo : public BaseCallbackInfo {
LaunchWantCallbackInfoLaunchWantCallbackInfo111     explicit LaunchWantCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
112     std::string bundleName;
113     int32_t userId = Constants::UNSPECIFIED_USERID;
114     OHOS::AAFwk::Want want;
115 };
116 
117 enum ProfileType : uint32_t {
118     ABILITY_PROFILE = 0,
119     EXTENSION_PROFILE,
120     UNKNOWN_PROFILE
121 };
122 
123 struct GetProfileCallbackInfo : public BaseCallbackInfo {
GetProfileCallbackInfoGetProfileCallbackInfo124     explicit GetProfileCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
125     ProfileType type = ProfileType::UNKNOWN_PROFILE;
126     std::string moduleName;
127     std::string abilityName;
128     std::string metadataName;
129     std::vector<std::string> profileVec;
130 };
131 
132 struct AbilityEnableCallbackInfo : public BaseCallbackInfo {
AbilityEnableCallbackInfoAbilityEnableCallbackInfo133     explicit AbilityEnableCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
134     AbilityInfo abilityInfo;
135     bool isEnable = false;
136 };
137 
138 struct ApplicationInfoCallbackInfo : public BaseCallbackInfo {
ApplicationInfoCallbackInfoApplicationInfoCallbackInfo139     explicit ApplicationInfoCallbackInfo(napi_env napiEnv) : BaseCallbackInfo(napiEnv) {}
140 
141     std::string bundleName;
142     int32_t flags = 0;
143     int32_t userId = Constants::UNSPECIFIED_USERID;
144     ApplicationInfo appInfo;
145 };
146 
147 struct ApplicationInfosCallbackInfo : public BaseCallbackInfo {
ApplicationInfosCallbackInfoApplicationInfosCallbackInfo148     explicit ApplicationInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
149 
150     int32_t flags = 0;
151     int32_t userId = Constants::UNSPECIFIED_USERID;
152     std::vector<ApplicationInfo> appInfos;
153 };
154 
155 struct AsyncPermissionDefineCallbackInfo : public BaseCallbackInfo {
AsyncPermissionDefineCallbackInfoAsyncPermissionDefineCallbackInfo156     explicit AsyncPermissionDefineCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
157     std::string permissionName;
158     OHOS::AppExecFwk::PermissionDef permissionDef;
159 };
160 
161 struct Query {
162     std::string bundleName_;
163     std::string interfaceType_;
164     int32_t flags_ = 0;
165     int32_t userId_ = Constants::UNSPECIFIED_USERID;
166     napi_env env_;
QueryQuery167     Query(const std::string &bundleName, const std::string &interfaceType, int32_t flags, int32_t userId, napi_env env)
168         : bundleName_(bundleName), interfaceType_(interfaceType), flags_(flags), userId_(userId), env_(env) {}
169 
170     bool operator==(const Query &query) const
171     {
172         return bundleName_ == query.bundleName_ && interfaceType_ == query.interfaceType_ &&
173             flags_ == query.flags_ && userId_ == query.userId_ && env_ == query.env_;
174     }
175 };
176 
177 struct QueryHash  {
operatorQueryHash178     size_t operator()(const Query &query) const
179     {
180         return std::hash<std::string>()(query.bundleName_) ^ std::hash<std::string>()(query.interfaceType_) ^
181             std::hash<int32_t>()(query.flags_) ^ std::hash<int32_t>()(query.userId_);
182     }
183 };
184 
185 struct BundleInfosCallbackInfo : public BaseCallbackInfo {
BundleInfosCallbackInfoBundleInfosCallbackInfo186     explicit BundleInfosCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
187 
188     int32_t flags = 0;
189     int32_t userId = Constants::UNSPECIFIED_USERID;
190     std::vector<BundleInfo> bundleInfos;
191 };
192 
193 struct BundleInfoCallbackInfo : public BaseCallbackInfo {
BundleInfoCallbackInfoBundleInfoCallbackInfo194     explicit BundleInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
195     std::string bundleName;
196     int32_t flags = 0;
197     int32_t userId = Constants::UNSPECIFIED_USERID;
198     bool isSavedInCache = false;
199     int32_t uid = 0;
200     BundleInfo bundleInfo;
201 };
202 
203 struct SharedBundleCallbackInfo : public BaseCallbackInfo {
SharedBundleCallbackInfoSharedBundleCallbackInfo204     explicit SharedBundleCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
205 
206     std::string bundleName;
207     std::string moduleName;
208     std::vector<SharedBundleInfo> sharedBundles;
209 };
210 
211 struct AppProvisionInfoCallbackInfo : public BaseCallbackInfo {
AppProvisionInfoCallbackInfoAppProvisionInfoCallbackInfo212     explicit AppProvisionInfoCallbackInfo(napi_env env) : BaseCallbackInfo(env) {}
213     std::string bundleName;
214     int32_t userId = Constants::UNSPECIFIED_USERID;
215     AppProvisionInfo appProvisionInfo;
216 };
217 
218 napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info);
219 napi_value GetBundleNameByUid(napi_env env, napi_callback_info info);
220 napi_value SetApplicationEnabled(napi_env env, napi_callback_info info);
221 napi_value SetAbilityEnabled(napi_env env, napi_callback_info info);
222 napi_value IsApplicationEnabled(napi_env env, napi_callback_info info);
223 napi_value IsAbilityEnabled(napi_env env, napi_callback_info info);
224 napi_value QueryAbilityInfos(napi_env env, napi_callback_info info);
225 napi_value QueryAbilityInfosSync(napi_env env, napi_callback_info info);
226 napi_value QueryExtensionInfos(napi_env env, napi_callback_info info);
227 napi_value GetAbilityLabel(napi_env env, napi_callback_info info);
228 napi_value GetAbilityIcon(napi_env env, napi_callback_info info);
229 napi_value CleanBundleCacheFiles(napi_env env, napi_callback_info info);
230 napi_value GetPermissionDef(napi_env env, napi_callback_info info);
231 napi_value GetLaunchWantForBundle(napi_env env, napi_callback_info info);
232 napi_value GetProfile(napi_env env, napi_callback_info info, const ProfileType &profileType);
233 napi_value GetProfileByAbility(napi_env env, napi_callback_info info);
234 napi_value GetProfileByExAbility(napi_env env, napi_callback_info info);
235 napi_value GetApplicationInfo(napi_env env, napi_callback_info info);
236 napi_value GetApplicationInfos(napi_env env, napi_callback_info info);
237 napi_value GetBundleInfos(napi_env env, napi_callback_info info);
238 napi_value GetBundleInfo(napi_env env, napi_callback_info info);
239 napi_value GetApplicationInfoSync(napi_env env, napi_callback_info info);
240 napi_value GetBundleInfoSync(napi_env env, napi_callback_info info);
241 napi_value GetBundleInfoForSelf(napi_env env, napi_callback_info info);
242 napi_value GetAllSharedBundleInfo(napi_env env, napi_callback_info info);
243 napi_value GetSharedBundleInfo(napi_env env, napi_callback_info info);
244 napi_value GetAppProvisionInfo(napi_env env, napi_callback_info info);
245 napi_value GetSpecifiedDistributionType(napi_env env, napi_callback_info info);
246 napi_value GetAdditionalInfo(napi_env env, napi_callback_info info);
247 napi_value GetBundleInfoForSelfSync(napi_env env, napi_callback_info info);
248 void CreateApplicationFlagObject(napi_env env, napi_value value);
249 void CreateAbilityFlagObject(napi_env env, napi_value value);
250 void CreateExtensionAbilityFlagObject(napi_env env, napi_value value);
251 void CreateExtensionAbilityTypeObject(napi_env env, napi_value value);
252 void CreateBundleFlagObject(napi_env env, napi_value value);
253 void CreatePermissionGrantStateObject(napi_env env, napi_value value);
254 void CreateAbilityTypeObject(napi_env env, napi_value value);
255 void CreateDisplayOrientationObject(napi_env env, napi_value value);
256 void CreateLaunchTypeObject(napi_env env, napi_value value);
257 void CreateSupportWindowModesObject(napi_env env, napi_value value);
258 void CreateModuleTypeObject(napi_env env, napi_value value);
259 void CreateBundleTypeObject(napi_env env, napi_value value);
260 void CreateCompatiblePolicyObject(napi_env env, napi_value value);
261 void RegisterClearCacheListener();
262 }  // namespace AppExecFwk
263 }  // namespace OHOS
264 #endif // BUNDLE_FRAMEWORK_INTERFACES_KITS_JS_BUNDLE_MANAGER_BUNDLE_MANAGER_H
265