[Pkg-telepathy-commits] [telepathy-glib] 80/111: add tp_account_channel_request_new_dbus_tube()

Simon McVittie smcv at debian.org
Wed Mar 19 18:07:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian
in repository telepathy-glib.

commit 6d1aed685b8860d2e0cc4d12b251d19616617819
Author: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>
Date:   Tue Feb 25 14:20:50 2014 +0100

    add tp_account_channel_request_new_dbus_tube()
---
 docs/reference/telepathy-glib-sections.txt |  1 +
 telepathy-glib/account-channel-request.c   | 49 ++++++++++++++++++++++++++++++
 telepathy-glib/account-channel-request.h   |  6 ++++
 tests/dbus/account-channel-request.c       | 36 ++++++++++++++++++++++
 4 files changed, 92 insertions(+)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 2026300..a34f649 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -6291,6 +6291,7 @@ tp_account_channel_request_set_file_transfer_timestamp
 tp_account_channel_request_set_file_transfer_uri
 tp_account_channel_request_set_file_transfer_hash
 tp_account_channel_request_new_stream_tube
+tp_account_channel_request_new_dbus_tube
 tp_account_channel_request_create_and_handle_channel_async
 tp_account_channel_request_create_and_handle_channel_finish
 tp_account_channel_request_ensure_and_handle_channel_async
diff --git a/telepathy-glib/account-channel-request.c b/telepathy-glib/account-channel-request.c
index deb9c36..a96fee9 100644
--- a/telepathy-glib/account-channel-request.c
+++ b/telepathy-glib/account-channel-request.c
@@ -2475,3 +2475,52 @@ tp_account_channel_request_new_stream_tube (TpAccount *account,
   g_hash_table_unref (request);
   return self;
 }
+
+/**
+ * tp_account_channel_request_new_dbus_tube:
+ * @account: a #TpAccount
+ * @service_name: the service name that will be used over the tube. It should be
+ * @user_action_time: the time of the user action that caused this request,
+ *  or one of the special values %TP_USER_ACTION_TIME_NOT_USER_ACTION or
+ *  %TP_USER_ACTION_TIME_CURRENT_TIME (see
+ *  #TpAccountChannelRequest:user-action-time)
+ *
+ * Convenience function to create a new #TpAccountChannelRequest object,
+ * which will yield a DBusTube channel.
+ *
+ * After creating the request, you will also need to set the "target"
+ * of the channel by calling one of the following functions:
+ *
+ * - tp_account_channel_request_set_target_contact()
+ * - tp_account_channel_request_set_target_id()
+ *
+ * Returns: a new #TpAccountChannelRequest object
+ *
+ * Since: UNRELEASED
+ */
+TpAccountChannelRequest *
+tp_account_channel_request_new_dbus_tube (TpAccount *account,
+    const gchar *service_name,
+    gint64 user_action_time)
+{
+  TpAccountChannelRequest *self;
+  GHashTable *request;
+
+  g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
+  g_return_val_if_fail (!tp_str_empty (service_name), NULL);
+
+  request = tp_asv_new (
+      TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
+          TP_IFACE_CHANNEL_TYPE_DBUS_TUBE,
+      TP_PROP_CHANNEL_TYPE_DBUS_TUBE_SERVICE_NAME, G_TYPE_STRING, service_name,
+      NULL);
+
+  self = g_object_new (TP_TYPE_ACCOUNT_CHANNEL_REQUEST,
+      "account", account,
+      "request", request,
+      "user-action-time", user_action_time,
+      NULL);
+
+  g_hash_table_unref (request);
+  return self;
+}
diff --git a/telepathy-glib/account-channel-request.h b/telepathy-glib/account-channel-request.h
index b670222..2c80430 100644
--- a/telepathy-glib/account-channel-request.h
+++ b/telepathy-glib/account-channel-request.h
@@ -166,6 +166,12 @@ TpAccountChannelRequest *tp_account_channel_request_new_stream_tube (
     const gchar *service,
     gint64 user_action_time) G_GNUC_WARN_UNUSED_RESULT;
 
+_TP_AVAILABLE_IN_0_24
+TpAccountChannelRequest *tp_account_channel_request_new_dbus_tube (
+    TpAccount *account,
+    const gchar *service_name,
+    gint64 user_action_time) G_GNUC_WARN_UNUSED_RESULT;
+
 /* Channel target (shared between all channel types) */
 
 _TP_AVAILABLE_IN_0_20
diff --git a/tests/dbus/account-channel-request.c b/tests/dbus/account-channel-request.c
index cff2b1b..bd8b945 100644
--- a/tests/dbus/account-channel-request.c
+++ b/tests/dbus/account-channel-request.c
@@ -459,6 +459,40 @@ test_stream_tube_props (Test *test,
 }
 
 static void
+test_dbus_tube_props (Test *test,
+    gconstpointer data G_GNUC_UNUSED)
+{
+  TpAccountChannelRequest *req;
+
+  req = tp_account_channel_request_new_dbus_tube (test->account,
+      "com.example.ServiceName", 0);
+
+  /* Ask to the CR to fire the signal */
+  tp_account_channel_request_set_request_property (req, "FireFailed",
+      g_variant_new_boolean (TRUE));
+
+  tp_account_channel_request_create_and_handle_channel_async (req,
+      NULL, create_and_handle_cb, test);
+
+  g_object_unref (req);
+
+  g_main_loop_run (test->mainloop);
+  g_assert_error (test->error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT);
+  g_assert (test->channel == NULL);
+
+  /* The request had the properties we wanted */
+  g_assert_cmpstr (tp_asv_get_string (test->cd_service->last_request,
+        TP_PROP_CHANNEL_CHANNEL_TYPE), ==, TP_IFACE_CHANNEL_TYPE_DBUS_TUBE);
+  g_assert_cmpstr (tp_asv_get_string (test->cd_service->last_request,
+        TP_PROP_CHANNEL_TYPE_DBUS_TUBE_SERVICE_NAME), ==,
+      "com.example.ServiceName");
+  g_assert_cmpuint (tp_asv_get_boolean (test->cd_service->last_request,
+        "FireFailed", NULL), ==, TRUE);
+  g_assert_cmpuint (tp_asv_size (test->cd_service->last_request), ==, 3);
+  g_assert_cmpuint (test->cd_service->last_user_action_time, ==, 0);
+}
+
+static void
 ensure_and_handle_cb (GObject *source,
     GAsyncResult *result,
     gpointer user_data)
@@ -1340,6 +1374,8 @@ main (int argc,
       setup, test_ft_props, teardown);
   g_test_add ("/account-channels/test-stream-tube-props", Test, NULL,
       setup, test_stream_tube_props, teardown);
+  g_test_add ("/account-channels/test-dbus-tube-props", Test, NULL,
+      setup, test_dbus_tube_props, teardown);
 
   return tp_tests_run_with_bus ();
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-telepathy/telepathy-glib.git



More information about the Pkg-telepathy-commits mailing list