Implement pkgmgrinfo_archiveinfo features
[platform/core/appfw/pkgmgr-info.git] / include / pkgmgrinfo_type.h
1 /*
2  * pkgmgr-info
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7  * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  */
22
23 #ifndef __PKGMGRINFO_TYPE_H__
24 #define __PKGMGRINFO_TYPE_H__
25
26 #include <sys/types.h>
27
28 /* app background category value */
29 #define APP_BG_CATEGORY_USER_DISABLE_FALSE_VAL          0x00000
30 #define APP_BG_CATEGORY_USER_DISABLE_TRUE_VAL           0x00001
31 #define APP_BG_CATEGORY_MEDIA_VAL                       0x00002
32 #define APP_BG_CATEGORY_DOWNLOAD_VAL                    0x00004
33 #define APP_BG_CATEGORY_BGNETWORK_VAL                   0x00008
34 #define APP_BG_CATEGORY_LOCATION_VAL                    0x00010
35 #define APP_BG_CATEGORY_SENSOR_VAL                      0x00020
36 #define APP_BG_CATEGORY_IOTCOMM_VAL                     0x00040
37 #define APP_BG_CATEGORY_SYSTEM_VAL                      0x00080
38
39 #define APP_BG_CATEGORY_USER_DISABLE_FALSE_STR          "enable"
40 #define APP_BG_CATEGORY_USER_DISABLE_TRUE_STR           "disable"
41 #define APP_BG_CATEGORY_MEDIA_STR                       "media"
42 #define APP_BG_CATEGORY_DOWNLOAD_STR                    "download"
43 #define APP_BG_CATEGORY_BGNETWORK_STR                   "background-network"
44 #define APP_BG_CATEGORY_LOCATION_STR                    "location"
45 #define APP_BG_CATEGORY_SENSOR_STR                      "sensor"
46 #define APP_BG_CATEGORY_IOTCOMM_STR                     "iot-communication"
47 #define APP_BG_CATEGORY_SYSTEM                          "system"
48
49 /* Integer property for support-mode */
50 #define APP_SUPPORT_MODE_ULTRA_POWER_SAVING_VAL         0x00001
51 #define APP_SUPPORT_MODE_COOL_DOWN_VAL                          0x00002
52 #define APP_SUPPORT_MODE_SCREEN_READER_VAL                      0x00004
53
54 /* String property for support-mode */
55 #define APP_SUPPORT_MODE_ULTRA_POWER_SAVING_STR         "ultra-power-saving"
56 #define APP_SUPPORT_MODE_COOL_DOWN_STR          "cool-down"
57 #define APP_SUPPORT_MODE_SCREEN_READER_STR              "screen-reader"
58
59 /**
60  * @brief A type to retrieve uid information from the manifest handle
61  */
62 typedef struct {
63         uid_t uid;
64 } pkgmgrinfo_uidinfo_t;
65
66 /**
67  * @brief A handle to insert certificate information
68  */
69 typedef void *pkgmgrinfo_instcertinfo_h;
70
71 /**
72  * @brief Certificate Types to be used for setting information
73  */
74 typedef enum {
75         PMINFO_SET_AUTHOR_ROOT_CERT = 0,                /**< Author Root Certificate*/
76         PMINFO_SET_AUTHOR_INTERMEDIATE_CERT = 1,                /**< Author Intermediate Certificate*/
77         PMINFO_SET_AUTHOR_SIGNER_CERT = 2,              /**< Author Signer Certificate*/
78         PMINFO_SET_DISTRIBUTOR_ROOT_CERT = 3,           /**< Distributor Root Certificate*/
79         PMINFO_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4,           /**< Distributor Intermediate Certificate*/
80         PMINFO_SET_DISTRIBUTOR_SIGNER_CERT = 5,         /**< Distributor Signer Certificate*/
81         PMINFO_SET_DISTRIBUTOR2_ROOT_CERT = 6,          /**< End Entity Root Certificate*/
82         PMINFO_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7,          /**< End Entity Intermediate Certificate*/
83         PMINFO_SET_DISTRIBUTOR2_SIGNER_CERT = 8,                /**< End Entity Signer Certificate*/
84 } pkgmgrinfo_instcert_type;
85
86 typedef enum {
87         PMINFO_CERT_COMPARE_MATCH,
88         PMINFO_CERT_COMPARE_MISMATCH,
89         PMINFO_CERT_COMPARE_LHS_NO_CERT,
90         PMINFO_CERT_COMPARE_RHS_NO_CERT,
91         PMINFO_CERT_COMPARE_BOTH_NO_CERT,
92         PMINFO_CERT_COMPARE_ERROR,
93 } pkgmgrinfo_cert_compare_result_type_e;
94
95 typedef enum {
96         PMINFO_APPINFO_GET_LABEL = 0x0001,
97         PMINFO_APPINFO_GET_ICON = 0x0002,
98         PMINFO_APPINFO_GET_CATEGORY = 0x0004,
99         PMINFO_APPINFO_GET_APP_CONTROL = 0x0008,
100         PMINFO_APPINFO_GET_DATA_CONTROL = 0x0010,
101         PMINFO_APPINFO_GET_METADATA = 0x0020,
102         PMINFO_APPINFO_GET_SPLASH_SCREEN = 0x0040,
103         PMINFO_APPINFO_GET_ALL = 0x007F
104 } pkgmgrinfo_appinfo_get_option;
105
106 typedef enum {
107         PMINFO_PKGINFO_GET_LABEL = 0x0001,
108         PMINFO_PKGINFO_GET_ICON = 0x0002,
109         PMINFO_PKGINFO_GET_AUTHOR = 0x0004,
110         PMINFO_PKGINFO_GET_DESCRIPTION = 0x0008,
111         PMINFO_PKGINFO_GET_PRIVILEGE = 0x0010,
112         PMINFO_PKGINFO_GET_ALL = 0x001F
113 } pkgmgrinfo_pkginfo_get_option;
114
115 /**
116  * @brief API return values
117  */
118 enum {
119         PMINFO_R_ENOENT = -3,           /**< No result */
120         PMINFO_R_EINVAL = -2,           /**< Invalid argument */
121         PMINFO_R_ERROR = -1,            /**< General error */
122         PMINFO_R_OK = 0                 /**< General success */
123 };
124
125 /**
126  * @brief Value to be used when filtering based on install location
127  */
128 #define PMINFO_PKGINFO_INSTALL_LOCATION_AUTO            "LOCATION_AUTO"
129
130 /**
131  * @brief Value to be used when filtering based on install location
132  */
133 #define PMINFO_PKGINFO_INSTALL_LOCATION_INTERNAL        "LOCATION_INTERNAL"
134
135 /**
136  * @brief Value to be used when filtering based on install location
137  */
138 #define PMINFO_PKGINFO_INSTALL_LOCATION_EXTERNAL        "LOCATION_EXTERNAL"
139
140 /**
141  * @brief Value to be used when get/set update information
142  */
143 #define PMINFO_UPDATEINFO_TYPE_FORCE    "force"
144
145 /**
146  * @brief Value to be used when get/set update information
147  */
148 #define PMINFO_UPDATEINFO_TYPE_OPTIONAL "optional"
149
150 /**
151  * @brief Value to be used when get/set update information
152  */
153 #define PMINFO_UPDATEINFO_TYPE_NONE     "none"
154
155 typedef enum {
156         PMINFO_UPDATEINFO_NONE = 0,             /**<No update info exists*/
157         PMINFO_UPDATEINFO_FORCE,                /**<Don't launch application if it's not updated*/
158         PMINFO_UPDATEINFO_OPTIONAL              /**<Update exists but not force user to update it*/
159 } pkgmgrinfo_updateinfo_update_type;
160
161 typedef enum {
162         PMINFO_HWACCELERATION_OFF = 0,          /**< Don't use hardware acceleration*/
163         PMINFO_HWACCELERATION_ON = 1,           /**< Use hardware acceleration*/
164         PMINFO_HWACCELERATION_DEFAULT = 2               /**< Follow system setting for hardware acceleration */
165 } pkgmgrinfo_app_hwacceleration;
166
167 typedef enum {
168         PMINFO_SCREENREADER_OFF = 0,            /**< Don't use screen reader*/
169         PMINFO_SCREENREADER_ON = 1,             /**< Use screen reader*/
170         PMINFO_SCREENREADER_USE_SYSTEM_SETTING = 2              /**< Follow system setting for screen reader */
171 } pkgmgrinfo_app_screenreader;
172
173 typedef enum {
174         PMINFO_RECENTIMAGE_USE_ICON = 0,                /**<Use icon for recent image*/
175         PMINFO_RECENTIMAGE_USE_CAPTURE = 1,             /**< Use capture for recent image*/
176         PMINFO_RECENTIMAGE_USE_NOTHING = 2              /**< Don't use recent image */
177 } pkgmgrinfo_app_recentimage;
178
179 /**
180  * @brief A handle to get package information
181  */
182 typedef void *pkgmgrinfo_pkginfo_h;
183
184 /**
185  * @brief A handle to get application information
186  */
187 typedef void *pkgmgrinfo_appinfo_h;
188
189 /**
190  * @brief A handle to get certificate information
191  */
192 typedef void *pkgmgrinfo_certinfo_h;
193
194 /**
195  * @brief A handle to filter package information
196  */
197 typedef void *pkgmgrinfo_pkginfo_filter_h;
198
199 /**
200  * @brief A handle to get/set package update information
201  */
202 typedef void *pkgmgrinfo_updateinfo_h;
203
204 /**
205  * @brief A handle to filter application information
206  */
207 typedef void *pkgmgrinfo_appinfo_filter_h;
208
209 /**
210  * @brief A handle to filter application metadata  information
211  */
212 typedef void *pkgmgrinfo_appinfo_metadata_filter_h;
213
214 /**
215  * @brief A handle to get appcontrol information
216  */
217 typedef void *pkgmgrinfo_appcontrol_h;
218
219 /**
220  * @brief A handle to get package archive information
221  */
222 typedef void *pkgmgrinfo_archiveinfo_h;
223
224 /**
225  * @brief type definition.
226  */
227 typedef void pkgmgrinfo_client;
228
229 /**
230  * @fn int (*pkgmgrinfo_foreach_updateinfo_cb) (const pkgmgrinfo_updateinfo_h handle, void *user_data)
231  *
232  * @brief Specifies the type of function passed to pkgmgrinfo_updateinfo_foreach_updateinfo()
233  *
234  * @param[in] handle the package update info handle
235  * @param[in] user_data user data passed to pkgmgrinfo_foreach_pkg_update info()
236  *
237  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
238  *
239  * @see  pkgmgrinfo_updateinfo_foreach_updateinfo()
240  */
241 typedef int (*pkgmgrinfo_foreach_updateinfo_cb) (const pkgmgrinfo_updateinfo_h handle,
242                                                         void *user_data);
243
244 /**
245  * @fn int (*pkgmgrinfo_pkg_list_cb) (const pkgmgrinfo_pkginfo_h handle, void *user_data)
246  *
247  * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
248  *
249  * @param[in] handle the pkginfo handle
250  * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
251  *
252  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
253  *
254  * @see  pkgmgrinfo_pkginfo_get_list()
255  * @see  pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
256  */
257 typedef int (*pkgmgrinfo_pkg_list_cb) (const pkgmgrinfo_pkginfo_h handle,
258                                                         void *user_data);
259
260 /**
261  * @fn int (*pkgmgrinfo_app_list_cb) (const pkgmgrinfo_appinfo_h handle, void *user_data)
262  *
263  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
264  *
265  * @param[in] handle the appinfo handle
266  * @param[in] user_data user data passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
267  *
268  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
269  *
270  * @see  pkgmgrinfo_appinfo_get_list()
271  * @see  pkgmgrinfo_appinfo_filter_foreach_appinfo()
272  * @see  pkgmgrinfo_appinfo_metadata_filter_foreach()
273  */
274 typedef int (*pkgmgrinfo_app_list_cb) (const pkgmgrinfo_appinfo_h handle,
275                                                         void *user_data);
276
277 /**
278  * @fn int (*pkgmgrinfo_app_category_list_cb) (const char *category_name, void *user_data)
279  *
280  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
281  *
282  * @param[in] category_name the name of the category
283  * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
284  *
285  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
286  *
287  * @see  pkgmgrinfo_appinfo_foreach_category()
288  */
289 typedef int (*pkgmgrinfo_app_category_list_cb) (const char *category_name,
290                                                         void *user_data);
291
292 /**
293  * @fn int (*pkgmgrinfo_app_permission_list_cb) (const char *permission_type, void *user_data)
294  *
295  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
296  *
297  * @param[in] permission_name the name of the permission
298  * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
299  *
300  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
301  *
302  * @see  pkgmgrinfo_appinfo_foreach_category()
303  */
304 typedef int (*pkgmgrinfo_app_permission_list_cb) (const char *permission_type,
305                                                         void *user_data);
306
307 /**
308  * @fn int (*pkgmgrinfo_pkg_privilege_list_cb) (const char *privilege_name, void *user_data)
309  *
310  * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
311  *
312  * @param[in] privilege_name the name of the privilege
313  * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
314  *
315  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
316  *
317  * @see  pkgmgrinfo_pkginfo_foreach_privilege()
318  */
319 typedef int (*pkgmgrinfo_pkg_privilege_list_cb) (const char *privilege_name,
320                                                         void *user_data);
321
322 /**
323  * @fn int (*pkgmgrinfo_app_metadata_list_cb) (const char *metadata_key, const char *metadata_value, void *user_data)
324  *
325  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata()
326  *
327  * @param[in] metadata_name the name of the metadata
328  * @param[in] metadata_value the value of the metadata
329  * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_metadata()
330  *
331  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
332  *
333  * @see  pkgmgrinfo_appinfo_foreach_metadata()
334  */
335 typedef int (*pkgmgrinfo_app_metadata_list_cb) (const char *metadata_key,
336                                                         const char *metadata_value, void *user_data);
337
338 /**
339  * @fn int (*pkgmgrinfo_app_control_list_cb) (pkgmgrinfo_appcontrol_h handle, void *user_data)
340  *
341  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_appcontrol()
342  *
343  * @param[in] handle the appcontrol handle to be used to get operation, uri and mime info
344  * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_appcontrol()
345  *
346  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
347  *
348  * @see  pkgmgrinfo_appinfo_foreach_appcontrol()
349  */
350 typedef int (*pkgmgrinfo_app_control_list_cb) (const char *operation, const char *uri, const char *mime,
351                                                         void *user_data);
352
353 /**
354  * @fn int (*pkgmgrinfo_app_background_category_list_cb) (const char *category_name, void *user_data)
355  *
356  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_background_category()
357  *
358  * @param[in] category_name retrieved background category name
359  * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_background_category
360  *
361  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
362  *
363  * @see  pkgmgrinfo_appinfo_foreach_background_category()
364  */
365 typedef int (*pkgmgrinfo_app_background_category_list_cb) (const char *category_name, void *user_data);
366
367 /**
368  * @fn int (*pkgmgrinfo_app_splash_screen_list_cb)(const char *src,
369  *              const char *type, const char *orientation,
370  *              const char *indicatordisplay, const char *color_depth,
371  *              void *user_data);
372  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_splash_screen()
373  *
374  * @param[in] src the source of the splashscreen
375  * @param[in] type the type of the splashscreen
376  * @param[in] orientation the orientation of the splashscreen
377  * @param[in] indicatordisplay the indicator-display of the splashscreen
378  * @param[in] operation the app-control operation of the splashscreen
379  * @param[in] color_depth the color-depth of the splashscreen
380  * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_splash_screen()
381  *
382  * @return 0 if success, negative value(<0) if fail, Callback is not called if return value is negative.\n
383  *
384  * @see pkgmgrinfo_appinfo_foreach_splash_screen()
385  */
386 typedef int (*pkgmgrinfo_app_splash_screen_list_cb)(const char *src,
387                 const char *type, const char *orientation,
388                 const char *indicatordisplay, const char *operation,
389                 const char *color_depth, void *user_data);
390
391 /**
392  * @brief Install Location Types
393  */
394 typedef enum {
395         PMINFO_INSTALL_LOCATION_AUTO = 0,               /**< Auto*/
396         PMINFO_INSTALL_LOCATION_INTERNAL_ONLY,          /**< Internal Installation*/
397         PMINFO_INSTALL_LOCATION_PREFER_EXTERNAL,                /**< External Installation*/
398 } pkgmgrinfo_install_location;
399
400 /**
401  * @brief Application Component Types
402  */
403 typedef enum {
404         PMINFO_ALL_APP = 0,     /**< All Application*/
405         PMINFO_UI_APP,          /**< UI Application*/
406         PMINFO_SVC_APP,         /**< Service Application*/
407         PMINFO_WIDGET_APP,      /**< Widget Application*/
408         PMINFO_WATCH_APP,  /**< Watch Application*/
409 } pkgmgrinfo_app_component;
410
411 /**
412  * @brief Application Storage Types
413  */
414 typedef enum {
415         PMINFO_INTERNAL_STORAGE = 0,            /**< Internal Storage*/
416         PMINFO_EXTERNAL_STORAGE = 1,            /**< External Storage*/
417 } pkgmgrinfo_installed_storage;
418
419 /**
420  * @brief Certificate Types to be used for getting information
421  */
422 typedef enum {
423         PMINFO_AUTHOR_ROOT_CERT = 0,            /**< Author Root Certificate*/
424         PMINFO_AUTHOR_INTERMEDIATE_CERT = 1,            /**< Author Intermediate Certificate*/
425         PMINFO_AUTHOR_SIGNER_CERT = 2,          /**< Author Signer Certificate*/
426         PMINFO_DISTRIBUTOR_ROOT_CERT = 3,               /**< Distributor Root Certificate*/
427         PMINFO_DISTRIBUTOR_INTERMEDIATE_CERT = 4,               /**< Distributor Intermediate Certificate*/
428         PMINFO_DISTRIBUTOR_SIGNER_CERT = 5,             /**< Distributor Signer Certificate*/
429         PMINFO_DISTRIBUTOR2_ROOT_CERT = 6,              /**< End Entity Root Certificate*/
430         PMINFO_DISTRIBUTOR2_INTERMEDIATE_CERT = 7,              /**< End Entity Intermediate Certificate*/
431         PMINFO_DISTRIBUTOR2_SIGNER_CERT = 8,            /**< End Entity Signer Certificate*/
432 } pkgmgrinfo_cert_type;
433
434 /**
435  * @brief version comparison Types
436  */
437 typedef enum {
438         PMINFO_VERSION_OLD = -1,
439         PMINFO_VERSION_SAME,
440         PMINFO_VERSION_NEW,
441 } pkgmgrinfo_version_compare_type;
442
443 /**
444  * @brief Install Location Types to be used when setting data in DB
445  */
446 typedef enum {
447         INSTALL_INTERNAL = 0,           /**< Internal Installation*/
448         INSTALL_EXTERNAL,               /**< External Installation*/
449 } INSTALL_LOCATION;
450
451 /**
452  * @brief permission Types
453  */
454 typedef enum {
455         PMINFO_PERMISSION_NORMAL = 0,           /**< permission normal*/
456         PMINFO_PERMISSION_SIGNATURE,            /**< permission type is signature*/
457         PMINFO_PERMISSION_PRIVILEGE,            /**< permission type is privilege*/
458 } pkgmgrinfo_permission_type;
459
460 #endif