Print error log when check_privilege() failed
[platform/core/api/package-manager.git] / include / package_info.h
index 3faf10d..9305e02 100644 (file)
@@ -47,6 +47,13 @@ typedef struct package_info_s *package_info_h;
 typedef struct package_updateinfo_s *package_updateinfo_h;
 
 /**
+ * @brief The required privilege handle.
+ * @since_tizen 6.5
+ * @see package_info_foreach_required_privilege()
+ */
+typedef struct allowed_package_required_privilege_s *allowed_package_required_privilege_h;
+
+/**
  * @brief Enumeration for storage type.
  * @since_tizen 2.3
  */
@@ -62,11 +69,23 @@ typedef enum {
  * @since_tizen 2.3
  */
 typedef enum {
-       PACKAGE_INFO_ALLAPP = 0,        /**< All application */
-       PACKAGE_INFO_UIAPP = 1,         /**< UI application */
-       PACKAGE_INFO_SERVICEAPP = 2,    /**< Service application */
-       PACKAGE_INFO_WIDGETAPP = 3,     /**< Widget application (Since 4.0) */
-       PACKAGE_INFO_WATCHAPP = 4,      /**< Watch application (Since 4.0) */
+       PACKAGE_INFO_ALLAPP = 0,                                /**< All applications
+          (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_ALL instead) */
+       PACKAGE_INFO_UIAPP = 1,                                 /**< UI application
+          (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_UI instead) */
+       PACKAGE_INFO_SERVICEAPP = 2,                            /**< Service application
+          (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_SERVICE instead) */
+       PACKAGE_INFO_WIDGETAPP = 3,                             /**< Widget application (Since 4.0)
+          (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_WIDGET instead) */
+       PACKAGE_INFO_WATCHAPP = 4,                              /**< Watch application (Since 4.0)
+          (Deprecated since 5.5, use #PACKAGE_INFO_APP_COMPONENT_TYPE_WATCH instead) */
+
+       PACKAGE_INFO_APP_COMPONENT_TYPE_ALL = 0,                /**< All applications (Since 5.5) */
+       PACKAGE_INFO_APP_COMPONENT_TYPE_UI = 1,                 /**< UI application (Since 5.5) */
+       PACKAGE_INFO_APP_COMPONENT_TYPE_SERVICE = 2,            /**< Service application (Since 5.5) */
+       PACKAGE_INFO_APP_COMPONENT_TYPE_WIDGET = 3,             /**< Widget application (Since 5.5) */
+       PACKAGE_INFO_APP_COMPONENT_TYPE_WATCH = 4,              /**< Watch application (Since 5.5) */
+       PACKAGE_INFO_APP_COMPONENT_TYPE_COMPONENT_BASED = 5,    /**< Component-based application (Since 5.5) */
 } package_info_app_component_type_e;
 
 
@@ -104,16 +123,16 @@ typedef enum {
  * @param[in] user_data  The user data passed from the foreach function
  * @return @c true to continue with the next iteration of the loop,
  *         otherwise @c false to break out of the loop
- * @pre package_info_updateinfo_foreach_updateinfo() will invoke this callback.
- * @see package_info_updateinfo_foreach_updateinfo()
+ * @pre package_info_updateinfo_foreach_info() will invoke this callback.
+ * @see package_info_updateinfo_foreach_info()
  */
 typedef bool (*package_info_updateinfo_cb) (package_updateinfo_h info, void *user_data);
 
 /**
  * @brief Called to get the application ID once for each installed package.
  * @since_tizen 2.3
- * @param[in] comp_type The Application Component type
- * @param[in] callback  The callback function to be invoked
+ * @param[in] comp_type The application component type
+ * @param[in] app_id    The application ID.
  * @param[in] user_data The user data passed from the foreach function
  * @return @c true to continue with the next iteration of the loop,
  *         otherwise @c false to break out of the loop
@@ -126,7 +145,7 @@ typedef bool (*package_info_app_cb) (package_info_app_component_type_e comp_type
 /**
  * @brief Called to get the certification information.
  * @since_tizen 2.3
- * @param[in] package_info The package info handle
+ * @param[in] handle       The package info handle
  * @param[in] cert_type    The certificate type
  * @param[in] cert_value   The certificate value of corresponding certificate key \n
  *                         This value is base64 encoded data.
@@ -153,6 +172,40 @@ typedef bool (*package_info_privilege_info_cb) (const char *privilege_name, void
 
 
 /**
+ * @brief Called when dependency information between packages is retrieved.
+ * @since_tizen 5.5
+ * @remarks @a from, @a to, @a type and @a required_version are managed by the platform and will be released after the callback exits.
+ * @param[in] from             The ID of package that depends on another
+ * @param[in] to               The ID of package that is required by another
+ * @param[in] type             The type of dependency
+ * @param[in] required_version The required version
+ * @param[in] user_data        The user data passed from the foreach function
+ * @return  @c true to continue with the next iteration of the loop,
+ *          otherwise @c false to break out of the loop
+ * @pre package_info_foreach_dependency_info() will invoke this callback.
+ * @pre package_info_foreach_dependency_info_depends_on() will invoke this callback.
+ * @see package_info_foreach_dependency_info()
+ * @see package_info_foreach_dependency_info_depends_on()
+ */
+typedef bool (*package_info_dependency_info_cb) (const char *from, const char *to, const char *type, const char *required_version, void *user_data);
+
+
+/**
+ * @brief Called to get the allowed package information of resource package.
+ * @since_tizen 6.5
+ * @remarks @a allowed_package, @a privilege_handle are managed by the platform and will be released after the callback exits.
+ * @param[in] allowed_package  The ID of allowed package
+ * @param[in] privilege_handle The privilege handle required by resource package
+ * @param[in] user_data        The user data passed from the foreach function
+ * @return  @c true to continue with the next iteration of the loop,
+ *          otherwise @c false to break out of the loop
+ * @pre package_info_foreach_res_allowed_package() will invoke this callback.
+ * @see package_info_foreach_res_allowed_package()
+ */
+typedef bool (*package_info_res_allowed_package_cb) (const char *allowed_package, allowed_package_required_privilege_h privilege_handle, void *user_data);
+
+
+/**
  * @brief Retrieves all application IDs of each package.
  * @since_tizen 2.3
  * @param[in] package_info  The package info handle
@@ -310,7 +363,7 @@ int package_info_get_root_path(package_info_h package_info, char **path);
 
 /**
  * @platform
- * @brief Gets the name of the TEP(Tizen Expansion Package).
+ * @brief Gets the name of the TEP (Tizen Expansion Package).
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  * @privlevel platform
  * @privilege %http://tizen.org/privilege/packagemanager.admin
@@ -320,15 +373,47 @@ int package_info_get_root_path(package_info_h package_info, char **path);
  * @return 0 on success,
  *         otherwise a negative error value
  * @retval #PACKAGE_MANAGER_ERROR_NONE Successful
+ * @retval #PACKAGE_MANAGER_ERROR_PERMISSION_DENIED Permission denied
  * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR          Severe system error
- * @retval #PACKAGE_MANAGER_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR Severe system error
  */
 int package_info_get_tep_name(package_info_h package_info, char **name);
 
 
 /**
+ * @brief Gets the resource type of the package.
+ * @since_tizen 6.5
+ * @remarks You must release @a res_type using free().
+ * @param[in]  package_info The package information
+ * @param[out] res_type     The resource type of the package
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PACKAGE_MANAGER_ERROR_NONE              Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY     Out of memory
+ * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR          I/O error
+ */
+int package_info_get_res_type(package_info_h package_info, char **res_type);
+
+
+/**
+ * @brief Gets the resource version of the package.
+ * @since_tizen 6.5
+ * @remarks You must release @a res_version using free().
+ * @param[in]  package_info The package information
+ * @param[out] res_version  The resource version of the package
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PACKAGE_MANAGER_ERROR_NONE              Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY     Out of memory
+ * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR          I/O error
+ */
+int package_info_get_res_version(package_info_h package_info, char **res_version);
+
+
+/**
  * @brief Checks whether the package is system package.
  * @since_tizen 2.3
  * @param[in]  package_info The package information
@@ -422,6 +507,7 @@ int package_info_get_installed_time(package_info_h package_info, int *installed_
 /**
  * @brief Clones the package information handle.
  * @since_tizen 2.3
+ * @remarks The @a clone should be released using package_info_destroy().
  * @param[out] clone          The newly created package information handle
  * @param[in]  package_info   The package information
  * @return @c 0 on success,
@@ -434,7 +520,7 @@ int package_info_get_installed_time(package_info_h package_info, int *installed_
 int package_info_clone(package_info_h *clone, package_info_h package_info);
 
 /**
- * @brief Gets the package information for the given package
+ * @brief Gets the package information for the given package.
  * @since_tizen 2.3
  * @remarks You must release @a package_info using package_info_destroy().
  * @param[in]  package      The ID of the package
@@ -481,6 +567,88 @@ int package_info_foreach_cert_info(package_info_h package_info, package_info_cer
 int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void *user_data);
 
 /**
+ * @brief Retrieves dependencies between packages.
+ * @details @a callback is called whenever there is package dependency. The callback includes packages that are only directly required by the given package.
+ *          For example, if there are packages having the following relationship:
+ *
+ *                B --> E
+ *          A --> B --> C
+ *                D --> C
+ *
+ *          A --> B means that A depends on B.
+ *          When package_info_foreach_dependency_info(A) is called, the callback results in two parameters: @b from is A and @b to is B.
+ * @since_tizen 5.5
+ * @remarks The function provides the results synchronously. If there are no dependencies, this function will return #PACKAGE_MANAGER_ERROR_NONE immediately and the callback will not be invoked.
+ * @param[in] package_info The package information
+ * @param[in] callback     The iteration callback function
+ * @param[in] user_data    The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PACKAGE_MANAGER_ERROR_NONE              Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR      Severe system error
+ */
+int package_info_foreach_dependency_info(package_info_h package_info, package_info_dependency_info_cb callback, void *user_data);
+
+/**
+ * @brief Retrieves which packages depend on the given package.
+ * @details @a callback is called whenever there is package dependency. The callback includes packages that are both directly and indirectly depend on the given package.
+ *          For example, if there are packages having the following relationship:
+ *
+ *                B --> E
+ *          A --> B --> C
+ *                D --> C
+ *
+ *          A --> B means that A depends on B.
+ *          When package_info_foreach_dependency_info(C) is called, the callback results in two parameters: @b from is B and @b to is C, @b from is D and @b to is C, @b from is A and @b to is B.
+ * @since_tizen 5.5
+ * @remarks The function provides the results synchronously. If there are no dependencies, this function will return #PACKAGE_MANAGER_ERROR_NONE immediately and the callback will not be invoked.
+ * @param[in] package_info The package information
+ * @param[in] callback     The iteration callback function
+ * @param[in] user_data    The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PACKAGE_MANAGER_ERROR_NONE              Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR      Severe system error
+ */
+int package_info_foreach_dependency_info_depends_on(package_info_h package_info, package_info_dependency_info_cb callback, void *user_data);
+
+
+/**
+ * @brief Retrieves allowed package information of the resource package.
+ * @details Resource packages allow access to allowed data only for allowed packages that have specific privileges.
+ *          If not, they just allow access to global data
+ * @since_tizen 6.5
+ * @param[in] package_info The package information
+ * @param[in] callback     The iteration callback function
+ * @param[in] user_data    The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PACKAGE_MANAGER_ERROR_NONE              Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PACKAGE_MANAGER_ERROR_IO_ERROR          I/O error
+ * @retval #PACKAGE_MANAGER_ERROR_SYSTEM_ERROR      Severe system error
+ */
+int package_info_foreach_res_allowed_package(package_info_h package_info, package_info_res_allowed_package_cb callback, void *user_data);
+
+
+/**
+ * @brief Retrieves required privilege information of the allowed package.
+ * @details The packages want to access in the allowed area of resource package must have all the privileges required by resource package.
+ * @since_tizen 6.5
+ * @param[in] priv_info    The privilege information handle
+ * @param[in] callback     The iteration callback function
+ * @param[in] user_data    The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PACKAGE_MANAGER_ERROR_NONE              Successful
+ * @retval #PACKAGE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int package_info_foreach_required_privilege(allowed_package_required_privilege_h priv_info, package_info_privilege_info_cb callback, void *user_data);
+
+
+/**
  * @brief Gets the package update information for the given package.
  * @since_tizen 4.0
  * @remarks You must release @a info using package_info_updateinfo_destroy().
@@ -554,7 +722,7 @@ int package_info_updateinfo_get_type(package_updateinfo_h info,
 int package_info_updateinfo_destroy(package_updateinfo_h info);
 
 /**
- * @brief Retrieve update information of all packages and invoke callback for each of it.
+ * @brief Retrieves update information of all packages and invoke callback for each of it.
  * @since_tizen 4.0
  * @param[in] callback     The iteration callback function
  * @param[in] user_data    The user data to be passed to the callback function