Add methods to get notification block state 11/84011/5
authorseungha.son <seungha.son@samsung.com>
Tue, 16 Aug 2016 08:13:21 +0000 (17:13 +0900)
committerseungha.son <seungha.son@samsung.com>
Thu, 25 Aug 2016 07:21:06 +0000 (16:21 +0900)
 - https://review.tizen.org/gerrit/#/c/84006/

Signed-off-by: seungha.son <seungha.son@samsung.com>
Change-Id: I1b47441cc3d701ca7ff40274f47a78071605ad32

data-provider-master.conf.in
include/notification_service.h
src/notification_service.c

index 742f584..38cd0e9 100644 (file)
@@ -16,6 +16,7 @@
                <check send_destination="org.tizen.data_provider_service" send_interface="org.tizen.data_provider_noti_service" send_member="load_noti_by_tag" privilege="http://tizen.org/privilege/notification"/>
                <check send_destination="org.tizen.data_provider_service" send_interface="org.tizen.data_provider_noti_service" send_member="save_as_template" privilege="http://tizen.org/privilege/notification"/>
                <check send_destination="org.tizen.data_provider_service" send_interface="org.tizen.data_provider_noti_service" send_member="create_from_template" privilege="http://tizen.org/privilege/notification"/>
+               <check send_destination="org.tizen.data_provider_service" send_interface="org.tizen.data_provider_noti_service" send_member="get_noti_block_state" privilege="http://tizen.org/privilege/notification"/>
                <check send_destination="org.tizen.data_provider_service" send_interface="org.tizen.data_provider_badge_service" privilege="http://tizen.org/privilege/notification"/>
                <check send_destination="org.tizen.data_provider_service" send_interface="org.tizen.data_provider_shortcut_service" privilege="http://tizen.org/privilege/shortcut"/>
        </policy>
index bb15042..9dca6c5 100755 (executable)
@@ -39,6 +39,7 @@ int notification_load_system_setting(GVariant *parameters, GVariant **reply_body
 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);
 int notification_get_noti_package_template(GVariant *parameters, GVariant **reply_body, uid_t uid);
+int notification_get_block_state(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int notification_register_dbus_interface();
 
 /* End of a file */
index ca60f1a..e2d41d3 100755 (executable)
@@ -135,6 +135,8 @@ static void _noti_dbus_method_call_handler(GDBusConnection *conn,
                ret = notification_get_noti_template(parameters, &reply_body, pid, uid);
        else if (g_strcmp0(method_name, "create_from_package_template") == 0)
                ret = notification_get_noti_package_template(parameters, &reply_body, uid);
+       else if (g_strcmp0(method_name, "get_noti_block_state") == 0)
+               ret = notification_get_block_state(parameters, &reply_body, uid);
 
        if (ret == NOTIFICATION_ERROR_NONE) {
                DbgPrint("notification service success : %d", ret);
@@ -287,6 +289,12 @@ int notification_register_dbus_interface()
                        "          <arg type='v' name='noti' direction='out'/>"
                        "        </method>"
 
+                       "        <method name='get_noti_block_state'>"
+                       "          <arg type='s' name='pkgname' direction='in'/>"
+                       "          <arg type='i' name='uid' direction='in'/>"
+                       "          <arg type='v' name='state' direction='out'/>"
+                       "        </method>"
+
                        "        <method name='post_toast'>"
                        "        </method>"
                        "  </interface>"
@@ -1377,6 +1385,43 @@ int notification_get_noti_package_template(GVariant *parameters, GVariant **repl
        }
 
        DbgPrint("_get_noti_package_template done !!");
+
+       return ret;
+}
+
+int notification_get_block_state(GVariant *parameters, GVariant **reply_body, uid_t uid)
+{
+       int ret;
+       int dnd;
+       int dnd_except;
+       int allow_to_notify;
+       char *pkgname;
+       uid_t param_uid;
+       GVariant *body = NULL;
+
+       g_variant_get(parameters, "(&si)", &pkgname, &param_uid);
+
+       ret = _validate_and_set_param_uid_with_uid(uid, &param_uid);
+       if (ret != NOTIFICATION_ERROR_NONE) {
+               ErrPrint("_validate_uid fail ret : %d", ret);
+               return NOTIFICATION_ERROR_IO_ERROR;
+       }
+
+       ret = notification_get_dnd_and_allow_to_notify(pkgname, &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;
+       }
+
+       body = g_variant_new("(iii)", dnd, dnd_except, allow_to_notify);
+       *reply_body = g_variant_new("(v)", body);
+
+       if (*reply_body == NULL) {
+               ErrPrint("cannot make reply_body");
+               return NOTIFICATION_ERROR_OUT_OF_MEMORY;
+       }
+
+       DbgPrint("get notification block state done");
        return ret;
 }