Apply tizen 3.0 based product patchsets
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-obex-server.c
index e46d1f8..6b0a7ff 100644 (file)
@@ -20,7 +20,7 @@
 #include <dlog.h>
 #include <string.h>
 #include <dirent.h>
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
 #include "bt-service-dpm.h"
 #endif
 
@@ -247,8 +247,9 @@ void _bt_obex_check_pending_transfer(const char *address)
 static char *__bt_get_remote_device_name(const char *bdaddress)
 {
        char *device_path = NULL;
-       char *name = NULL;
-       GVariant *value;
+       const gchar *name = NULL;
+       gchar *dev_name = NULL;
+       gsize name_len = 0;
        GVariant *result = NULL;
        GError *err = NULL;
        GDBusProxy *device_proxy;
@@ -271,42 +272,44 @@ static char *__bt_get_remote_device_name(const char *bdaddress)
        g_free(device_path);
        retv_if(device_proxy == NULL, NULL);
 
-       result = g_dbus_proxy_call_sync(device_proxy, "GetAll",
-                       g_variant_new("(s)", BT_DEVICE_INTERFACE),
-                       G_DBUS_CALL_FLAGS_NONE,
-                       DBUS_TIMEOUT, NULL,
-                       &err);
+       result = g_dbus_proxy_call_sync(device_proxy, "Get",
+                       g_variant_new("(ss)", BT_DEVICE_INTERFACE, "Alias"),
+                       G_DBUS_CALL_FLAGS_NONE, DBUS_TIMEOUT, NULL, &err);
        if (err) {
                BT_ERR("DBus Error : %s", err->message);
                g_clear_error(&err);
-               return NULL;
-       }
-       if (result == NULL) {
-               BT_ERR("g_dbus_proxy_call_sync function return NULL");
-               return NULL;
+       } else {
+               GVariant *value;
+               g_variant_get(result, "(v)", &value);
+               name = g_variant_get_string(value, &name_len);
+               INFO_SECURE("Alias Name [%s]", name);
+               if (name_len)
+                       dev_name = g_strdup(name);
+               g_variant_unref(value);
+               g_variant_unref(result);
        }
-       g_variant_get(result, "(@a{sv})", &value);
 
-       if (value) {
-               GVariant *temp_value = g_variant_lookup_value(value, "Alias",
-                       G_VARIANT_TYPE_STRING);
-               g_variant_get(temp_value, "s", &name);
-               if (temp_value)
-                       g_variant_unref(temp_value);
-
-               if (name != NULL)
-                       DBG_SECURE("Alias Name [%s]", name);
-               else {
-                       temp_value = g_variant_lookup_value(value, "Name", G_VARIANT_TYPE_STRING);
-                       g_variant_get(temp_value, "s", &name);
-                       if (temp_value)
-                               g_variant_unref(temp_value);
-                       DBG_SECURE("Name = %s", name);
+       if (name_len == 0) {
+               result = g_dbus_proxy_call_sync(device_proxy, "Get",
+                       g_variant_new("(ss)", BT_DEVICE_INTERFACE, "Name"),
+                       G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err);
+               if (err) {
+                       ERR("DBus Error : %s", err->message);
+                       g_clear_error(&err);
+               } else {
+                       GVariant *value;
+                       g_variant_get(result, "(v)", &value);
+                       name = g_variant_get_string(value, &name_len);
+                       INFO_SECURE("Name = %s", name);
+                       if (name_len)
+                               dev_name = g_strdup(name);
+                       g_variant_unref(value);
+                       g_variant_unref(result);
                }
        }
-       g_variant_unref(result);
+
        g_object_unref(device_proxy);
-       return name;
+       return dev_name;
 }
 
 static void __bt_get_remote_device_name_authinfo(const char *bdaddress,
@@ -407,7 +410,7 @@ static GDBusProxy *__bt_get_transfer_proxy(const char *transfer_path)
        GDBusProxy *proxy;
        GError *err = NULL;
 
-       conn = _bt_gdbus_get_session_gconn();
+       conn = _bt_gdbus_get_system_gconn();
        retv_if(conn == NULL, NULL);
 
        proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
@@ -416,7 +419,7 @@ static GDBusProxy *__bt_get_transfer_proxy(const char *transfer_path)
                                        BT_OBEX_TRANSFER_INTERFACE,
                                        NULL, &err);
 
-       if (err) {
+       if (proxy == NULL && err) {
                BT_ERR("Error : %s", err->message);
                g_clear_error(&err);
                return NULL;
@@ -430,7 +433,7 @@ static GDBusProxy *__bt_get_transfer_properties_proxy(const char *transfer_path)
        GDBusConnection *conn;
        GDBusProxy *proxy;
        GError *err = NULL;
-       conn = _bt_gdbus_get_session_gconn();
+       conn = _bt_gdbus_get_system_gconn();
        retv_if(conn == NULL, NULL);
 
        proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
@@ -438,7 +441,7 @@ static GDBusProxy *__bt_get_transfer_properties_proxy(const char *transfer_path)
                                        transfer_path,
                                        BT_PROPERTIES_INTERFACE,
                                        NULL, &err);
-       if (err) {
+       if (proxy == NULL && err) {
                BT_ERR("Error : %s", err->message);
                g_clear_error(&err);
                return NULL;
@@ -535,6 +538,9 @@ static gboolean __bt_authorize_cb(GDBusMethodInvocation *context,
        GVariant *param = NULL;
        GError *err = NULL;
        bt_session_info_t *session_info = NULL;
+#ifdef TIZEN_FEATURE_BT_DPM
+       int value = DPM_BT_ERROR;
+#endif
 
        BT_DBG(" path [%s] \n", path);
 
@@ -573,8 +579,9 @@ static gboolean __bt_authorize_cb(GDBusMethodInvocation *context,
 
        agent_info.auth_info->transfer_path = g_strdup(path);
 
-#ifdef TIZEN_DPM_ENABLE
-       if (_bt_dpm_get_allow_bluetooth_mode() == DPM_BT_HANDSFREE_ONLY) {
+#ifdef TIZEN_FEATURE_BT_DPM
+       _bt_dpm_get_allow_bluetooth_mode(&value);
+       if (value == DPM_BT_HANDSFREE_ONLY) {
                /* Free auth info in next function */
                _bt_obex_server_reject_authorize();
                return FALSE;
@@ -585,13 +592,12 @@ static gboolean __bt_authorize_cb(GDBusMethodInvocation *context,
                GVariant *val;
                gsize len = 0;
                while (g_variant_iter_loop(iter, "{sv}", &key, &val)) {
-                       if (g_strcmp0(key, "Name") == 0) {
+                       if (g_strcmp0(key, "Name") == 0)
                                agent_info.auth_info->filename = g_variant_dup_string(val, &len);
-                       } else if (g_strcmp0(key, "Address") == 0) {
+                       else if (g_strcmp0(key, "Address") == 0)
                                bdaddress = g_variant_dup_string(val, &len);
-                       } else if (g_strcmp0(key, "Size") == 0) {
+                       else if (g_strcmp0(key, "Size") == 0)
                                agent_info.auth_info->file_size = g_variant_get_uint64(val);
-                       }
                }
                g_variant_iter_free(iter);
        }
@@ -624,16 +630,17 @@ static gboolean __bt_authorize_cb(GDBusMethodInvocation *context,
        }
 
        if (session_info->authorized == FALSE) {
-               _bt_launch_system_popup(BT_AGENT_EVENT_EXCHANGE_REQUEST, device_name,
+               if (headed_plugin_info->plugin_headed_enabled)
+                       headed_plugin_info->headed_plugin->bt_launch_system_popup(BT_AGENT_EVENT_EXCHANGE_REQUEST, device_name,
                                        auth_info, NULL, NULL, BT_OBEX_SERVER_AGENT_PATH);
        } else {
                param = g_variant_new("(istss)", result,
-                       agent_info.auth_info->filename,
-                       agent_info.auth_info->file_size,
-                       agent_info.auth_info->address,
-                       agent_info.auth_info->device_name);
+                               agent_info.auth_info->filename,
+                               agent_info.auth_info->file_size,
+                               agent_info.auth_info->address,
+                               agent_info.auth_info->device_name);
                _bt_send_event(BT_OPP_SERVER_EVENT,
-                       BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE, param);
+                               BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE, param);
        }
 
        return TRUE;
@@ -812,9 +819,9 @@ void _bt_obex_transfer_completed(const char *transfer_path, gboolean success)
                        g_variant_builder_add(builder, "y", agent_info.auth_info->contact_auth_info[i]);
 
                param = g_variant_new("(isssstii(ay))", result,
+                                       transfer_info->device_name,
                                        transfer_info->filename,
                                        transfer_info->type,
-                                       transfer_info->device_name,
                                        transfer_info->address,
                                        transfer_info->file_size,
                                        transfer_info->transfer_id,
@@ -900,7 +907,7 @@ int _bt_register_obex_server(void)
        GError *g_error = NULL;
 
        /* Get the session bus. */
-       g_conn = _bt_gdbus_get_session_gconn();
+       g_conn = _bt_gdbus_get_system_gconn();
        retv_if(g_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
 
        _bt_obex_agent_new(BT_OBEX_SERVER_AGENT_PATH);
@@ -916,9 +923,8 @@ int _bt_register_obex_server(void)
                                                BT_OBEX_MANAGER,
                                                NULL, &g_error);
 
-       if (manager_proxy == NULL) {
+       if (manager_proxy == NULL)
                return BLUETOOTH_ERROR_INTERNAL;
-       }
 
        result = g_dbus_proxy_call_sync(manager_proxy, "RegisterAgent",
                                g_variant_new("(o)", BT_OBEX_SERVER_AGENT_PATH),
@@ -990,11 +996,10 @@ gboolean __bt_check_folder_path(const char *dest_path)
 char *__bt_transfer_folder_path(char *dest_path)
 {
        char *dst_path = (char *)g_malloc0(BT_OBEX_PATH_MAX_LENGTH);
-       if (g_str_has_prefix(dest_path, BT_OBEX_PATH_PREFIX)) {
+       if (g_str_has_prefix(dest_path, BT_OBEX_PATH_PREFIX))
                snprintf(dst_path, BT_OBEX_PATH_MAX_LENGTH, BT_OBEX_DEFAULT_PATH"%s", dest_path + strlen(BT_OBEX_PATH_PREFIX));
-       } else {
+       else
                snprintf(dst_path, BT_OBEX_PATH_MAX_LENGTH, "%s", dest_path);
-       }
 
        BT_INFO("obex transfed path : %s", dst_path);
        return dst_path;
@@ -1302,11 +1307,10 @@ int _bt_obex_server_is_activated(gboolean *activated)
 {
        BT_CHECK_PARAMETER(activated, return);
 
-       if (agent_info.custom_server) {
+       if (agent_info.custom_server)
                *activated = TRUE;
-       } else {
+       else
                *activated = FALSE;
-       }
 
        return BLUETOOTH_ERROR_NONE;
 }
@@ -1315,11 +1319,10 @@ int _bt_obex_server_check_allocation(gboolean *allocation)
 {
        BT_CHECK_PARAMETER(allocation, return);
 
-       if (agent_info.native_server || agent_info.custom_server) {
+       if (agent_info.native_server || agent_info.custom_server)
                *allocation = TRUE;
-       } else {
+       else
                *allocation = FALSE;
-       }
 
        return BLUETOOTH_ERROR_NONE;
 }
@@ -1349,11 +1352,10 @@ int _bt_obex_server_is_receiving(gboolean *receiving)
 {
        BT_CHECK_PARAMETER(receiving, return);
 
-       if (transfers == NULL || g_slist_length(transfers) == 0) {
+       if (transfers == NULL || g_slist_length(transfers) == 0)
                *receiving = FALSE;
-       } else {
+       else
                *receiving = TRUE;
-       }
 
        return BLUETOOTH_ERROR_NONE;
 }