[Telepathy-commits] [telepathy-gabble/master] don't add Gadget's inspector to muc's members list
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Sep 26 10:02:39 PDT 2008
20080722125846-7fe3f-1592f26b81a3d1690318f134ff461339563766ad.gz
---
src/muc-channel.c | 9 +++++++++
tests/twisted/olpc/gadget-invite.py | 20 ++++++++++++++++++--
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/muc-channel.c b/src/muc-channel.c
index 1b491d9..aff8dd6 100644
--- a/src/muc-channel.c
+++ b/src/muc-channel.c
@@ -1874,6 +1874,15 @@ _gabble_muc_channel_member_presence_updated (GabbleMucChannel *chan,
affil = lm_message_node_get_attribute (item_node, "affiliation");
owner_jid = lm_message_node_get_attribute (item_node, "jid");
+ /* We special case OLPC Gadget as activities doesn't have to see it as
+ * a member of the room. */
+ if (owner_jid != NULL &&
+ !tp_strdiff (owner_jid, priv->conn->olpc_gadget_activity))
+ {
+ DEBUG ("Don't add Gadget's inspector as member");
+ return;
+ }
+
/* update channel members according to presence */
set = tp_intset_new ();
tp_intset_add (set, handle);
diff --git a/tests/twisted/olpc/gadget-invite.py b/tests/twisted/olpc/gadget-invite.py
index ceba617..45d1ba3 100644
--- a/tests/twisted/olpc/gadget-invite.py
+++ b/tests/twisted/olpc/gadget-invite.py
@@ -4,7 +4,7 @@ test gadget invitation when an activity becomes public
import dbus
-from servicetest import call_async, EventPattern
+from servicetest import call_async, EventPattern, sync_dbus
from gabbletest import exec_test, make_result_iq, acknowledge_iq, sync_stream
from twisted.words.xish import domish, xpath
@@ -117,8 +117,24 @@ def test(q, bus, conn, stream):
event = q.expect('stream-iq')
acknowledge_iq(stream, event.stanza)
-
event = q.expect('dbus-return', method='SetProperties')
+ # Gadget joins the room
+ presence = domish.Element((None, 'presence'))
+ presence['from'] = 'myroom at conference.localhost/inspector'
+ x = presence.addElement(('http://jabber.org/protocol/muc#user', 'x'))
+ item = x.addElement('item')
+ item['jid'] = 'gadget.localhost'
+ item['affiliation'] = 'none'
+ item['role'] = 'participant'
+ stream.send(presence)
+
+ muc = bus.get_object(conn.bus_name, room_path)
+ muc_group = dbus.Interface(muc, "org.freedesktop.Telepathy.Channel.Interface.Group")
+
+ sync_stream(q, stream)
+ members = muc_group.GetMembers()
+ assert conn.InspectHandles(1, members) == ['myroom at conference.localhost/test']
+
if __name__ == '__main__':
exec_test(test)
--
1.5.6.5
More information about the Telepathy-commits
mailing list