+static int __handle_request_set_app_icon(uid_t uid,
+ GDBusMethodInvocation *invocation, GVariant *parameters)
+{
+ uid_t target_uid = (uid_t)-1;
+ char *appid = NULL;
+ char *icon_path = NULL;
+ char *reqkey;
+
+ g_variant_get(parameters, "(uss)", &target_uid, &appid, &icon_path);
+ if (target_uid == (uid_t)-1 || appid == NULL || icon_path == NULL) {
+ g_dbus_method_invocation_return_value(invocation,
+ g_variant_new("(i)", PKGMGR_R_ECOMM));
+ return -1;
+ }
+
+ reqkey = __generate_reqkey("app_icon");
+ if (reqkey == NULL) {
+ g_dbus_method_invocation_return_value(invocation,
+ g_variant_new("(i)", PKGMGR_R_ENOMEM));
+ return -1;
+ }
+
+ if (_push_queue(target_uid, uid, reqkey,
+ REQUEST_TYPE_SET_APP_ICON,
+ "default", appid, icon_path, NULL)) {
+ 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;
+}
+