diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-09-09 17:21:47 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-09-10 11:35:30 +0100 |
commit | 9219b4282cc9c6465dc1f9efd9e549c97bc6e3a9 (patch) | |
tree | a3b65c79933f3c5cd7d552a89f222ed8ffc72919 | |
parent | 74744b3a1b792895089d5104109e3b56eeedea11 (diff) | |
download | telepathy-mission-control-9219b4282cc9c6465dc1f9efd9e549c97bc6e3a9.tar.gz |
Service points: use tp_connection_dup_contact_by_id_async
tp_connection_request_handles is deprecated. Ideally, we should drop
this whole chunk of code, but it seems best to save that for
Telepathy 1.0.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=55391
Reviewed-by: Xavier Claessens <xavier.claessens@collabora.co.uk>
-rw-r--r-- | src/mcd-connection-priv.h | 3 | ||||
-rw-r--r-- | src/mcd-connection-service-points.c | 43 | ||||
-rw-r--r-- | src/mcd-connection.c | 7 | ||||
-rw-r--r-- | src/mcd-connection.h | 2 | ||||
-rw-r--r-- | tests/twisted/dispatcher/create-delayed-by-mini-plugin.py | 26 |
5 files changed, 39 insertions, 42 deletions
diff --git a/src/mcd-connection-priv.h b/src/mcd-connection-priv.h index c3866c32..ac44b529 100644 --- a/src/mcd-connection-priv.h +++ b/src/mcd-connection-priv.h @@ -58,9 +58,6 @@ G_GNUC_INTERNAL gboolean _mcd_connection_presence_info_is_ready (McdConnection * G_GNUC_INTERNAL void _mcd_connection_take_emergency_numbers (McdConnection *self, GSList *numbers); -G_GNUC_INTERNAL void _mcd_connection_take_emergency_handles (McdConnection *self, - TpIntset *handles); - G_GNUC_INTERNAL gboolean _mcd_connection_target_id_is_urgent (McdConnection *connection, const gchar *name); diff --git a/src/mcd-connection-service-points.c b/src/mcd-connection-service-points.c index 4ab6dc07..58b65f19 100644 --- a/src/mcd-connection-service-points.c +++ b/src/mcd-connection-service-points.c @@ -31,26 +31,22 @@ #include <telepathy-glib/telepathy-glib-dbus.h> static void -service_handles_fetched_cb (TpConnection *tp_conn, - TpHandleType handle_type, - guint n_handles, - const TpHandle *handles, - const gchar * const *ids, - const GError *error, - gpointer user_data G_GNUC_UNUSED, - GObject *weak) +service_point_contact_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) { - guint i; - McdConnection *connection = MCD_CONNECTION (weak); - TpIntset *e_handles = tp_intset_new (); - - if (error != NULL) - return; + McdConnection *connection = MCD_CONNECTION (user_data); + TpContact *contact = tp_connection_dup_contact_by_id_finish ( + TP_CONNECTION (source), result, NULL); - for (i = 0; i < n_handles; i++) - tp_intset_add (e_handles, handles[i]); + if (contact != NULL) + { + mcd_connection_add_emergency_handle (connection, + tp_contact_get_handle (contact)); + g_object_unref (contact); + } - _mcd_connection_take_emergency_handles (connection, e_handles); + g_object_unref (connection); } static void @@ -83,12 +79,17 @@ parse_services_list (McdConnection *connection, GSList *service; TpConnection *tp_conn = mcd_connection_get_tp_connection (connection); + /* FIXME: in 1.0, drop this and spec that when calling a service point, + * you should use TargetID. See + * https://bugs.freedesktop.org/show_bug.cgi?id=59162#c3 */ for (service = e_numbers; service != NULL; service =g_slist_next (service)) { - if (service->data != NULL) - tp_connection_request_handles (tp_conn, -1, TP_HANDLE_TYPE_CONTACT, - (const gchar *const *) service->data, - service_handles_fetched_cb, NULL, NULL, G_OBJECT (connection)); + const gchar * const *iter; + + for (iter = service->data; iter != NULL && *iter != NULL; iter++) + tp_connection_dup_contact_by_id_async (tp_conn, + *iter, 0, NULL, service_point_contact_cb, + g_object_ref (connection)); } _mcd_connection_take_emergency_numbers (connection, e_numbers); diff --git a/src/mcd-connection.c b/src/mcd-connection.c index c103e9af..1e5955a0 100644 --- a/src/mcd-connection.c +++ b/src/mcd-connection.c @@ -2356,13 +2356,12 @@ _mcd_connection_take_emergency_numbers (McdConnection *self, } void -_mcd_connection_take_emergency_handles (McdConnection *self, - TpIntset *handles) +mcd_connection_add_emergency_handle (McdConnection *self, + TpHandle handle) { if (self->priv->service_point_handles == NULL) self->priv->service_point_handles = tp_intset_new (); /* As above, we treat emergency numbers as "sticky". */ - tp_intset_union_update (self->priv->service_point_handles, handles); - tp_intset_destroy (handles); + tp_intset_add (self->priv->service_point_handles, handle); } diff --git a/src/mcd-connection.h b/src/mcd-connection.h index 90bfce75..347723cd 100644 --- a/src/mcd-connection.h +++ b/src/mcd-connection.h @@ -79,5 +79,7 @@ void mcd_connection_close (McdConnection *connection, McdChannel * mcd_connection_find_channel_by_path (McdConnection *connection, const gchar *object_path); +void mcd_connection_add_emergency_handle (McdConnection *self, TpHandle handle); + G_END_DECLS #endif /* __MCD_CONNECTION_H__ */ diff --git a/tests/twisted/dispatcher/create-delayed-by-mini-plugin.py b/tests/twisted/dispatcher/create-delayed-by-mini-plugin.py index 38b776e1..8c2925c1 100644 --- a/tests/twisted/dispatcher/create-delayed-by-mini-plugin.py +++ b/tests/twisted/dispatcher/create-delayed-by-mini-plugin.py @@ -56,10 +56,11 @@ def test(q, bus, mc): q.dbus_return(e.message, points, signature='v') # MC looks up the handles for these numbers - e = q.expect('dbus-method-call', path=conn.object_path, + patterns = [EventPattern('dbus-method-call', path=conn.object_path, interface=cs.CONN, method='RequestHandles', - args=[cs.HT_CONTACT, e_numbers], - handled=True) + args=[cs.HT_CONTACT, [num]], + handled=True) for num in e_numbers] + q.expect_many(*patterns) # the service points change e_numbers = ['911', '112', '999'] @@ -69,10 +70,11 @@ def test(q, bus, mc): 'ServicePointsChanged', points, signature='a((us)as)') # MC looks up the new handles - e = q.expect('dbus-method-call', path=conn.object_path, + patterns = [EventPattern('dbus-method-call', path=conn.object_path, interface=cs.CONN, method='RequestHandles', - args=[cs.HT_CONTACT, e_numbers], - handled=True) + args=[cs.HT_CONTACT, [num]], + handled=True) for num in e_numbers] + q.expect_many(*patterns) # MC used to critical if more than one emergency service point was # given by the CM. That's silly, so let's test it. @@ -87,15 +89,11 @@ def test(q, bus, mc): e_numbers = e_numbers1 + e_numbers2 - q.expect_many(EventPattern('dbus-method-call', path=conn.object_path, + patterns = [EventPattern('dbus-method-call', path=conn.object_path, interface=cs.CONN, method='RequestHandles', - args=[cs.HT_CONTACT, e_numbers1], - handled=True), - EventPattern('dbus-method-call', path=conn.object_path, - interface=cs.CONN, method='RequestHandles', - args=[cs.HT_CONTACT, e_numbers2], - handled=True), - ) + args=[cs.HT_CONTACT, [num]], + handled=True) for num in e_numbers] + q.expect_many(*patterns) fixed_properties = dbus.Dictionary({ cs.CHANNEL + '.TargetHandleType': cs.HT_CONTACT, |