From: Sangyoon Jang Date: Thu, 4 Jun 2015 12:18:42 +0000 (+0900) Subject: Use pkgmgrinfo_appinfo_foreach_appcontrol X-Git-Tag: submit/tizen/20150605.041856^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c6a2b1afcd913326cb4c77049d3ca4c672c1ae91;p=platform%2Fcore%2Fappfw%2Fevent-system.git Use pkgmgrinfo_appinfo_foreach_appcontrol fix to pass right parameter when use some apis Change-Id: I6849aad24340b43a18037043dea43c98503ab947 Signed-off-by: Sangyoon Jang --- diff --git a/src/esd_main.c b/src/esd_main.c index 012e745..b034926 100755 --- a/src/esd_main.c +++ b/src/esd_main.c @@ -97,6 +97,7 @@ typedef struct esd_info { static esd_info_s s_info; +static int __esd_add_appinfo_handler(const pkgmgrinfo_appinfo_h handle, void *data); static void __esd_event_handler(char *event_name, bundle *data, void *user_data); static int __get_sender_pid(GDBusConnection *conn, const char *sender_name) @@ -138,42 +139,6 @@ out: return pid; } -static bool __esd_is_service_app(const char *appid) -{ - int ret = 0; - bool is_svcapp = false; - pkgmgrinfo_app_component component_type; - pkgmgrinfo_appinfo_h handle; - - ret = pkgmgrinfo_appinfo_get_usr_appinfo(appid, getuid(), &handle); - if (ret != PMINFO_R_OK) - return false; - - ret = pkgmgrinfo_appinfo_get_component(handle, &component_type); - if (ret != PMINFO_R_OK) { - pkgmgrinfo_appinfo_destroy_appinfo(handle); - return false; - } - - _D("component_type : %d %d", component_type, PMINFO_SVC_APP); - - if (component_type == PMINFO_SVC_APP) { - is_svcapp = true; - } - pkgmgrinfo_appinfo_destroy_appinfo(handle); - - return is_svcapp; -} - -void __esd_free_noti(gpointer data) -{ - eventsystem_info_s *n = (eventsystem_info_s *)data; - - FREE_AND_NULL(n->appid); - FREE_AND_NULL(n->event_name); - FREE_AND_NULL(n); -} - void __esd_free_app_list(gpointer data) { char *n = (char *)data; @@ -209,17 +174,6 @@ static void esd_launch_table_print_items(void) } } -static void __esd_print_event_list_of_app(gpointer data, gpointer user_data) -{ - eventsystem_info_s *esi = (eventsystem_info_s *)data; - _D("esi : appid(%s), eventid(%s)", esi->appid, esi->event_name); -} - -static void esd_print_event_list_of_app(GList *list) -{ - g_list_foreach(list, __esd_print_event_list_of_app, NULL); -} - static int esd_find_compare_by_list_item(gconstpointer data, gconstpointer user_data) { esd_list_item_s *item_1 = (esd_list_item_s *)user_data; @@ -387,17 +341,6 @@ static int __esd_add_launch_item(const char *event_name, const char *appid) return ES_R_OK; } -static void esd_add_launch_item(gpointer data, gpointer user_data) -{ - eventsystem_info_s *eis = (eventsystem_info_s *)data; - char *event_name = eis->event_name; - eventlaunch_item_param_s *eli_p = (eventlaunch_item_param_s *)user_data; - - if (__esd_add_launch_item(event_name, eli_p->app_id) < 0) { - _E("failed to add item"); - } -} - static void __esd_remove_app_list(gpointer data, gpointer user_data) { esd_list_item_s *item = (esd_list_item_s *)data; @@ -429,26 +372,6 @@ static int esd_remove_launch_item(gpointer data, const char *pkg_id) return ES_R_OK; } -static int esd_launch_table_add_items(const char *app_id, GList *event_list) -{ - eventlaunch_item_param_s *eli_p = NULL; - - eli_p = calloc(1, sizeof(eventlaunch_item_param_s)); - if (eli_p == NULL) { - _E("memory alloc failed"); - return ES_R_ENOMEM; - } - - eli_p->app_id = (char *)app_id; - - _D("app_id(%s)", eli_p->app_id); - g_list_foreach(event_list, esd_add_launch_item, eli_p); - - FREE_AND_NULL(eli_p); - - return ES_R_OK; -} - static int esd_launch_table_remove_items(const char *pkg_id) { GHashTableIter iter; @@ -812,8 +735,6 @@ static void on_name_lost(GDBusConnection *connection, static int __esd_before_loop(void) { - GList *es_info = NULL; - GList *tmp_es_info = NULL; int ret = 0; #ifdef APPFW_EVENT_SYSTEM_EARLIER_FEATURE @@ -851,37 +772,12 @@ static int __esd_before_loop(void) event_launch_table = g_hash_table_new(g_str_hash, g_str_equal); _I("get event launch list"); - pkgmgrinfo_appinfo_get_usr_event_launch_list(&es_info, getuid()); - if (es_info) { - tmp_es_info = g_list_first(es_info); - - while (tmp_es_info != NULL) { - eventsystem_info_s *esi = (eventsystem_info_s *)tmp_es_info->data; - _I("appid(%s)-eventname(%s)", esi->appid, esi->event_name); - - if (!__esd_is_service_app(esi->appid)) { - _E("not service app"); - } else { - if (__esd_add_launch_item(esi->event_name, esi->appid) < 0) { - _E("failed to add item"); - ret = ES_R_ERROR; - break; - } - } - - tmp_es_info = g_list_next(tmp_es_info); - } - - g_list_free_full(es_info, __esd_free_noti); - esd_launch_table_print_items(); - - if (ret < 0) { - return ret; - } - } else { - _D("event list is null"); + ret = pkgmgrinfo_appinfo_get_usr_installed_list(__esd_add_appinfo_handler, getuid(), NULL); + if (ret < 0) { + _E("pkgmgrinfo_appinfo_get_usr_installed_list error"); + return ES_R_ERROR; } - + esd_launch_table_print_items(); /* gdbus setup for method call */ GError *error = NULL; guint owner_id = 0; @@ -917,10 +813,24 @@ static void esd_pkgmgr_event_free(esd_pkgmgr_event *pkg_event) } } +#define OPERATION_LAUNCH_ON_EVENT "http://tizen.org/appcontrol/operation/launch_on_event" +static int __esd_appcontrol_cb(const char *operation, const char *uri, const char *mime, void *data) +{ + char *appid = (char *)data; + + if (!strcmp(operation, OPERATION_LAUNCH_ON_EVENT)) { + if (__esd_add_launch_item(uri, appid)) { + _E("failed to add item for %s", appid); + } + } + + return 0; +} + static int __esd_add_appinfo_handler(const pkgmgrinfo_appinfo_h handle, void *data) { char *appid = NULL; - GList *event_list = NULL; + pkgmgrinfo_app_component component_type; int ret = 0; ret = pkgmgrinfo_appinfo_get_appid(handle, &appid); @@ -931,25 +841,27 @@ static int __esd_add_appinfo_handler(const pkgmgrinfo_appinfo_h handle, void *da _D("appid(%s)", appid); - if (!__esd_is_service_app(appid)) { + ret = pkgmgrinfo_appinfo_get_component(handle, &component_type); + if (ret != PMINFO_R_OK) { + _E("failed to get component type"); + return ES_R_ERROR; + } + + if (component_type != PMINFO_SVC_APP) { _E("not service app"); return ES_R_OK; } - pkgmgrinfo_appinfo_get_usr_event_launch_list_by_appid(appid, &event_list, getuid()); - if (event_list) { - esd_print_event_list_of_app(event_list); - esd_launch_table_add_items(appid, event_list); - esd_launch_table_print_items(); - g_list_free_full(event_list, __esd_free_noti); - } else { - _D("event_list is NULL"); + ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, __esd_appcontrol_cb, appid); + if (ret < 0) { + _E("failed to get appcontrol info"); + return ES_R_ERROR; } return ES_R_OK; } -static int esd_pkgmgr_event_callback(int req_id, const char *pkg_type, +static int esd_pkgmgr_event_callback(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) { @@ -977,14 +889,14 @@ static int esd_pkgmgr_event_callback(int req_id, const char *pkg_type, } else if (strcmp(key, "end") == 0 && strcmp(val, "ok") == 0) { if (pkg_event->type == INSTALL || pkg_event->type == UPDATE) { _D("install end (ok)"); - ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, &handle, getuid()); + ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, getuid(), &handle); if (ret < 0) { _E("failed to get pkginfo"); esd_pkgmgr_event_free(pkg_event); return 0; } ret = pkgmgrinfo_appinfo_get_list(handle, - PMINFO_ALL_APP, __esd_add_appinfo_handler, NULL); + PMINFO_SVC_APP, __esd_add_appinfo_handler, NULL); if (ret < 0) { _E("failed to get appinfo"); esd_pkgmgr_event_free(pkg_event);