Add Foreach depdency API for Archiveinfo
[platform/core/appfw/pkgmgr-info.git] / include / pkgmgrinfo_type.h
index b912568..f65ad48 100644 (file)
 #define APP_BG_CATEGORY_IOTCOMM_STR                    "iot-communication"
 #define APP_BG_CATEGORY_SYSTEM                         "system"
 
+/* Integer property for support-mode */
+#define        APP_SUPPORT_MODE_ULTRA_POWER_SAVING_VAL         0x00001
+#define        APP_SUPPORT_MODE_COOL_DOWN_VAL                          0x00002
+#define        APP_SUPPORT_MODE_SCREEN_READER_VAL                      0x00004
+
+/* String property for support-mode */
+#define APP_SUPPORT_MODE_ULTRA_POWER_SAVING_STR                "ultra-power-saving"
+#define APP_SUPPORT_MODE_COOL_DOWN_STR         "cool-down"
+#define APP_SUPPORT_MODE_SCREEN_READER_STR             "screen-reader"
+
 /**
  * @brief A type to retrieve uid information from the manifest handle
  */
@@ -56,7 +66,7 @@ typedef struct {
 /**
  * @brief A handle to insert certificate information
  */
-typedef voidpkgmgrinfo_instcertinfo_h;
+typedef void *pkgmgrinfo_instcertinfo_h;
 
 /**
  * @brief Certificate Types to be used for setting information
@@ -71,7 +81,7 @@ typedef enum {
        PMINFO_SET_DISTRIBUTOR2_ROOT_CERT = 6,          /**< End Entity Root Certificate*/
        PMINFO_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7,          /**< End Entity Intermediate Certificate*/
        PMINFO_SET_DISTRIBUTOR2_SIGNER_CERT = 8,                /**< End Entity Signer Certificate*/
-}pkgmgrinfo_instcert_type;
+} pkgmgrinfo_instcert_type;
 
 typedef enum {
        PMINFO_CERT_COMPARE_MATCH,
@@ -82,6 +92,29 @@ typedef enum {
        PMINFO_CERT_COMPARE_ERROR,
 } pkgmgrinfo_cert_compare_result_type_e;
 
+typedef enum {
+       PMINFO_APPINFO_GET_BASICINFO = 0x0001,
+       PMINFO_APPINFO_GET_LABEL = 0x0002,
+       PMINFO_APPINFO_GET_ICON = 0x0004,
+       PMINFO_APPINFO_GET_CATEGORY = 0x0008,
+       PMINFO_APPINFO_GET_APP_CONTROL = 0x0010,
+       PMINFO_APPINFO_GET_METADATA = 0x0020,
+       PMINFO_APPINFO_GET_SPLASH_SCREEN = 0x0040,
+       PMINFO_APPINFO_GET_ALL = 0x007F
+} pkgmgrinfo_appinfo_get_option;
+
+typedef enum {
+       PMINFO_PKGINFO_GET_BASICINFO = 0x0001,
+       PMINFO_PKGINFO_GET_LABEL = 0x0002,
+       PMINFO_PKGINFO_GET_ICON = 0x0004,
+       PMINFO_PKGINFO_GET_AUTHOR = 0x0008,
+       PMINFO_PKGINFO_GET_DESCRIPTION = 0x0010,
+       PMINFO_PKGINFO_GET_PRIVILEGE = 0x0020,
+       PMINFO_PKGINFO_GET_APPDEFINED_PRIVILEGE = 0x0040,
+       PMINFO_PKGINFO_GET_DEPENDENCY = 0x0080,
+       PMINFO_PKGINFO_GET_ALL = 0x00FF
+} pkgmgrinfo_pkginfo_get_option;
+
 /**
  * @brief API return values
  */
@@ -107,58 +140,89 @@ enum {
  */
 #define        PMINFO_PKGINFO_INSTALL_LOCATION_EXTERNAL        "LOCATION_EXTERNAL"
 
+/**
+ * @brief Value to be used when get/set update information
+ */
+#define PMINFO_UPDATEINFO_TYPE_FORCE   "force"
+
+/**
+ * @brief Value to be used when get/set update information
+ */
+#define PMINFO_UPDATEINFO_TYPE_OPTIONAL        "optional"
+
+/**
+ * @brief Value to be used when get/set update information
+ */
+#define PMINFO_UPDATEINFO_TYPE_NONE    "none"
+
+typedef enum {
+       PMINFO_UPDATEINFO_NONE = 0,             /**<No update info exists*/
+       PMINFO_UPDATEINFO_FORCE,                /**<Don't launch application if it's not updated*/
+       PMINFO_UPDATEINFO_OPTIONAL              /**<Update exists but not force user to update it*/
+} pkgmgrinfo_updateinfo_update_type;
+
 typedef enum {
-       PMINFO_HWACCELERATION_NOT_USE_GL = 0,           /**< Don't use hardware acceleration*/
-       PMINFO_HWACCELERATION_USE_GL = 1,               /**< Use hardware acceleration*/
-       PMINFO_HWACCELERATION_USE_SYSTEM_SETTING = 2            /**< Follow system setting for hardware acceleration */
-}pkgmgrinfo_app_hwacceleration;
+       PMINFO_HWACCELERATION_OFF = 0,          /**< Don't use hardware acceleration*/
+       PMINFO_HWACCELERATION_ON = 1,           /**< Use hardware acceleration*/
+       PMINFO_HWACCELERATION_DEFAULT = 2               /**< Follow system setting for hardware acceleration */
+} pkgmgrinfo_app_hwacceleration;
 
 typedef enum {
        PMINFO_SCREENREADER_OFF = 0,            /**< Don't use screen reader*/
        PMINFO_SCREENREADER_ON = 1,             /**< Use screen reader*/
        PMINFO_SCREENREADER_USE_SYSTEM_SETTING = 2              /**< Follow system setting for screen reader */
-}pkgmgrinfo_app_screenreader;
+} pkgmgrinfo_app_screenreader;
 
 typedef enum {
        PMINFO_RECENTIMAGE_USE_ICON = 0,                /**<Use icon for recent image*/
        PMINFO_RECENTIMAGE_USE_CAPTURE = 1,             /**< Use capture for recent image*/
        PMINFO_RECENTIMAGE_USE_NOTHING = 2              /**< Don't use recent image */
-}pkgmgrinfo_app_recentimage;
+} pkgmgrinfo_app_recentimage;
 
 /**
  * @brief A handle to get package information
  */
-typedef voidpkgmgrinfo_pkginfo_h;
+typedef void *pkgmgrinfo_pkginfo_h;
 
 /**
  * @brief A handle to get application information
  */
-typedef voidpkgmgrinfo_appinfo_h;
+typedef void *pkgmgrinfo_appinfo_h;
 
 /**
  * @brief A handle to get certificate information
  */
-typedef voidpkgmgrinfo_certinfo_h;
+typedef void *pkgmgrinfo_certinfo_h;
 
 /**
  * @brief A handle to filter package information
  */
-typedef void* pkgmgrinfo_pkginfo_filter_h;
+typedef void *pkgmgrinfo_pkginfo_filter_h;
+
+/**
+ * @brief A handle to get/set package update information
+ */
+typedef void *pkgmgrinfo_updateinfo_h;
 
 /**
  * @brief A handle to filter application information
  */
-typedef voidpkgmgrinfo_appinfo_filter_h;
+typedef void *pkgmgrinfo_appinfo_filter_h;
 
 /**
  * @brief A handle to filter application metadata  information
  */
-typedef voidpkgmgrinfo_appinfo_metadata_filter_h;
+typedef void *pkgmgrinfo_appinfo_metadata_filter_h;
 
 /**
  * @brief A handle to get appcontrol information
  */
-typedef void* pkgmgrinfo_appcontrol_h;
+typedef void *pkgmgrinfo_appcontrol_h;
+
+/**
+ * @brief A handle to get package archive information
+ */
+typedef void *pkgmgrinfo_archiveinfo_h;
 
 /**
  * @brief type definition.
@@ -166,7 +230,22 @@ typedef void* pkgmgrinfo_appcontrol_h;
 typedef void pkgmgrinfo_client;
 
 /**
- * @fn int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle, void *user_data)
+ * @fn int (*pkgmgrinfo_foreach_updateinfo_cb) (const pkgmgrinfo_updateinfo_h handle, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_updateinfo_foreach_updateinfo()
+ *
+ * @param[in] handle the package update info handle
+ * @param[in] user_data user data passed to pkgmgrinfo_foreach_pkg_update info()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see  pkgmgrinfo_updateinfo_foreach_updateinfo()
+ */
+typedef int (*pkgmgrinfo_foreach_updateinfo_cb) (const pkgmgrinfo_updateinfo_h handle,
+                                                       void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_pkg_list_cb) (const pkgmgrinfo_pkginfo_h handle, void *user_data)
  *
  * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_get_list(), pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
  *
@@ -178,11 +257,11 @@ typedef void pkgmgrinfo_client;
  * @see  pkgmgrinfo_pkginfo_get_list()
  * @see  pkgmgrinfo_pkginfo_filter_foreach_pkginfo()
  */
-typedef int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle,
+typedef int (*pkgmgrinfo_pkg_list_cb) (const pkgmgrinfo_pkginfo_h handle,
                                                        void *user_data);
 
 /**
- * @fn int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle, void *user_data)
+ * @fn int (*pkgmgrinfo_app_list_cb) (const pkgmgrinfo_appinfo_h handle, void *user_data)
  *
  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_get_list(), pkgmgrinfo_appinfo_filter_foreach_appinfo(), pkgmgrinfo_appinfo_metadata_filter_foreach()
  *
@@ -195,11 +274,11 @@ typedef int (*pkgmgrinfo_pkg_list_cb ) (const pkgmgrinfo_pkginfo_h handle,
  * @see  pkgmgrinfo_appinfo_filter_foreach_appinfo()
  * @see  pkgmgrinfo_appinfo_metadata_filter_foreach()
  */
-typedef int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle,
+typedef int (*pkgmgrinfo_app_list_cb) (const pkgmgrinfo_appinfo_h handle,
                                                        void *user_data);
 
 /**
- * @fn int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name, void *user_data)
+ * @fn int (*pkgmgrinfo_app_category_list_cb) (const char *category_name, void *user_data)
  *
  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
  *
@@ -210,41 +289,81 @@ typedef int (*pkgmgrinfo_app_list_cb ) (const pkgmgrinfo_appinfo_h handle,
  *
  * @see  pkgmgrinfo_appinfo_foreach_category()
  */
-typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name,
+typedef int (*pkgmgrinfo_app_category_list_cb) (const char *category_name,
                                                        void *user_data);
 
 /**
- * @fn int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type, void *user_data)
+ * @fn int (*pkgmgrinfo_pkg_privilege_list_cb) (const char *privilege_name, void *user_data)
  *
- * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
+ * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
  *
- * @param[in] permission_name the name of the permission
- * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
+ * @param[in] privilege_name the name of the privilege
+ * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
  *
  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
  *
- * @see  pkgmgrinfo_appinfo_foreach_category()
+ * @see  pkgmgrinfo_pkginfo_foreach_privilege()
  */
-typedef int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type,
+typedef int (*pkgmgrinfo_pkg_privilege_list_cb) (const char *privilege_name,
                                                        void *user_data);
 
 /**
- * @fn int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name, void *user_data)
+ * @fn int (*pkgmgrinfo_pkg_appdefined_privilege_list_cb) (const char *privilege_name, const char *license_path, void *user_data)
  *
- * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
+ * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_appdefined_privilege()
  *
  * @param[in] privilege_name the name of the privilege
- * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
+ * @param[in] license_path the path of the license
+ * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_appdefined_privilege()
  *
  * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
  *
- * @see  pkgmgrinfo_pkginfo_foreach_privilege()
+ * @see  pkgmgrinfo_pkginfo_foreach_appdefined_privilege()
  */
-typedef int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name,
+typedef int (*pkgmgrinfo_pkg_appdefined_privilege_list_cb) (const char *privilege_name,
+                                                       const char *license_path,
                                                        void *user_data);
+/**
+ * @fn int (*pkgmgrinfo_pkg_dependency_list_cb) (const char *from, const char *to, const char *type, const char *required_version, void *user_data)
+ *
+ * @brief Specifies the dependency info of given package passed to pkgmgrinfo_pkginfo_foreach_dependency(), pkgmgrinfo_pkginfo_foreach_required_by(), pkgmgrinfo_archiveinfo_foreach_dependency()
+ *
+ * @param[in] from the pkgid which depends other package
+ * @param[in] to the pkgid which has dependency with given package
+ * @param[in] type type of dependency
+ * @param[in] required_version required version of dependency
+ * @param[in] user_data user data passed
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see  pkgmgrinfo_pkginfo_foreach_dependency()
+ * @see  pkgmgrinfo_pkginfo_foreach_required_by()
+ */
+typedef int (*pkgmgrinfo_pkg_dependency_list_cb) (const char *from, const char *to,
+               const char *type, const char *required_version,
+               void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_plugin_list_cb) (const char *pkgid, const char *appid, const char *plugin_type, const char *plugin_name, void *user_data);
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_plugininfo_foreach_plugininfo()
+ *
+ * @param[in] pkgid the name of the package
+ * @param[in] appid the name of the application
+ * @param[in] plugin_type the type of the executed plugin
+ * @param[in] plugin_name the name of the executed plugin
+ * @param[in] user_data user data passed to pkgmgrinfo_plugininfo_foreach_plugininfo()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see  pkgmgrinfo_plugininfo_foreach_plugininfo()
+ */
+typedef int (*pkgmgrinfo_plugin_list_cb) (const char *pkgid, const char *appid,
+               const char *plugin_type, const char *plugin_name,
+               void *user_data);
 
 /**
- * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data)
+ * @fn int (*pkgmgrinfo_app_metadata_list_cb) (const char *metadata_key, const char *metadata_value, void *user_data)
  *
  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata()
  *
@@ -256,11 +375,11 @@ typedef int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name,
  *
  * @see  pkgmgrinfo_appinfo_foreach_metadata()
  */
-typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key,
+typedef int (*pkgmgrinfo_app_metadata_list_cb) (const char *metadata_key,
                                                        const char *metadata_value, void *user_data);
 
 /**
- * @fn int (*pkgmgrinfo_app_control_list_cb ) (pkgmgrinfo_appcontrol_h handle, void *user_data)
+ * @fn int (*pkgmgrinfo_app_control_list_cb) (pkgmgrinfo_appcontrol_h handle, void *user_data)
  *
  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_appcontrol()
  *
@@ -271,11 +390,29 @@ typedef int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key,
  *
  * @see  pkgmgrinfo_appinfo_foreach_appcontrol()
  */
-typedef int (*pkgmgrinfo_app_control_list_cb ) (const char *operation, const char *uri, const char *mime,
+typedef int (*pkgmgrinfo_app_control_list_cb) (const char *operation, const char *uri, const char *mime,
                                                        void *user_data);
+/**
+ * @fn int (*pkgmgrinfo_app_control_list_cb_v2) (const char *operation, const char *uri, const char *mime, const char *id, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_appcontrol_info()
+ *
+ * @param[in] operation The operation of the app-control
+ * @param[in] uri       The URI of the app-control
+ * @param[in] mime      The MIME-Type of the app-control
+ * @param[in] id        The ID of the app-control
+ * @param[in] user_data The user data passed from pkgmgrinfo_appinfo_foreach_appcontrol_v2()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see  pkgmgrinfo_appinfo_foreach_appcontrol_v2()
+ */
+typedef int (*pkgmgrinfo_app_control_list_cb_v2) (const char *operation,
+               const char *uri, const char *mime, const char *id,
+               void *user_data);
 
 /**
- * @fn int (*pkgmgrinfo_app_background_category_list_cb ) (const char *category_name, void *user_data)
+ * @fn int (*pkgmgrinfo_app_background_category_list_cb) (const char *category_name, void *user_data)
  *
  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_background_category()
  *
@@ -286,7 +423,7 @@ typedef int (*pkgmgrinfo_app_control_list_cb ) (const char *operation, const cha
  *
  * @see  pkgmgrinfo_appinfo_foreach_background_category()
  */
-typedef int (*pkgmgrinfo_app_background_category_list_cb ) (const char *category_name, void *user_data);
+typedef int (*pkgmgrinfo_app_background_category_list_cb) (const char *category_name, void *user_data);
 
 /**
  * @fn int (*pkgmgrinfo_app_splash_screen_list_cb)(const char *src,
@@ -312,9 +449,6 @@ typedef int (*pkgmgrinfo_app_splash_screen_list_cb)(const char *src,
                const char *indicatordisplay, const char *operation,
                const char *color_depth, void *user_data);
 
-typedef int (*pkgmgrinfo_handler)(uid_t target_uid, int req_id, const char *pkg_type,
-                               const char *pkgid, const char *key,
-                               const char *val, const void *pmsg, void *data);
 
 
 /**
@@ -330,11 +464,12 @@ typedef enum {
  * @brief Application Component Types
  */
 typedef enum {
-       PMINFO_ALL_APP = 0,     /**< All Application*/
-       PMINFO_UI_APP,          /**< UI Application*/
-       PMINFO_SVC_APP,         /**< Service Application*/
-       PMINFO_WIDGET_APP,      /**< Widget Application*/
-       PMINFO_WATCH_APP,  /**< Watch Application*/
+       PMINFO_ALL_APP = 0,             /**< All Application*/
+       PMINFO_UI_APP,                  /**< UI Application*/
+       PMINFO_SVC_APP,                 /**< Service Application*/
+       PMINFO_WIDGET_APP,              /**< Widget Application*/
+       PMINFO_WATCH_APP,               /**< Watch Application*/
+       PMINFO_COMPONENT_BASED_APP,     /**< Component-based Application (Since 5.5)*/
 } pkgmgrinfo_app_component;
 
 /**
@@ -343,6 +478,7 @@ typedef enum {
 typedef enum {
        PMINFO_INTERNAL_STORAGE = 0,            /**< Internal Storage*/
        PMINFO_EXTERNAL_STORAGE = 1,            /**< External Storage*/
+       PMINFO_EXTENDED_STORAGE = 2,            /**< Extended Storage*/
 } pkgmgrinfo_installed_storage;
 
 /**
@@ -361,26 +497,30 @@ typedef enum {
 } pkgmgrinfo_cert_type;
 
 /**
+ * @brief version comparison Types
+ */
+typedef enum {
+       PMINFO_VERSION_OLD = -1,
+       PMINFO_VERSION_SAME,
+       PMINFO_VERSION_NEW,
+} pkgmgrinfo_version_compare_type;
+
+/**
  * @brief Install Location Types to be used when setting data in DB
  */
 typedef enum {
        INSTALL_INTERNAL = 0,           /**< Internal Installation*/
        INSTALL_EXTERNAL,               /**< External Installation*/
+       INSTALL_EXTENDED,               /**< Extended Installation*/
 } INSTALL_LOCATION;
 
- /**
 * @brief permission Types
 */
+/**
+ * @brief permission Types
+ */
 typedef enum {
-       PMINFO_PERMISSION_NORMAL = 0,            /**< permission normal*/
-       PMINFO_PERMISSION_SIGNATURE,     /**< permission type is signature*/
-       PMINFO_PERMISSION_PRIVILEGE,     /**< permission type is privilege*/
+       PMINFO_PERMISSION_NORMAL = 0,           /**< permission normal*/
+       PMINFO_PERMISSION_SIGNATURE,            /**< permission type is signature*/
+       PMINFO_PERMISSION_PRIVILEGE,            /**< permission type is privilege*/
 } pkgmgrinfo_permission_type;
 
-typedef enum {
-       PMINFO_REQUEST = 0,
-       PMINFO_LISTENING,
-       PMINFO_BROADCAST,
-} pkgmgrinfo_client_type;
-
 #endif