* @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;
* @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
/**
* @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.
/**
+ * @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 Retrieves all application IDs of each package.
* @since_tizen 2.3
* @param[in] package_info The package info handle
/**
* @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
* @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 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,
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
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: @a from is A and @a 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: @a from is B and @a to is C, @a from is D and @a to is C, @a from is A and @a 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 Gets the package update information for the given package.
* @since_tizen 4.0
* @remarks You must release @a info using package_info_updateinfo_destroy().
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