Add request type and codes for set app label 80/100580/3
authorJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 28 Nov 2016 12:02:27 +0000 (21:02 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Tue, 29 Nov 2016 06:34:08 +0000 (22:34 -0800)
Related changes:
[slp-pkgmgr] : https://review.tizen.org/gerrit/100579

Change-Id: Ib2b395db143d6230817884c922e09c37f7289b38
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
include/pkgmgr-server.h
src/pkgmgr-server.c
src/request.c

index 895c9bd..210a8a4 100644 (file)
@@ -77,6 +77,7 @@ enum request_type {
        REQUEST_TYPE_SET_RESTRICTION_MODE,
        REQUEST_TYPE_UNSET_RESTRICTION_MODE,
        REQUEST_TYPE_GET_RESTRICTION_MODE,
+       REQUEST_TYPE_SET_APP_LABEL,
 };
 
 gboolean queue_job(void *data);
index e4c312f..04a80ca 100644 (file)
@@ -1260,6 +1260,18 @@ static int __process_get_restriction_mode(struct backend_job *job)
        return ret;
 }
 
+static int __process_set_app_label(struct backend_job *job)
+{
+       int ret;
+       int mode = -1;
+
+       ret = pkgmgr_parser_update_app_label_info_in_usr_db(job->pkgid, job->appid,
+                       job->args);
+       _return_value_to_caller(job->req_id, g_variant_new("(i)", ret));
+
+       return ret;
+}
+
 gboolean queue_job(void *data)
 {
        struct backend_job *job = NULL;
@@ -1416,6 +1428,9 @@ gboolean queue_job(void *data)
                ret = __process_get_restriction_mode(job);
                _free_backend_job(job);
                break;
+       case REQUEST_TYPE_SET_APP_LABEL:
+               ret = __process_set_app_label(job);
+               _free_backend_job(job);
        default:
                ret = -1;
                break;
index 3269b24..1213bc9 100644 (file)
@@ -160,6 +160,12 @@ static const char instropection_xml[] =
        "      <arg type='i' name='result' direction='out'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
+       "    <method name='set_app_label'>"
+       "      <arg type='u' name='uid' direction='in'/>"
+       "      <arg type='s' name='appid' direction='in'/>"
+       "      <arg type='s' name='label' direction='in'/>"
+       "      <arg type='i' name='ret' direction='out'/>"
+       "    </method>"
        "  </interface>"
        "</node>";
 static GDBusNodeInfo *instropection_data;
@@ -1331,6 +1337,44 @@ static int __handle_request_get_restriction_mode(uid_t caller_uid,
        return 0;
 }
 
+static int __handle_request_set_app_label(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
+{
+       uid_t target_uid = (uid_t)-1;
+       char *appid = NULL;
+       char *label = NULL;
+       char *reqkey;
+
+       g_variant_get(parameters, "(uss)", &target_uid, &appid, &label);
+       if (target_uid == (uid_t)-1 || appid == NULL || label == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ECOMM));
+               return -1;
+       }
+
+       reqkey = __generate_reqkey("appid");
+       if (reqkey == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ENOMEM));
+               return -1;
+       }
+
+       if (_push_queue(target_uid, reqkey,
+                               REQUEST_TYPE_SET_APP_LABEL,
+                               "default", appid, label)) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ESYSTEM));
+               free(reqkey);
+               return -1;
+       }
+
+       if (!g_hash_table_insert(req_table, (gpointer)reqkey,
+                               (gpointer)invocation))
+               ERR("reqkey already exists");
+
+       return 0;
+}
+
 static uid_t __get_caller_uid(GDBusConnection *connection, const char *name)
 {
        GError *err = NULL;
@@ -1429,6 +1473,8 @@ static void __handle_method_call(GDBusConnection *connection,
        else if (g_strcmp0(method_name, "get_restriction_mode") == 0)
                ret = __handle_request_get_restriction_mode(uid, invocation,
                                parameters);
+       else if (g_strcmp0(method_name, "set_app_label") == 0)
+               ret = __handle_request_set_app_label(uid, invocation, parameters);
        else
                ret = -1;