Add new APIs related to application component
[platform/core/api/app-manager.git] / include / app_info.h
1 /*
2  * Copyright (c) 2011 - 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17
18 #ifndef __TIZEN_APPFW_APP_INFO_H
19 #define __TIZEN_APPFW_APP_INFO_H
20
21 #include <tizen.h>
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /**
28  * @file app_info.h
29  */
30
31 /**
32 * @addtogroup CAPI_APP_INFO_MODULE
33 * @{
34 */
35
36 /**
37  * @brief  Definition for string property for filtering based on app info: String property for filtering packages with app id
38  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
39  */
40 #define  PACKAGE_INFO_PROP_APP_ID            "PACKAGE_INFO_PROP_APP_ID"
41
42 /**
43  * @brief  Definition for string property for filtering based on app info: String property for filtering packages with app type
44  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
45  */
46 #define  PACKAGE_INFO_PROP_APP_TYPE          "PACKAGE_INFO_PROP_APP_TYPE"
47
48 /**
49  * @brief  Definition for string property for filtering based on app info: String property for filtering packages with app category
50  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
51  */
52 #define  PACKAGE_INFO_PROP_APP_CATEGORY      "PACKAGE_INFO_PROP_APP_CATEGORY"
53
54 /**
55  * @brief  Definition for string property for filtering based on app info: String property for filtering packages with installed storage of app
56  *         Value related with this property should be "installed_internal" or "installed_external"
57  * @since_tizen 3.0
58  */
59 #define  PACKAGE_INFO_PROP_APP_INSTALLED_STORAGE      "PACKAGE_INFO_PROP_APP_INSTALLED_STORAGE"
60
61 /**
62  * @brief Definition for boolean property for filtering based on app info: Boolean property for filtering whether the package is nodisplay or not based on package info
63  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
64  */
65 #define PACKAGE_INFO_PROP_APP_NODISPLAY     "PACKAGE_INFO_PROP_APP_NODISPLAY"
66
67 /**
68  * @brief Definition for boolean property for filtering based on app info: Boolean property for filtering whether the package has the authority to manage task or not based on package info
69  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
70  */
71 #define PACKAGE_INFO_PROP_APP_TASKMANAGE    "PACKAGE_INFO_PROP_APP_TASKMANAGE"
72
73 /**
74  * @brief Definition for boolean property for filtering based on app info: Boolean property for filtering whether the application has been disabled
75  * @since_tizen 4.0
76  */
77 #define   PACKAGE_INFO_PROP_APP_DISABLED    "PACKAGE_INFO_PROP_APP_DISABLED"
78
79 /**
80  * @brief Definition for string property for filtering based on app info: String property for
81  *        filtering with the application component type.
82  *        Value related with this property should be one of "uiapp", "svcapp", "widgetapp"
83  *        and "watchapp".
84  * @since_tizen 4.0
85  * @see app_info_app_component_e
86  * @see app_info_get_app_component_type()
87  */
88 #define   PACKAGE_INFO_PROP_APP_COMPONENT_TYPE    "PACKAGE_INFO_PROP_APP_COMPONENT_TYPE"
89
90 /**
91  * @brief Enumeration for application component type.
92  * @since_tizen 4.0
93  * @details A component is an application considered as a part of a package.
94  *          The application component type indicates what type of
95  *          a component an application is in a package.
96  * @see PACKAGE_INFO_PROP_APP_COMPONENT_TYPE
97  * @see app_info_get_app_component_type()
98  */
99 typedef enum {
100         APP_INFO_APP_COMPONENT_TYPE_UI_APP,       /**< UI application */
101         APP_INFO_APP_COMPONENT_TYPE_SERVICE_APP,  /**< Service application */
102         APP_INFO_APP_COMPONENT_TYPE_WIDGET_APP,   /**< Widget application */
103         APP_INFO_APP_COMPONENT_TYPE_WATCH_APP,    /**< Watch application */
104 } app_info_app_component_type_e;
105
106 /**
107  * @brief Application information handle.
108  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
109  */
110 typedef struct app_info_s *app_info_h;
111
112 /**
113  * @brief Application filter handle.
114  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
115  */
116 typedef struct app_info_filter_s *app_info_filter_h;
117
118 /**
119  * @brief Application metadata filter handle.
120  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
121  */
122 typedef struct app_info_metadata_filter_s *app_info_metadata_filter_h;
123
124 /**
125  * @brief  Called to get the application information once for each installed application.
126  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
127  * @param[in]   app_info   The application information of each installed application
128  * @param[in]   user_data  The user data passed from the foreach function
129  * @return      @c true to continue with the next iteration of the loop, \n
130  *              otherwise @c false to break out of the loop
131  * @pre app_manager_foreach_app_info() will invoke this callback.
132  * @see app_manager_foreach_app_info()
133  */
134 typedef bool (*app_info_filter_cb) (app_info_h app_info, void *user_data);
135
136 /**
137  * @brief  Called to get application metadata in app_info_foreach_metadata().
138  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
139  * @param[in]   metadata_name   The name of the metadata
140  * @param[in]   metadata_value  The value of the metadata
141  * @param[in]   user_data       The user data passed to app_info_foreach_metadata()
142  * @return      @c true to continue with the next iteration of the loop, \n
143  *              otherwise @c false to break out of the loop
144  * @pre app_info_foreach_metadata() will invoke this callback.
145  * @see app_info_foreach_metadata()
146  */
147 typedef bool (*app_info_metadata_cb) (const char *metadata_key, const char *metadata_value, void *user_data);
148
149 /**
150  * @brief  Called for each application category in app_info_foreach_category().
151  * @since_tizen 4.0
152  * @remarks     @a category will be freed when the application information handle is destroyed
153  *              using app_info_destroy()
154  * @param[in]   category        The name of the category
155  * @param[in]   user_data       The user data passed to app_info_foreach_category()
156  * @return      @c true to continue with the next iteration of the loop, \n
157  *              otherwise @c false to break out of the loop
158  * @pre app_info_foreach_category() will invoke this callback.
159  * @see app_info_foreach_category()
160  */
161 typedef bool (*app_info_category_cb) (const char *category, void *user_data);
162
163 /**
164  * @brief  Creates the application information handle.
165  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
166  * @param[in]   app_id    The application ID
167  * @param[out]  app_info  The application information handle
168  * @return      @c 0 on success,
169  *              otherwise a negative error value
170  * @retval  #APP_MANAGER_ERROR_NONE               Successful
171  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
172  * @retval  #APP_MANAGER_ERROR_NO_SUCH_APP        The app is not installed
173  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
174  * @see app_manager_foreach_app_info()
175  * @see app_manager_get_app_info()
176  */
177 int app_info_create(const char *app_id, app_info_h *app_info);
178
179 /**
180  * @brief  Destroys the application information handle and releases all its resources.
181  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
182  * @param[in]   app_info  The application information handle
183  * @return      @c 0 on success,
184  *              otherwise a negative error value
185  * @retval  #APP_MANAGER_ERROR_NONE               Successful
186  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
187  * @see app_manager_foreach_app_info()
188  * @see app_manager_get_app_info()
189  */
190 int app_info_destroy(app_info_h app_info);
191
192 /**
193  * @brief  Gets the application ID with the given application context.
194  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
195  * @remarks     You must release @a app_id using free().
196  * @param[in]   app_info  The application information
197  * @param[out]  app_id    The application ID of the given application context
198  * @return      @c 0 on success,
199  *              otherwise a negative error value
200  * @retval  #APP_MANAGER_ERROR_NONE               Successful
201  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
202  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
203  */
204 int app_info_get_app_id(app_info_h app_info, char **app_id);
205
206 /**
207  * @brief  Gets the executable path of the application
208  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
209  * @remarks     You must release @a exec path using free().
210  * @param[in]   app_info The application information
211  * @param[out]  exec     The executable path of the application
212  * @return      @c 0 on success,
213  *              otherwise a negative error value
214  * @retval  #APP_MANAGER_ERROR_NONE               Successful
215  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
216  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
217  */
218 int app_info_get_exec(app_info_h app_info, char **exec);
219
220 /**
221  * @brief  Gets the label of the application.
222  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
223  * @remarks     You must release @a label using free().
224  * @param[in]   app_info  The application information
225  * @param[out]  label     The label of the application
226  * @return      @c 0 on success,
227  *              otherwise a negative error value
228  * @retval  #APP_MANAGER_ERROR_NONE               Successful
229  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
230  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
231  */
232 int app_info_get_label(app_info_h app_info, char **label);
233
234 /**
235  * @brief  Gets the localed name of the application.
236  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
237  * @remarks     You must release localed name using free().
238  * @param[in]   app_id  The application ID
239  * @param[in]   locale  The locale information
240  * @param[out]  label   The localed name of the application
241  * @return      @c 0 on success,
242  *              otherwise a negative error value
243  * @retval  #APP_MANAGER_ERROR_NONE               Successful
244  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
245  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
246  */
247 int app_info_get_localed_label(const char *app_id, const char *locale, char **label);
248
249 /**
250  * @brief  Gets the absolute path to the icon image.
251  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
252  * @remarks     You must release @a path using free().
253  * @param[in]   app_info  The application information
254  * @param[out]  path      The absolute path to the icon
255  * @return      @c 0 on success,
256  *              otherwise a negative error value
257  * @retval  #APP_MANAGER_ERROR_NONE               Successful
258  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
259  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
260  */
261 int app_info_get_icon(app_info_h app_info, char **path);
262
263 /**
264  * @brief  Gets the package name.
265  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
266  * @remarks     You must release @a package name using free().
267  * @param[in]   app_info  The application information
268  * @param[out]  package   The package name
269  * @return      @c 0 on success,
270  *              otherwise a negative error value
271  * @retval  #APP_MANAGER_ERROR_NONE               Successful
272  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
273  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
274  */
275 int app_info_get_package(app_info_h app_info, char **package);
276
277 /**
278  * @brief  Gets the package type name.
279  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
280  * @remarks     You must release package @a type name using free().
281  * @param[in]   app_info The application information
282  * @param[out]  type     The package type
283  * @return      @c 0 on success,
284  *              otherwise a negative error value
285  * @retval  #APP_MANAGER_ERROR_NONE               Successful
286  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
287  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
288  */
289 int app_info_get_type(app_info_h app_info, char **type);
290
291 /**
292  * @brief  Gets the application component type.
293  * @since_tizen 4.0
294  * @param[in]   app_info   The application information
295  * @param[out]  component  The application component type
296  * @return      @c 0 on success,
297  *              otherwise a negative error value
298  * @retval  #APP_MANAGER_ERROR_NONE               Successful
299  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
300  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
301  * @see PACKAGE_INFO_PROP_APP_COMPONENT_TYPE
302  * @see app_info_app_component_type_e
303  */
304 int app_info_get_app_component_type(app_info_h app_info, app_info_app_component_type_e *type);
305
306 /**
307  * @brief  Gets the list of metadata for a particular application.
308  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
309  * @param[in]  app_info   The application information
310  * @param[in]  callback   The callback function for list
311  * @param[in]  user_data  The user data to be passed to callback function
312  * @return      @c 0 on success,
313  *              otherwise a negative error value
314  * @retval  #APP_MANAGER_ERROR_NONE               Successful
315  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
316  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
317  */
318 int app_info_foreach_metadata(app_info_h app_info, app_info_metadata_cb callback, void *user_data);
319
320 /**
321  * @brief  Checks whether application information is nodisplay.
322  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
323  * @param[in]   app_info   The application information
324  * @param[out]  nodisplay  @c true if the application is nodisplay, \n
325  *                         otherwise @c false
326  * @return      @c 0 on success,
327  *              otherwise a negative error value
328  * @retval  #APP_MANAGER_ERROR_NONE               Successful
329  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
330  */
331 int app_info_is_nodisplay(app_info_h app_info, bool *nodisplay);
332
333 /**
334  * @brief  Checks whether two application information are equal.
335  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
336  * @param[in]   lhs    The first application information to compare
337  * @param[in]   rhs    The second application information to compare
338  * @param[out]  equal  @c true if the application information are equal, \n
339  *                     otherwise @c false
340  * @return      @c 0 on success,
341  *              otherwise a negative error value
342  * @retval  #APP_MANAGER_ERROR_NONE               Successful
343  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
344  */
345 int app_info_is_equal(app_info_h lhs, app_info_h rhs, bool *equal);
346
347 /**
348  * @brief  Checks whether application is enabled.
349  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
350  * @param[in]   app_info  The application information
351  * @param[out]  enabled   @c true if the application is enabled, \n
352  *                        otherwise @c false
353  * @return      @c 0 on success,
354  *              otherwise a negative error value
355  * @retval  #APP_MANAGER_ERROR_NONE               Successful
356  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
357  */
358 int app_info_is_enabled(app_info_h app_info, bool *enabled);
359
360 /**
361  * @brief  Checks whether application is launched on booting time.
362  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
363  * @param[in]   app_info  The application information
364  * @param[out]  onboot    @c true if the application is launched on booting time, \n
365  *                        otherwise @c false
366  * @return      @c 0 on success,
367  *              otherwise a negative error value
368  * @retval  #APP_MANAGER_ERROR_NONE               Successful
369  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
370  */
371 int app_info_is_onboot(app_info_h app_info, bool *onboot);
372
373 /**
374  * @brief  Checks whether application is preloaded.
375  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
376  * @param[in]   app_info  The application information
377  * @param[out]  preload   @c true if the application is preloaded, \n
378  *                        otherwise @c false
379  * @return        @c 0 on success,
380  *                otherwise a negative error value
381  * @retval  #APP_MANAGER_ERROR_NONE               Successful
382  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
383  */
384 int app_info_is_preload(app_info_h app_info, bool *preload);
385
386 /**
387  * @brief  Clones the application information handle.
388  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
389  * @param[out]  clone     A newly created application information handle, if successfully cloned
390  * @param[in]   app_info  The application information
391  * @return      @c 0 on success,
392  *              otherwise a negative error value
393  * @retval  #APP_MANAGER_ERROR_NONE               Successful
394  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
395  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
396  * @retval  #APP_MANAGER_ERROR_NO_SUCH_APP        The app is not installed
397  */
398 int app_info_clone(app_info_h *clone, app_info_h app_info);
399
400 /**
401  * @platform
402  * @brief  Runs a callback for each category which the given application belongs to.
403  * @since_tizen 4.0
404  * @privlevel platform
405  * @privilege %http://tizen.org/privilege/packagemanager.admin
406  * @param[in]  app_info   The application information
407  * @param[in]  callback   The callback function
408  * @param[in]  user_data  The user data to be passed to the callback function
409  * @return      @c 0 on success,
410  *              otherwise a negative error value
411  * @retval  #APP_MANAGER_ERROR_NONE               Successful
412  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
413  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
414  * @retval  #APP_MANAGER_ERROR_PERMISSION_DENIED  Permission denied
415  * @see app_info_create()
416  */
417 int app_info_foreach_category(app_info_h app_info, app_info_category_cb callback, void *user_data);
418
419 /**
420  * @brief  Creates the application information filter handle from DB.
421  *         All filter properties will be ANDed.
422  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
423  * @param[out]  handle  The pointer to the application info filter handle
424  * @return      @c 0 on success,
425  *              otherwise a negative error value
426  * @retval  #APP_MANAGER_ERROR_NONE               Successful
427  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
428  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
429  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
430  */
431 int app_info_filter_create(app_info_filter_h *handle);
432
433 /**
434  * @brief  Destroys the application information filter handle, freeing up all the resources.
435  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
436  * @param[in]  handle  The pointer to the application info filter handle
437  * @return     @c 0 on success,
438  *             otherwise a negative error value
439  * @retval  #APP_MANAGER_ERROR_NONE               Successful
440  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
441  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
442  */
443 int app_info_filter_destroy(app_info_filter_h handle);
444
445 /**
446  * @brief  Adds a boolean filter property to the filter handle.
447  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
448  * @param[in]  handle    The pointer to the application info filter handle
449  * @param[in]  property  The integer property name
450  * @param[in]  value     The value corresponding to the property
451  * @return     @c 0 on success,
452  *             otherwise a negative error value
453  * @retval  #APP_MANAGER_ERROR_NONE               Successful
454  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
455  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
456  */
457 int app_info_filter_add_bool(app_info_filter_h handle, const char *property, const bool value);
458
459 /**
460  * @brief  Adds a string filter property to the filter handle.
461  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
462  * @param[in]  handle    The pointer to the application info filter handle
463  * @param[in]  property  The integer property name
464  * @param[in]  value     The value corresponding to the property
465  * @return     @c 0 on success,
466  *             otherwise a negative error value
467  * @retval  #APP_MANAGER_ERROR_NONE               Successful
468  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
469  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
470  */
471 int app_info_filter_add_string(app_info_filter_h handle, const char *property, const char *value);
472
473 /**
474  * @brief  Gets the count of filtered apps.
475  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
476  * @param[in]   handle  The pointer to the application info filter handle
477  * @param[out]  count   The pointer to the variable for count
478  * @return      @c 0 on success,
479  *              otherwise a negative error value
480  * @retval  #APP_MANAGER_ERROR_NONE               Successful
481  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
482  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
483  */
484 int app_info_filter_count_appinfo(app_info_filter_h handle, int *count);
485
486 /**
487  * @brief  Executes the user supplied callback function for each application that satisfy the filter conditions.
488  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
489  * @param[in]  handle     The pointer to the application info filter handle
490  * @param[in]  callback   The callback function
491  * @param[in]  user_data  The user data to be passed to the callback function
492  * @return     @c 0 on success,
493  *             otherwise a negative error value
494  * @retval  #APP_MANAGER_ERROR_NONE               Successful
495  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
496  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
497  */
498 int app_info_filter_foreach_appinfo(app_info_filter_h handle, app_info_filter_cb callback, void *user_data);
499
500 /**
501  * @brief  Creates the application's metadata information filter handle from DB.
502  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
503  * @param[out]  handle  The pointer to the application metadata info filter handle
504  * @return      @c 0 on success,
505  *              otherwise a negative error value
506  * @retval  #APP_MANAGER_ERROR_NONE               Successful
507  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
508  * @retval  #APP_MANAGER_ERROR_OUT_OF_MEMORY      Out of memory
509  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
510  */
511 int app_info_metadata_filter_create(app_info_metadata_filter_h *handle);
512
513 /**
514  * @brief  Destroys the application's metadata information filter handle.
515  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
516  * @param[in]  handle  The pointer to the application info filter handle
517  * @return  @c 0 on success,
518  *          otherwise a negative error value
519  * @retval  #APP_MANAGER_ERROR_NONE               Successful
520  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
521  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
522  */
523 int app_info_metadata_filter_destroy(app_info_metadata_filter_h handle);
524
525 /**
526  * @brief  Adds filter condition for the query API.
527  * @details  The query will search the entire application metadata information collected from
528  *           the manifest file of all the installed packages. You can specify value as @c NULL to search based on key only.
529  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
530  * @param[in]  handle  The pointer to the application metadata info filter handle
531  * @param[in]  key     The pointer to metadata key
532  * @param[in]  value   The pointer to metadata value
533  * @return     @c 0 on success,
534  *             otherwise a negative error value
535  * @retval  #APP_MANAGER_ERROR_NONE               Successful
536  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
537  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
538  */
539 int app_info_metadata_filter_add(app_info_metadata_filter_h handle, const char *key, const char *value);
540
541 /**
542  * @brief  Executes the filter query.
543  * @details  The query will search the entire application metadata information collected from
544  *           the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
545  *           negative value, no more callbacks will be called and API will return.
546  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
547  * @param[in]  handle     The pointer to the application metadata info filter handle
548  * @param[in]  callback   The function pointer to callback
549  * @param[in]  user_data  The pointer to user data
550  * @return     @c 0 on success,
551  *             otherwise a negative error value
552  * @retval  #APP_MANAGER_ERROR_NONE               Successful
553  * @retval  #APP_MANAGER_ERROR_INVALID_PARAMETER  Invalid parameter
554  * @retval  #APP_MANAGER_ERROR_IO_ERROR           I/O error
555  */
556 int app_info_metadata_filter_foreach(app_info_metadata_filter_h handle, app_info_filter_cb callback, void *user_data);
557
558
559 /**
560 * @}
561 */
562
563 #ifdef __cplusplus
564 }
565 #endif
566
567 #endif /* __TIZEN_APPFW_APP_INFO_H */
568