changes to app signal work properly 73/60773/2 accepted/tizen/common/20160308.142757 accepted/tizen/ivi/20160309.004712 accepted/tizen/mobile/20160309.004616 accepted/tizen/tv/20160309.004633 accepted/tizen/wearable/20160309.004652 submit/tizen/20160308.025616
authorJunghyun Yeon <jungh.yeon@samsung.com>
Wed, 2 Mar 2016 07:01:19 +0000 (16:01 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Sun, 6 Mar 2016 03:38:30 +0000 (12:38 +0900)
Change-Id: Ie3fc60733b9bddeee92df09596145a85fec7afeb
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
client/src/pkgmgr.c
comm/pkgmgr_installer.c
comm/pkgmgr_installer.h

index bd6e164..446f77c 100644 (file)
@@ -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;
 }
 
index d4ab319..1922769 100644 (file)
@@ -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,
index 15b9514..aaa3856 100644 (file)
@@ -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