From 88d88b7ac08080fbb30fcaeaab2d6ec0de2ab424 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Wed, 13 Jan 2016 17:20:24 +0900 Subject: [PATCH] Each user can disable global app separately Changes applied at [slp-pkgmgr][pkgmgr-info][pkgmgr-server] Change-Id: Iab92e323553ab6f58ef330ac9f7b1d37b0094293 Signed-off-by: Junghyun Yeon --- include/pkgmgr-server.h | 2 ++ src/pkgmgr-server.c | 16 +++++++++++ src/request.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 86 insertions(+), 2 deletions(-) diff --git a/include/pkgmgr-server.h b/include/pkgmgr-server.h index 8ab7247..41f0ee8 100644 --- a/include/pkgmgr-server.h +++ b/include/pkgmgr-server.h @@ -53,6 +53,8 @@ enum request_type { PKGMGR_REQUEST_TYPE_GETSIZE, PKGMGR_REQUEST_TYPE_CLEARDATA, PKGMGR_REQUEST_TYPE_CLEARCACHE, + PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP, + PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP, PKGMGR_REQUEST_TYPE_KILL, PKGMGR_REQUEST_TYPE_CHECK, PKGMGR_REQUEST_TYPE_GENERATE_LICENSE_REQUEST, diff --git a/src/pkgmgr-server.c b/src/pkgmgr-server.c index 0971777..67db3f7 100644 --- a/src/pkgmgr-server.c +++ b/src/pkgmgr-server.c @@ -802,6 +802,16 @@ static void __process_disable(pm_dbus_msg *item) /* TODO */ } +static void __process_enable_global_app(pm_dbus_msg *item) +{ + pkgmgr_parser_update_global_app_disable_info_in_db(item->pkgid, item->uid, 0); +} + +static void __process_disable_global_app(pm_dbus_msg *item) +{ + pkgmgr_parser_update_global_app_disable_info_in_db(item->pkgid, item->uid, 1); +} + static void __process_getsize(pm_dbus_msg *item) { char **args_vector; @@ -1016,6 +1026,12 @@ gboolean queue_job(void *data) case PKGMGR_REQUEST_TYPE_CLEARCACHE: __process_clearcache(item); break; + case PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP: + __process_enable_global_app(item); + break; + case PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP: + __process_disable_global_app(item); + break; case PKGMGR_REQUEST_TYPE_KILL: __process_kill(item); break; diff --git a/src/request.c b/src/request.c index 0019428..ca27a2e 100644 --- a/src/request.c +++ b/src/request.c @@ -62,6 +62,16 @@ static const char instropection_xml[] = " " " " " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " " " " " " " @@ -324,7 +334,7 @@ static int __handle_request_enable(uid_t uid, return -1; } - if (_pm_queue_push(target_uid, "", PKGMGR_REQUEST_TYPE_ENABLE, "pkg", + if (_pm_queue_push(target_uid, "", PKGMGR_REQUEST_TYPE_ENABLE, "none", pkgid, "")) { g_dbus_method_invocation_return_value(invocation, g_variant_new("(i)", PKGMGR_R_ESYSTEM)); @@ -350,7 +360,7 @@ static int __handle_request_disable(uid_t uid, return -1; } - if (_pm_queue_push(target_uid, "", PKGMGR_REQUEST_TYPE_DISABLE, "pkg", + if (_pm_queue_push(target_uid, "", PKGMGR_REQUEST_TYPE_DISABLE, "none", pkgid, "")) { g_dbus_method_invocation_return_value(invocation, g_variant_new("(i)", PKGMGR_R_ESYSTEM)); @@ -363,6 +373,58 @@ static int __handle_request_disable(uid_t uid, return 0; } +static int __handle_request_enable_global_app(uid_t uid, + GDBusMethodInvocation *invocation, GVariant *parameters) +{ + uid_t target_uid = (uid_t)-1; + char *appid = NULL; + + g_variant_get(parameters, "(u&s)", &target_uid, &appid); + if (target_uid == (uid_t)-1 || appid == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ECOMM)); + return -1; + } + + if (_pm_queue_push(target_uid, "", PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP, "none", + appid, "")) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ESYSTEM)); + return -1; + } + + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_OK)); + + return 0; +} + +static int __handle_request_disable_global_app(uid_t uid, + GDBusMethodInvocation *invocation, GVariant *parameters) +{ + uid_t target_uid = (uid_t)-1; + char *appid = NULL; + + g_variant_get(parameters, "(u&s)", &target_uid, &appid); + if (target_uid == (uid_t)-1 || appid == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ECOMM)); + return -1; + } + + if (_pm_queue_push(target_uid, "", PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP, "none", + appid, "")) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ESYSTEM)); + return -1; + } + + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_OK)); + + return 0; +} + static int __handle_request_getsize(uid_t uid, GDBusMethodInvocation *invocation, GVariant *parameters) { @@ -668,6 +730,10 @@ static void __handle_method_call(GDBusConnection *connection, ret = __handle_request_getsize(uid, invocation, parameters); else if (g_strcmp0(method_name, "clearcache") == 0) ret = __handle_request_clearcache(uid, invocation, parameters); + else if (g_strcmp0(method_name, "enable_global_app") == 0) + ret = __handle_request_enable_global_app(uid, invocation, parameters); + else if (g_strcmp0(method_name, "disable_global_app") == 0) + ret = __handle_request_disable_global_app(uid, invocation, parameters); else if (g_strcmp0(method_name, "kill") == 0) ret = __handle_request_kill(uid, invocation, parameters); else if (g_strcmp0(method_name, "check") == 0) -- 2.7.4