• 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 "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