Changed to post noti when called unregister dnd app 73/319873/2
authorSukhyungKang <shine.kang@samsung.com>
Tue, 5 Nov 2024 04:14:53 +0000 (13:14 +0900)
committerSukhyungKang <shine.kang@samsung.com>
Wed, 6 Nov 2024 07:49:21 +0000 (16:49 +0900)
- notification is posted when the unregister dnd app api is called.
if dnd app is terminated, notification is also posted.

Change-Id: Ifa274cb3f8b7740f2c1cc60a6bcd441a644b8a2b
Signed-off-by: SukhyungKang <shine.kang@samsung.com>
include/notification_service.h
src/notification_service.c

index 0683e71daf705f2238c48aca2dcfd3be7daa2bc6..f41285eed1bd6c189b1945fa0f02e8b106cfdbaa 100755 (executable)
@@ -59,6 +59,8 @@ int notification_register_dbus_interface();
 int notification_delete_noti_by_app_id(const char *app_id, uid_t uid);
 int notification_register_dnd_app(GVariant *parameters, GVariant **reply_body,
                const char *sender, pid_t pid, uid_t uid);
+int notification_unregister_dnd_app(GVariant *parameters, GVariant **reply_body,
+               const char *sender, pid_t pid, uid_t uid);
 
 #ifdef __cplusplus
 }
index 847fc6cbe51103ab2288aa70cdba891abffcbb54..0e00aa1ea8605239ad046eb0d4d18fcca47c3e7b 100644 (file)
@@ -85,6 +85,7 @@ static int _delete_noti(const char *app_id, int priv_id, uid_t uid);
 static bool _is_dnd_app_exist();
 static void __delete_dnd_app_info(pid_t pid);
 static dnd_app_info_s *__find_dnd_app_info_by_pid(pid_t pid);
+static void _unregister_dnd_app(int pid);
 
 /*!
  * SERVICE HANDLER
@@ -215,6 +216,8 @@ static void _noti_dbus_method_call_handler(GDBusConnection *conn,
                ret = notification_del_noti_by_display_applist(parameters, &reply_body, uid);
        } else if (g_strcmp0(method_name, "register_dnd_app") == 0) {
                ret = notification_register_dnd_app(parameters, &reply_body, sender, pid, uid);
+       } else if (g_strcmp0(method_name, "unregister_dnd_app") == 0) {
+               ret = notification_unregister_dnd_app(parameters, &reply_body, sender, pid, uid);
        }
 
        if (ret == NOTIFICATION_ERROR_NONE) {
@@ -428,6 +431,11 @@ int notification_register_dbus_interface(void)
                        "          <arg type='i' name='pid' direction='in'/>"
                        "          <arg type='i' name='uid' direction='in'/>"
                        "        </method>"
+
+                       "        <method name='unregister_dnd_app'>"
+                       "          <arg type='i' name='pid' direction='in'/>"
+                       "          <arg type='i' name='uid' direction='in'/>"
+                       "        </method>"
                        "  </interface>"
                        "  </node>";
 
@@ -552,7 +560,7 @@ static void __add_disturb_noti_info(int priv_id, int status)
        __disturb_noti_list = g_list_append(__disturb_noti_list, noti_info);
 }
 
-void _aul_app_dead_event_cb_v2(int pid, int status, void* user_data)
+static void _unregister_dnd_app(int pid)
 {
        int ret;
        dnd_app_info_s *info;
@@ -560,7 +568,7 @@ void _aul_app_dead_event_cb_v2(int pid, int status, void* user_data)
        int latest_priv_id = NOTIFICATION_PRIV_ID_NONE;
        int latest_status = NOTIFICATION_OP_NONE;
 
-       WARN("add dead, pid : %d, status : %d", pid, status);
+       WARN("unregister dnd app : %d", pid);
 
        info = __find_dnd_app_info_by_pid(pid);
        if (info == NULL || info->busname == NULL) {
@@ -590,6 +598,13 @@ void _aul_app_dead_event_cb_v2(int pid, int status, void* user_data)
        }
 }
 
+static void _aul_app_dead_event_cb_v2(int pid, int status, void* user_data)
+{
+       WARN("app dead, pid : %d, status : %d", pid, status);
+
+       _unregister_dnd_app(pid);
+}
+
 int _notification_launch_viewer(notification_h noti, int priv_id,
                notification_op_type_e status, uid_t uid)
 {
@@ -3063,4 +3078,29 @@ int notification_register_dnd_app(GVariant *parameters, GVariant **reply_body,
        return NOTIFICATION_ERROR_NONE;
 }
 
+int notification_unregister_dnd_app(GVariant *parameters, GVariant **reply_body,
+               const char *sender, pid_t pid, uid_t uid)
+{
+       uid_t param_uid;
+       pid_t param_pid;
+
+       /* is parameter necessary ?? */
+       /* is it necessary to check valid uid, pid ?? */
+       g_variant_get(parameters, "(ii)", &param_uid, &param_pid);
+
+       WARN("unregister dnd app, uid : %d, param uid : %d, pid : %d, param pid : %d",
+                       uid, param_uid, pid, param_pid);
+
+       if (sender == NULL)
+               return NOTIFICATION_ERROR_INVALID_PARAMETER;
+
+       _unregister_dnd_app((int)pid);
+
+       *reply_body = g_variant_new("()");
+       if (*reply_body == NULL)
+               ERR("Failed to make reply_body");
+
+       return NOTIFICATION_ERROR_NONE;
+}
+
 /* End of a file */