From: Junghyun Yeon Date: Wed, 2 Mar 2016 07:01:19 +0000 (+0900) Subject: changes to app signal work properly X-Git-Tag: accepted/tizen/common/20160308.142757^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b2901f674958d548962f9cce717d55dff0e9394f;p=platform%2Fcore%2Fappfw%2Fslp-pkgmgr.git changes to app signal work properly Change-Id: Ie3fc60733b9bddeee92df09596145a85fec7afeb Signed-off-by: Junghyun Yeon --- diff --git a/client/src/pkgmgr.c b/client/src/pkgmgr.c index bd6e164..446f77c 100644 --- a/client/src/pkgmgr.c +++ b/client/src/pkgmgr.c @@ -407,13 +407,15 @@ static void __status_callback(void *cb_data, uid_t target_uid, while (tmp) { if (appid != NULL && strlen(appid) != 0) { /* run app callback */ - if (tmp->app_event_cb(target_uid, tmp->request_id, pkg_type, pkgid, - appid, key, val, NULL, tmp->data) != 0) + if (tmp->app_event_cb && tmp->app_event_cb( + target_uid, tmp->request_id, pkg_type, pkgid, + appid, key, val, NULL, tmp->data) != 0) break; } else { /* run pkg callback */ - if (tmp->event_cb(target_uid, tmp->request_id, pkg_type, pkgid, - key, val, NULL, tmp->data) != 0) + if (tmp->event_cb && tmp->event_cb( + target_uid, tmp->request_id, pkg_type, pkgid, + key, val, NULL, tmp->data) != 0) break; } tmp = tmp->next; @@ -1621,6 +1623,11 @@ API int pkgmgr_client_set_status_type(pkgmgr_client *pc, int status_type) retvm_if(ret < 0, PKGMGR_R_ECOMM, "COMM_STATUS_BROADCAST_UPGRADE failed - %d", ret); } + if ((mpc->status_type & PKGMGR_CLIENT_STATUS_ENABLE_DISABLE_APP) == PKGMGR_CLIENT_STATUS_ENABLE_DISABLE_APP) { + ret = comm_client_set_status_callback(COMM_STATUS_BROADCAST_ENABLE_DISABLE_APP, mpc->info.listening.cc, __status_callback, pc); + retvm_if(ret < 0, PKGMGR_R_ECOMM, "COMM_STATUS_BROADCAST_UPGRADE failed - %d", ret); + } + return PKGMGR_R_OK; } diff --git a/comm/pkgmgr_installer.c b/comm/pkgmgr_installer.c index d4ab319..1922769 100644 --- a/comm/pkgmgr_installer.c +++ b/comm/pkgmgr_installer.c @@ -114,7 +114,7 @@ static int __send_signal_for_app_event(pkgmgr_installer *pi, const char *pkg_typ if (g_dbus_connection_emit_signal(pi->conn, NULL, COMM_STATUS_BROADCAST_OBJECT_PATH, COMM_STATUS_BROADCAST_INTERFACE, name, - g_variant_new("(ussssss)", getuid(), sid, + g_variant_new("(ussssss)", pi->target_uid, sid, pkg_type, pkgid, appid, key, val), &err) != TRUE) { ERR("failed to send dbus signal: %s", err->message); @@ -479,6 +479,16 @@ API int pkgmgr_installer_send_app_uninstall_signal(pkgmgr_installer *pi, return ret; } +API int pkgmgr_installer_set_uid(pkgmgr_installer *pi, uid_t uid) +{ + if (pi == NULL) + return -1; + + pi->target_uid = uid; + + return 0; +} + API int pkgmgr_installer_send_app_signal(pkgmgr_installer *pi, const char *pkg_type, diff --git a/comm/pkgmgr_installer.h b/comm/pkgmgr_installer.h index 15b9514..aaa3856 100644 --- a/comm/pkgmgr_installer.h +++ b/comm/pkgmgr_installer.h @@ -62,7 +62,10 @@ typedef void* pkgmgr_instcertinfo_h; #define PKGMGR_INSTALLER_OK_EVENT_STR "ok" #define PKGMGR_INSTALLER_FAIL_EVENT_STR "fail" - +#define PKGMGR_INSTALLER_APP_DISABLE_EVENT_STR "disable_app" +#define PKGMGR_INSTALLER_APP_ENABLE_EVENT_STR "enable_app" +#define PKGMGR_INSTALLER_GLOBAL_APP_DISABLE_FOR_UID "disable_global_app_for_uid" +#define PKGMGR_INSTALLER_GLOBAL_APP_ENABLE_FOR_UID "enable_global_app_for_uid" /** @@ -667,6 +670,17 @@ int pkgmgr_installer_send_app_uninstall_signal(pkgmgr_installer *pi, const char *val); /** + * @brief This API sets the uid of given pkgmgr_installer. + * + * This API is for package-manager client application.\n + * + * @param[in]pi pointer to pkgmgr_installer + * @param[in]uid uid + * @return 0 if success, error code(<0) if fail\n +*/ +int pkgmgr_installer_set_uid(pkgmgr_installer *pi, uid_t uid); + +/** * @brief This API sets the requst info of given pkgmgr_installer. * * This API is for package-manager client application.\n