[telepathy-gabble/master] Add a quirk capability to detect the Google webmail client from its c at node
Danielle Madeley
danielle.madeley at collabora.co.uk
Wed Jan 13 02:28:45 PST 2010
---
src/capabilities.h | 2 ++
src/presence-cache.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/src/capabilities.h b/src/capabilities.h
index 8170626..027faa6 100644
--- a/src/capabilities.h
+++ b/src/capabilities.h
@@ -33,6 +33,8 @@
#define QUIRK_PREFIX "\x07"
/* Gabble 0.7.x with 16 <= x < 29 omits @creator on <content/> */
#define QUIRK_OMITS_CONTENT_CREATORS "\x07omits-content-creators"
+/* The Google Webmail client doesn't support some features */
+#define QUIRK_GOOGLE_WEBMAIL_CLIENT "\x07google-webmail-client"
/**
* GabbleCapabilitySet:
diff --git a/src/presence-cache.c b/src/presence-cache.c
index b2491d3..9b37140 100644
--- a/src/presence-cache.c
+++ b/src/presence-cache.c
@@ -850,6 +850,35 @@ _parse_cap_bundles (
return uris;
}
+static void
+_parse_node (GabblePresence *presence,
+ LmMessageNode *lm_node,
+ const gchar *resource,
+ guint serial)
+{
+ LmMessageNode *cap_node;
+ const gchar *node;
+
+ cap_node = lm_message_node_get_child_with_namespace (lm_node, "c", NS_CAPS);
+
+ if (NULL == cap_node)
+ return;
+
+ node = lm_message_node_get_attribute (cap_node, "node");
+
+ if (!tp_strdiff (node, "http://mail.google.com/xmpp/client/caps"))
+ {
+ GabbleCapabilitySet *cap_set = gabble_capability_set_new ();
+
+ DEBUG ("Client is Google Web Client");
+
+ gabble_capability_set_add (cap_set, QUIRK_GOOGLE_WEBMAIL_CLIENT);
+ gabble_presence_set_capabilities (presence, resource, cap_set, serial);
+ gabble_capability_set_free (cap_set);
+ }
+}
+
+
static void _caps_disco_cb (GabbleDisco *disco,
GabbleDiscoRequest *request,
const gchar *jid,
@@ -1286,6 +1315,8 @@ _process_caps (GabblePresenceCache *cache,
if (presence)
{
old_cap_set = gabble_presence_dup_caps (presence);
+
+ _parse_node (presence, lm_node, resource, serial);
}
for (i = uris; NULL != i; i = i->next)
--
1.5.6.5
More information about the telepathy-commits
mailing list