Change logic related notification setting from package_id base to app_id base 19/96819/1
authorseungha.son <seungha.son@samsung.com>
Fri, 4 Nov 2016 07:24:18 +0000 (16:24 +0900)
committerseungha.son <seungha.son@samsung.com>
Thu, 10 Nov 2016 09:26:44 +0000 (18:26 +0900)
Signed-off-by: seungha.son <seungha.son@samsung.com>
Change-Id: Icc0ff1b114bfb6f84c5211ff9c6be5db8feda1b2

include/notification_service.h
src/notification_service.c

index 18f0b79..a841990 100755 (executable)
@@ -34,7 +34,7 @@ int notification_load_noti_by_priv_id(GVariant *parameters, GVariant **reply_bod
 int notification_load_grouping_list(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int notification_load_detail_list(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int notification_get_setting_array(GVariant *parameters, GVariant **reply_body, uid_t uid);
-int notification_get_setting_by_package_name(GVariant *parameters, GVariant **reply_body, uid_t uid);
+int notification_get_setting_by_appid(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int notification_load_system_setting(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int notification_add_noti_template(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int notification_get_noti_template(GVariant *parameters, GVariant **reply_body, pid_t pid, uid_t uid);
index a3c1d8a..2830f7f 100755 (executable)
@@ -133,8 +133,8 @@ static void _noti_dbus_method_call_handler(GDBusConnection *conn,
                ret = notification_load_detail_list(parameters, &reply_body, uid);
        else if (g_strcmp0(method_name, "get_setting_array") == 0)
                ret = notification_get_setting_array(parameters, &reply_body, uid);
-       else if (g_strcmp0(method_name, "get_setting_by_package_name") == 0)
-               ret = notification_get_setting_by_package_name(parameters, &reply_body, uid);
+       else if (g_strcmp0(method_name, "get_setting_by_appid") == 0)
+               ret = notification_get_setting_by_appid(parameters, &reply_body, uid);
        else if (g_strcmp0(method_name, "load_system_setting") == 0)
                ret = notification_load_system_setting(parameters, &reply_body, uid);
        else if (g_strcmp0(method_name, "save_as_template") == 0)
@@ -250,6 +250,7 @@ int notification_register_dbus_interface()
 
                        "        <method name='update_noti_setting'>"
                        "          <arg type='s' name='pkgname' direction='in'/>"
+                       "          <arg type='s' name='appid' direction='in'/>"
                        "          <arg type='i' name='allow_to_notify' direction='in'/>"
                        "          <arg type='i' name='do_not_disturb_except' direction='in'/>"
                        "          <arg type='i' name='visibility_class' direction='in'/>"
@@ -277,8 +278,8 @@ int notification_register_dbus_interface()
                        "          <arg type='a(v)' name='setting_arr' direction='out'/>"
                        "        </method>"
 
-                       "        <method name='get_setting_by_package_name'>"
-                       "          <arg type='s' name='pkgname' direction='in'/>"
+                       "        <method name='get_setting_by_appid'>"
+                       "          <arg type='s' name='appid' direction='in'/>"
                        "          <arg type='i' name='uid' direction='in'/>"
                        "          <arg type='v' name='setting' direction='out'/>"
                        "        </method>"
@@ -305,7 +306,7 @@ int notification_register_dbus_interface()
                        "        </method>"
 
                        "        <method name='get_noti_block_state'>"
-                       "          <arg type='s' name='pkgname' direction='in'/>"
+                       "          <arg type='s' name='appid' direction='in'/>"
                        "          <arg type='i' name='uid' direction='in'/>"
                        "          <arg type='v' name='state' direction='out'/>"
                        "        </method>"
@@ -770,6 +771,8 @@ int notification_get_setting_array(GVariant *parameters, GVariant **reply_body,
 
                        if (temp->package_name)
                                free(temp->package_name);
+                       if (temp->appid)
+                               free(temp->appid);
                }
                free(setting_array);
        }
@@ -783,22 +786,22 @@ int notification_get_setting_array(GVariant *parameters, GVariant **reply_body,
        return ret;
 }
 
-/* get_setting_array */
-int notification_get_setting_by_package_name(GVariant *parameters, GVariant **reply_body, uid_t uid)
+/* get_setting_by_appid */
+int notification_get_setting_by_appid(GVariant *parameters, GVariant **reply_body, uid_t uid)
 {
        int ret;
        GVariant *body;
-       char *pkgname = NULL;
+       char *appid = NULL;
        notification_setting_h setting = NULL;
        uid_t param_uid;
 
-       g_variant_get(parameters, "(&si)", &pkgname, &param_uid);
+       g_variant_get(parameters, "(&si)", &appid, &param_uid);
        ret = _validate_and_set_param_uid_with_uid(uid, &param_uid);
        if (ret != NOTIFICATION_ERROR_NONE)
                return ret;
-       DbgPrint("get setting by pkgname : %s", pkgname);
+       DbgPrint("get setting by appid : %s uid : %d", appid, param_uid);
 
-       ret = noti_setting_service_get_setting_by_package_name(pkgname, &setting, param_uid);
+       ret = noti_setting_service_get_setting_by_appid(appid, &setting, param_uid);
        if (ret == NOTIFICATION_ERROR_NONE) {
                body = notification_ipc_make_gvariant_from_setting(setting);
                notification_setting_free_notification(setting);
@@ -1128,6 +1131,7 @@ int notification_update_noti_setting(GVariant *parameters, GVariant **reply_body
 {
        int ret;
        char *pkgname = NULL;
+       char *appid = NULL;
        int allow_to_notify = 0;
        int do_not_disturb_except = 0;
        int visivility_class = 0;
@@ -1135,8 +1139,9 @@ int notification_update_noti_setting(GVariant *parameters, GVariant **reply_body
        int lock_screen_content_level = 0;
        uid_t param_uid;
 
-       g_variant_get(parameters, "(&siiiiii)",
+       g_variant_get(parameters, "(&s&siiiiii)",
                        &pkgname,
+                       &appid,
                        &allow_to_notify,
                        &do_not_disturb_except,
                        &visivility_class,
@@ -1148,10 +1153,10 @@ int notification_update_noti_setting(GVariant *parameters, GVariant **reply_body
        if (ret != NOTIFICATION_ERROR_NONE)
                return ret;
 
-       DbgPrint("package_name: [%s] allow_to_notify: [%d] do_not_disturb_except: [%d] visivility_class: [%d] pop_up_notification: [%d] lock_screen_content_level: [%d]\n",
-                       pkgname, allow_to_notify, do_not_disturb_except, visivility_class, pop_up_notification, lock_screen_content_level);
+       DbgPrint("package_name: [%s] appid: [%s] allow_to_notify: [%d] do_not_disturb_except: [%d] visivility_class: [%d] pop_up_notification: [%d] lock_screen_content_level: [%d]\n",
+                       pkgname, appid, allow_to_notify, do_not_disturb_except, visivility_class, pop_up_notification, lock_screen_content_level);
 
-       ret = notification_setting_db_update(pkgname, allow_to_notify, do_not_disturb_except, visivility_class,
+       ret = notification_setting_db_update(pkgname, appid, allow_to_notify, do_not_disturb_except, visivility_class,
                                             pop_up_notification, lock_screen_content_level, param_uid);
        if (ret != NOTIFICATION_ERROR_NONE) {
                ErrPrint("failed to setting db update : %d\n", ret);
@@ -1612,11 +1617,11 @@ int notification_get_block_state(GVariant *parameters, GVariant **reply_body, ui
        int dnd;
        int dnd_except;
        int allow_to_notify;
-       char *pkgname;
+       char *appid;
        uid_t param_uid;
        GVariant *body = NULL;
 
-       g_variant_get(parameters, "(&si)", &pkgname, &param_uid);
+       g_variant_get(parameters, "(&si)", &appid, &param_uid);
 
        ret = _validate_and_set_param_uid_with_uid(uid, &param_uid);
        if (ret != NOTIFICATION_ERROR_NONE) {
@@ -1624,7 +1629,7 @@ int notification_get_block_state(GVariant *parameters, GVariant **reply_body, ui
                return NOTIFICATION_ERROR_IO_ERROR;
        }
 
-       ret = notification_get_dnd_and_allow_to_notify(pkgname, &dnd, &dnd_except, &allow_to_notify, param_uid);
+       ret = notification_get_dnd_and_allow_to_notify(appid, &dnd, &dnd_except, &allow_to_notify, param_uid);
        if (ret != NOTIFICATION_ERROR_NONE) {
                ErrPrint("failed to get_dnd_and_allow_to_notify : %d\n", ret);
                return ret;
@@ -1834,14 +1839,17 @@ static void _notification_data_init(void)
 
 static int _package_install_cb(uid_t uid, const char *pkgname, enum pkgmgr_status status, double value, void *data)
 {
-       notification_setting_insert_package_for_uid(pkgname, uid);
+       if (status == PKGMGR_STATUS_END)
+               notification_setting_insert_package_for_uid(pkgname, uid);
        return 0;
 }
 
 static int _package_uninstall_cb(uid_t uid, const char *pkgname, enum pkgmgr_status status, double value, void *data)
 {
-       notification_setting_delete_package_for_uid(pkgname, uid);
-       notification_noti_delete_template(pkgname);
+       if (status == PKGMGR_STATUS_END) {
+               notification_setting_delete_package_for_uid(pkgname, uid);
+               notification_noti_delete_template(pkgname);
+       }
        return 0;
 }