[Telepathy-commits] [telepathy-salut/master] Stop using the workaround for bug #17329
Alban Crequy
alban.crequy at collabora.co.uk
Thu Feb 26 11:20:15 PST 2009
- Update the spec in extensions/:
There was a bug in dbus-glib that prevent to use the right type:
Instead of a{ua(a{sv}as)}, we used a(ua{sv}as) as a workaround.
See http://bugs.freedesktop.org/show_bug.cgi?id=17329
Now there is a fix, so we don't use the workaround anymore.
- Update the implementation for the new spec
- Update the unit test
This commit is similar to the following commit in telepathy-gabble:
|commit 6971f458ad0816e40807549202d8a4ffe58b72aa
|Author: Alban Crequy <alban.crequy at collabora.co.uk>
|Date: Wed Oct 8 11:30:59 2008 +0100
---
.../Connection_Interface_Contact_Capabilities.xml | 76 ++++++---
src/salut-connection.c | 14 +-
src/salut-im-manager.c | 5 +-
src/salut-tubes-manager.c | 5 +-
tests/twisted/avahi/test-caps-tubes.py | 176 ++++++++++----------
5 files changed, 153 insertions(+), 123 deletions(-)
diff --git a/extensions/Connection_Interface_Contact_Capabilities.xml b/extensions/Connection_Interface_Contact_Capabilities.xml
index 55b3256..4d1d632 100644
--- a/extensions/Connection_Interface_Contact_Capabilities.xml
+++ b/extensions/Connection_Interface_Contact_Capabilities.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" ?>
<node name="/Connection_Interface_Contact_Capabilities" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
- <tp:copyright> Copyright (C) 2005, 2006 Collabora Limited </tp:copyright>
- <tp:copyright> Copyright (C) 2005, 2006 Nokia Corporation </tp:copyright>
+ <tp:copyright> Copyright (C) 2005, 2006, 2008 Collabora Limited </tp:copyright>
+ <tp:copyright> Copyright (C) 2005, 2006, 2008 Nokia Corporation </tp:copyright>
<tp:copyright> Copyright (C) 2006 INdT </tp:copyright>
<tp:license xmlns="http://www.w3.org/1999/xhtml">
<p>This library is free software; you can redistribute it and/or
@@ -22,25 +22,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>An interface for connections where it is possible to know what channel
- classes may be created before the request is made to the connection
- object. Each capability represents a commitment by the connection
- manager that it will ordinarily be able to create a channel when given
- a request with the properties defined by the channel class.</p>
+ <p>An interface to get contact capabilities in order to know what channel
+ classes may be created with a contact before the request is made to the
+ connection object. Each capability represents a commitment by the
+ connection manager that it will ordinarily be able to create a channel
+ with a contact when given a request with the properties defined by the
+ channel class.</p>
<p>Capabilities pertain to particular contact handles, and represent
activities such as having a text chat, a voice call with the user or a
stream tube of a defined type.</p>
- <p>This interface also provides for user interfaces notifying the
- connection manager of what capabilities to advertise for the user. This
- is done by using the SetSelfCapabilities method, and deals with
+ <p>This interface also enables user interfaces to notify the connection
+ manager what capabilities to advertise for the user to other contacts.
+ This is done by using the SetSelfCapabilities method, and deals with
channel properties values pertaining to them which are implemented by
available client processes.</p>
</tp:docstring>
- <method name="SetSelfCapabilities">
+ <method name="SetSelfCapabilities"
+ tp:name-for-bindings="Set_Self_Capabilities">
<arg direction="in" name="caps" type="aa{sv}"
tp:type="String_Variant_Map[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
@@ -68,7 +70,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
- <method name="GetContactCapabilities">
+ <method name="GetContactCapabilities"
+ tp:name-for-bindings="Get_Contact_Capabilities">
<arg direction="in" name="handles" type="au" tp:type="Contact_Handle[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>An array of contact handles for this connection.</p>
@@ -76,8 +79,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<p>The handle zero MUST NOT be included in the request.</p>
</tp:docstring>
</arg>
- <arg direction="out" type="a(ua{sv}as)"
- tp:type="Enhanced_Contact_Capability[]">
+ <!-- There was a bug in dbus-glib that prevent to use the right type:
+ Instead of a{ua(a{sv}as)}, we used a(ua{sv}as) as a workaround.
+ See http://bugs.freedesktop.org/show_bug.cgi?id=17329
+ Now there is a fix, so we don't use the workaround anymore.
+ -->
+ <arg direction="out" type="a{ua(a{sv}as)}"
+ tp:type="Contact_Handle_Enhanced_Contact_Capability_Map">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
An array of structures containing:
<ul>
@@ -99,8 +107,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
- <signal name="ContactCapabilitiesChanged">
- <arg name="caps" type="a(ua{sv}as)" tp:type="Enhanced_Contact_Capability[]">
+ <signal name="ContactCapabilitiesChanged"
+ tp:name-for-bindings="Contact_Capabilities_Changed">
+ <arg name="handle" type="u" tp:type="Contact_Handle">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>A contact handle.</p>
+ </tp:docstring>
+ </arg>
+ <arg name="caps" type="a(a{sv}as)"
+ tp:type="Enhanced_Contact_Capability[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
All the capabilities of the contact
</tp:docstring>
@@ -111,7 +126,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</signal>
- <tp:struct name="Enhanced_Contact_Capability" array-name="Enhanced_Contact_Capability_List">
+ <tp:struct name="Enhanced_Contact_Capability"
+ array-name="Enhanced_Contact_Capability_List">
<tp:docstring>
A struct representing a capability posessed by a contact,
as returned by GetContactCapabilities on the ContactCapabilities
@@ -121,7 +137,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
the request contains a property which does not belong to
Fixed_Properties nor to Allowed_Properties, the request will fail.
</tp:docstring>
- <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
<tp:member type="a{sv}" tp:type="Channel_Class"
name="Fixed_Properties">
<tp:docstring>
@@ -135,15 +150,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:member>
</tp:struct>
- <tp:struct name="Contact_Capability_Change" array-name="Contact_Capability_Change_List">
- <tp:docstring>A struct representing a change to one of a contact's capabilities, as
- seen in the ContactCapabilitiesChanged signal on the ContactCapabilities
- interface.</tp:docstring>
- <tp:member type="a(ua{sv}as)" tp:type="Enhanced_Contact_Capability[]"
- name="Removed_Capabilities"/>
- <tp:member type="a(ua{sv}as)" tp:type="Enhanced_Contact_Capability[]"
- name="Added_Capabilities"/>
- </tp:struct>
+ <tp:mapping name="Contact_Handle_Enhanced_Contact_Capability_Map"
+ array-name="Contact_Handle_Enhanced_Contact_Capability_Map_List">
+ <tp:docstring>A mapping from contact handle to their capabilities.
+ </tp:docstring>
+ <tp:member type="u" name="Key" tp:type="Contact_Handle">
+ <tp:docstring>
+ A contact handle.
+ </tp:docstring>
+ </tp:member>
+ <tp:member type="a(a{sv}as)" name="Value"
+ tp:type="Enhanced_Contact_Capability[]">
+ <tp:docstring>
+ The contact capabilities.
+ </tp:docstring>
+ </tp:member>
+ </tp:mapping>
</interface>
</node>
diff --git a/src/salut-connection.c b/src/salut-connection.c
index 9e2f8e6..58ecc51 100644
--- a/src/salut-connection.c
+++ b/src/salut-connection.c
@@ -1947,7 +1947,7 @@ salut_connection_get_contact_capabilities (
TpHandleRepoIface *contact_handles = tp_base_connection_get_handles (base,
TP_HANDLE_TYPE_CONTACT);
guint i;
- GPtrArray *ret;
+ GHashTable *ret;
GError *error = NULL;
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -1959,19 +1959,23 @@ salut_connection_get_contact_capabilities (
return;
}
- ret = g_ptr_array_new ();
+ ret = g_hash_table_new_full (NULL, NULL, NULL,
+ (GDestroyNotify) salut_free_enhanced_contact_capabilities);
for (i = 0; i < handles->len; i++)
{
+ GPtrArray *arr = g_ptr_array_new ();
TpHandle handle = g_array_index (handles, TpHandle, i);
- salut_connection_get_handle_contact_capabilities (self, handle, ret);
+ salut_connection_get_handle_contact_capabilities (self, handle, arr);
+
+ g_hash_table_insert (ret, GINT_TO_POINTER (handle), arr);
}
salut_svc_connection_interface_contact_capabilities_return_from_get_contact_capabilities
(context, ret);
- salut_free_enhanced_contact_capabilities (ret);
+ g_hash_table_destroy (ret);
}
@@ -2018,7 +2022,7 @@ _emit_contact_capabilities_changed (SalutConnection *conn,
salut_connection_get_handle_contact_capabilities (conn, handle, ret);
salut_svc_connection_interface_contact_capabilities_emit_contact_capabilities_changed (
- conn, ret);
+ conn, handle, ret);
salut_free_enhanced_contact_capabilities (ret);
}
diff --git a/src/salut-im-manager.c b/src/salut-im-manager.c
index 057c32f..f5f462b 100644
--- a/src/salut-im-manager.c
+++ b/src/salut-im-manager.c
@@ -692,9 +692,8 @@ salut_im_factory_get_contact_caps (SalutCapsChannelManager *manager,
target_handle_type_value);
dbus_g_type_struct_set (&monster,
- 0, handle,
- 1, fixed_properties,
- 2, text_allowed_properties,
+ 0, fixed_properties,
+ 1, text_allowed_properties,
G_MAXUINT);
g_hash_table_destroy (fixed_properties);
diff --git a/src/salut-tubes-manager.c b/src/salut-tubes-manager.c
index cf5481e..715ca8c 100644
--- a/src/salut-tubes-manager.c
+++ b/src/salut-tubes-manager.c
@@ -1121,9 +1121,8 @@ add_service_to_array (gchar *service,
target_handle_type_value);
dbus_g_type_struct_set (&monster,
- 0, handle,
- 1, fixed_properties,
- 2, tube_allowed_properties,
+ 0, fixed_properties,
+ 1, tube_allowed_properties,
G_MAXUINT);
g_hash_table_destroy (fixed_properties);
diff --git a/tests/twisted/avahi/test-caps-tubes.py b/tests/twisted/avahi/test-caps-tubes.py
index 5c0092a..1edac93 100644
--- a/tests/twisted/avahi/test-caps-tubes.py
+++ b/tests/twisted/avahi/test-caps-tubes.py
@@ -154,7 +154,8 @@ def receive_presence_and_ask_caps(q, stream, service):
EventPattern('service-resolved', service=service),
EventPattern('dbus-signal', signal='ContactCapabilitiesChanged')
)
- signaled_caps = event_dbus.args[0]
+ assert event_dbus.args[0] == 1
+ signaled_caps = event_dbus.args[1]
hash = txt_get_key(event_avahi.txt, "hash")
ver = txt_get_key(event_avahi.txt, "ver")
@@ -238,8 +239,8 @@ def test_tube_caps_from_contact(q, bus, conn, service,
sync_stream(q, incoming)
# no special capabilities
- basic_caps = [(contact_handle, text_fixed_properties,
- text_allowed_properties)]
+ basic_caps = dbus.Dictionary({contact_handle:
+ [(text_fixed_properties, text_allowed_properties)]})
caps = conn_caps_iface.GetContactCapabilities([contact_handle])
assert caps == basic_caps, caps
# test again, to check GetContactCapabilities does not have side effect
@@ -249,7 +250,8 @@ def test_tube_caps_from_contact(q, bus, conn, service,
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[contact_handle], [caps_iface], False) \
[contact_handle][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[contact_handle], \
+ caps_via_contacts_iface
# send presence with 1 stream tube cap
txt_record['ver'] = 'njTWnNVMGeDjS8+4TkMuMX6Z/Ug='
@@ -271,16 +273,17 @@ def test_tube_caps_from_contact(q, bus, conn, service,
incoming.send(result)
event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
- signaled_caps = event.args[0]
+ assert event.args[0] == contact_handle
+ signaled_caps = event.args[1]
assert len(signaled_caps) == 2, signaled_caps # basic caps + daap
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
# daap capabilities
- daap_caps = [
- (contact_handle, text_fixed_properties, text_allowed_properties),
- (contact_handle, daap_fixed_properties, daap_allowed_properties)]
+ daap_caps = dbus.Dictionary({contact_handle:
+ [(text_fixed_properties, text_allowed_properties),
+ (daap_fixed_properties, daap_allowed_properties)]})
caps = conn_caps_iface.GetContactCapabilities([contact_handle])
assert caps == daap_caps, caps
# test again, to check GetContactCapabilities does not have side effect
@@ -290,7 +293,8 @@ def test_tube_caps_from_contact(q, bus, conn, service,
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[contact_handle], [caps_iface], False) \
[contact_handle][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[contact_handle], \
+ caps_via_contacts_iface
# send presence with 1 D-Bus tube cap
txt_record['ver'] = '8/mwj7yF0K23YT6GurBXI1X4hd4='
@@ -312,16 +316,17 @@ def test_tube_caps_from_contact(q, bus, conn, service,
incoming.send(result)
event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
- signaled_caps = event.args[0]
+ assert event.args[0] == contact_handle
+ signaled_caps = event.args[1]
assert len(signaled_caps) == 2, signaled_caps # basic caps + Xiangqi
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
# xiangqi capabilities
- xiangqi_caps = [
- (contact_handle, text_fixed_properties, text_allowed_properties),
- (contact_handle, xiangqi_fixed_properties, xiangqi_allowed_properties)]
+ xiangqi_caps = dbus.Dictionary({contact_handle:
+ [(text_fixed_properties, text_allowed_properties),
+ (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
caps = conn_caps_iface.GetContactCapabilities([contact_handle])
assert caps == xiangqi_caps, caps
# test again, to check GetContactCapabilities does not have side effect
@@ -331,7 +336,8 @@ def test_tube_caps_from_contact(q, bus, conn, service,
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[contact_handle], [caps_iface], False) \
[contact_handle][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[contact_handle], \
+ caps_via_contacts_iface
# send presence with both D-Bus and stream tube caps
txt_record['ver'] = 'moS31cvk2kf9Zka4gb6ncj2VJCo='
@@ -355,20 +361,21 @@ def test_tube_caps_from_contact(q, bus, conn, service,
incoming.send(result)
event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
- signaled_caps = event.args[0]
+ assert event.args[0] == contact_handle
+ signaled_caps = event.args[1]
assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
- assert signaled_caps[2][1] \
+ assert signaled_caps[2][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
# daap + xiangqi capabilities
- daap_xiangqi_caps = [
- (contact_handle, text_fixed_properties, text_allowed_properties),
- (contact_handle, daap_fixed_properties, daap_allowed_properties),
- (contact_handle, xiangqi_fixed_properties, xiangqi_allowed_properties)]
+ daap_xiangqi_caps = dbus.Dictionary({contact_handle:
+ [(text_fixed_properties, text_allowed_properties),
+ (daap_fixed_properties, daap_allowed_properties),
+ (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
caps = conn_caps_iface.GetContactCapabilities([contact_handle])
assert caps == daap_xiangqi_caps, caps
# test again, to check GetContactCapabilities does not have side effect
@@ -378,7 +385,8 @@ def test_tube_caps_from_contact(q, bus, conn, service,
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[contact_handle], [caps_iface], False) \
[contact_handle][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[contact_handle], \
+ caps_via_contacts_iface
# send presence with 4 tube caps
txt_record['ver'] = '4uwiaJY110AjLEFSIeu4/mVJ8wc='
@@ -406,29 +414,30 @@ def test_tube_caps_from_contact(q, bus, conn, service,
incoming.send(result)
event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
- signaled_caps = event.args[0]
+ assert event.args[0] == contact_handle
+ signaled_caps = event.args[1]
assert len(signaled_caps) == 5, signaled_caps # basic caps + 4 tubes
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
- assert signaled_caps[2][1] \
+ assert signaled_caps[2][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'http'
- assert signaled_caps[3][1] \
+ assert signaled_caps[3][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
- assert signaled_caps[4][1] \
+ assert signaled_caps[4][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Go'
# http + daap + xiangqi + go capabilities
- all_tubes_caps = [
- (contact_handle, text_fixed_properties, text_allowed_properties),
- (contact_handle, daap_fixed_properties, daap_allowed_properties),
- (contact_handle, http_fixed_properties, http_allowed_properties),
- (contact_handle, xiangqi_fixed_properties,
+ all_tubes_caps = dbus.Dictionary({contact_handle:
+ [(text_fixed_properties, text_allowed_properties),
+ (daap_fixed_properties, daap_allowed_properties),
+ (http_fixed_properties, http_allowed_properties),
+ (xiangqi_fixed_properties,
xiangqi_allowed_properties),
- (contact_handle, go_fixed_properties, go_allowed_properties)]
+ (go_fixed_properties, go_allowed_properties)]})
caps = conn_caps_iface.GetContactCapabilities([contact_handle])
assert caps == all_tubes_caps, caps
# test again, to check GetContactCapabilities does not have side effect
@@ -438,7 +447,8 @@ def test_tube_caps_from_contact(q, bus, conn, service,
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[contact_handle], [caps_iface], False) \
[contact_handle][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[contact_handle], \
+ caps_via_contacts_iface
# send presence with both D-Bus and stream tube caps
txt_record['ver'] = 'moS31cvk2kf9Zka4gb6ncj2VJCo='
@@ -447,20 +457,21 @@ def test_tube_caps_from_contact(q, bus, conn, service,
# Salut does not look up our capabilities because of the cache
event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
- signaled_caps = event.args[0]
+ assert event.args[0] == contact_handle
+ signaled_caps = event.args[1]
assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
- assert signaled_caps[2][1] \
+ assert signaled_caps[2][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
# daap + xiangqi capabilities
- daap_xiangqi_caps = [
- (contact_handle, text_fixed_properties, text_allowed_properties),
- (contact_handle, daap_fixed_properties, daap_allowed_properties),
- (contact_handle, xiangqi_fixed_properties, xiangqi_allowed_properties)]
+ daap_xiangqi_caps = dbus.Dictionary({contact_handle:
+ [(text_fixed_properties, text_allowed_properties),
+ (daap_fixed_properties, daap_allowed_properties),
+ (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
caps = conn_caps_iface.GetContactCapabilities([contact_handle])
assert caps == daap_xiangqi_caps, caps
# test again, to check GetContactCapabilities does not have side effect
@@ -470,27 +481,28 @@ def test_tube_caps_from_contact(q, bus, conn, service,
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[contact_handle], [caps_iface], False) \
[contact_handle][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[contact_handle], \
+ caps_via_contacts_iface
def test_tube_caps_to_contact(q, bus, conn, service):
- basic_caps = [(1, text_fixed_properties,
- text_allowed_properties)]
- daap_caps = [
- (1, text_fixed_properties, text_allowed_properties),
- (1, daap_fixed_properties, daap_allowed_properties)]
- xiangqi_caps = [
- (1, text_fixed_properties, text_allowed_properties),
- (1, xiangqi_fixed_properties, xiangqi_allowed_properties)]
- daap_xiangqi_caps = [
- (1, text_fixed_properties, text_allowed_properties),
- (1, daap_fixed_properties, daap_allowed_properties),
- (1, xiangqi_fixed_properties, xiangqi_allowed_properties)]
- all_tubes_caps = [
- (1, text_fixed_properties, text_allowed_properties),
- (1, daap_fixed_properties, daap_allowed_properties),
- (1, http_fixed_properties, http_allowed_properties),
- (1, xiangqi_fixed_properties, xiangqi_allowed_properties),
- (1, go_fixed_properties, go_allowed_properties)]
+ basic_caps = dbus.Dictionary({1:
+ [(text_fixed_properties, text_allowed_properties)]})
+ daap_caps = dbus.Dictionary({1:
+ [(text_fixed_properties, text_allowed_properties),
+ (daap_fixed_properties, daap_allowed_properties)]})
+ xiangqi_caps = dbus.Dictionary({1:
+ [(text_fixed_properties, text_allowed_properties),
+ (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
+ daap_xiangqi_caps = dbus.Dictionary({1:
+ [(text_fixed_properties, text_allowed_properties),
+ (daap_fixed_properties, daap_allowed_properties),
+ (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
+ all_tubes_caps = dbus.Dictionary({1:
+ [(text_fixed_properties, text_allowed_properties),
+ (daap_fixed_properties, daap_allowed_properties),
+ (http_fixed_properties, http_allowed_properties),
+ (xiangqi_fixed_properties, xiangqi_allowed_properties),
+ (go_fixed_properties, go_allowed_properties)]})
# send presence with no cap info
txt_record = { "txtvers": "1", "status": "avail"}
@@ -529,20 +541,19 @@ def test_tube_caps_to_contact(q, bus, conn, service):
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[1], [caps_iface], False) \
[1][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
# Advertise nothing
conn_caps_iface.SetSelfCapabilities([])
# Check our own caps
caps = conn_caps_iface.GetContactCapabilities([1])
- assert len(caps) == 1
assert caps == basic_caps, caps
# check the Contacts interface give the same caps
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[1], [caps_iface], False) \
[1][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
sync_stream(q, outbound)
@@ -561,19 +572,18 @@ def test_tube_caps_to_contact(q, bus, conn, service):
assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
== False, caps_str
assert len(signaled_caps) == 2, signaled_caps # basic caps + daap
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
# Check our own caps
caps = conn_caps_iface.GetContactCapabilities([1])
- assert len(caps) == 2
assert caps == daap_caps, caps
# check the Contacts interface give the same caps
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[1], [caps_iface], False) \
[1][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
# Advertise xiangqi
ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -590,19 +600,18 @@ def test_tube_caps_to_contact(q, bus, conn, service):
assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
== True, caps_str
assert len(signaled_caps) == 2, signaled_caps # basic caps + daap
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
# Check our own caps
caps = conn_caps_iface.GetContactCapabilities([1])
- assert len(caps) == 2
assert caps == xiangqi_caps, caps
# check the Contacts interface give the same caps
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[1], [caps_iface], False) \
[1][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
# Advertise daap + xiangqi
ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -619,22 +628,21 @@ def test_tube_caps_to_contact(q, bus, conn, service):
assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
== True, caps_str
assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
- assert signaled_caps[2][1] \
+ assert signaled_caps[2][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
# Check our own caps
caps = conn_caps_iface.GetContactCapabilities([1])
- assert len(caps) == 3
assert caps == daap_xiangqi_caps, caps
# check the Contacts interface give the same caps
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[1], [caps_iface], False) \
[1][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
# Advertise 4 tubes
ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -652,28 +660,27 @@ def test_tube_caps_to_contact(q, bus, conn, service):
assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
== True, caps_str
assert len(signaled_caps) == 5, signaled_caps # basic caps + 4 tubes
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
- assert signaled_caps[2][1] \
+ assert signaled_caps[2][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'http'
- assert signaled_caps[3][1] \
+ assert signaled_caps[3][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
- assert signaled_caps[4][1] \
+ assert signaled_caps[4][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Go'
# Check our own caps
caps = conn_caps_iface.GetContactCapabilities([1])
- assert len(caps) == 5
assert caps == all_tubes_caps, caps
# check the Contacts interface give the same caps
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[1], [caps_iface], False) \
[1][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
# Advertise daap + xiangqi
ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -690,22 +697,21 @@ service)
assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
== True, caps_str
assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
- assert signaled_caps[1][1] \
+ assert signaled_caps[1][0] \
['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
== 'daap'
- assert signaled_caps[2][1] \
+ assert signaled_caps[2][0] \
['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
== 'com.example.Xiangqi'
# Check our own caps
caps = conn_caps_iface.GetContactCapabilities([1])
- assert len(caps) == 3
assert caps == daap_xiangqi_caps, caps
# check the Contacts interface give the same caps
caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
[1], [caps_iface], False) \
[1][caps_iface + '/caps']
- assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+ assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
def test(q, bus, conn):
--
1.5.6.5
More information about the telepathy-commits
mailing list