* Update libjingle to 50389769.
* Together with "Add texture support for i420 video frame." from
wuchengli@chromium.org.
https://webrtc-codereview.appspot.com/1413004
RISK=P1
TESTED=try bots
R=fischman@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1967004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4489 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/xmpp/constants.cc b/talk/xmpp/constants.cc
index 193ae2b..196a1ec 100644
--- a/talk/xmpp/constants.cc
+++ b/talk/xmpp/constants.cc
@@ -119,6 +119,27 @@
const char STR_MUC_ROOM_FEATURE_BROADCAST[] = "broadcast";
const char STR_MUC_ROOM_FEATURE_MULTI_USER_VC[] = "muc_muvc";
+const char STR_ID_TYPE_CONVERSATION[] = "conversation";
+const char NS_GOOGLE_MUC_HANGOUT[] = "google:muc#hangout";
+const StaticQName QN_GOOGLE_MUC_HANGOUT_INVITE =
+ { NS_GOOGLE_MUC_HANGOUT, "invite" };
+const StaticQName QN_GOOGLE_MUC_HANGOUT_INVITE_TYPE =
+ { NS_GOOGLE_MUC_HANGOUT, "invite-type" };
+const StaticQName QN_ATTR_CREATE_ACTIVITY =
+ { STR_EMPTY, "create-activity" };
+const StaticQName QN_GOOGLE_MUC_HANGOUT_PUBLIC =
+ { NS_GOOGLE_MUC_HANGOUT, "public" };
+const StaticQName QN_GOOGLE_MUC_HANGOUT_INVITEE =
+ { NS_GOOGLE_MUC_HANGOUT, "invitee" };
+const StaticQName QN_GOOGLE_MUC_HANGOUT_NOTIFICATION_STATUS =
+ { NS_GOOGLE_MUC_HANGOUT, "notification-status" };
+const StaticQName QN_GOOGLE_MUC_HANGOUT_NOTIFICATION_TYPE = {
+ NS_GOOGLE_MUC_HANGOUT, "notification-type" };
+const StaticQName QN_GOOGLE_MUC_HANGOUT_HANGOUT_START_CONTEXT = {
+ NS_GOOGLE_MUC_HANGOUT, "hangout-start-context" };
+const StaticQName QN_GOOGLE_MUC_HANGOUT_CONVERSATION_ID = {
+ NS_GOOGLE_MUC_HANGOUT, "conversation-id" };
+
const StaticQName QN_STREAM_STREAM = { NS_STREAM, STR_STREAM };
const StaticQName QN_STREAM_FEATURES = { NS_STREAM, "features" };
const StaticQName QN_STREAM_ERROR = { NS_STREAM, "error" };
diff --git a/talk/xmpp/constants.h b/talk/xmpp/constants.h
index e01a798..cd6d2b7 100644
--- a/talk/xmpp/constants.h
+++ b/talk/xmpp/constants.h
@@ -112,6 +112,17 @@
extern const char STR_MUC_ROOM_FEATURE_BROADCAST[];
extern const char STR_MUC_ROOM_FEATURE_MULTI_USER_VC[];
+extern const char STR_ID_TYPE_CONVERSATION[];
+extern const char NS_GOOGLE_MUC_HANGOUT[];
+extern const StaticQName QN_GOOGLE_MUC_HANGOUT_INVITE;
+extern const StaticQName QN_GOOGLE_MUC_HANGOUT_INVITE_TYPE;
+extern const StaticQName QN_ATTR_CREATE_ACTIVITY;
+extern const StaticQName QN_GOOGLE_MUC_HANGOUT_PUBLIC;
+extern const StaticQName QN_GOOGLE_MUC_HANGOUT_INVITEE;
+extern const StaticQName QN_GOOGLE_MUC_HANGOUT_NOTIFICATION_TYPE;
+extern const StaticQName QN_GOOGLE_MUC_HANGOUT_HANGOUT_START_CONTEXT;
+extern const StaticQName QN_GOOGLE_MUC_HANGOUT_CONVERSATION_ID;
+
extern const StaticQName QN_STREAM_STREAM;
extern const StaticQName QN_STREAM_FEATURES;
extern const StaticQName QN_STREAM_ERROR;
diff --git a/talk/xmpp/mucroomdiscoverytask.cc b/talk/xmpp/mucroomdiscoverytask.cc
index e0770fd..a5055d2 100644
--- a/talk/xmpp/mucroomdiscoverytask.cc
+++ b/talk/xmpp/mucroomdiscoverytask.cc
@@ -49,12 +49,20 @@
std::map<std::string, std::string> extended_info;
const XmlElement* identity = query->FirstNamed(QN_DISCO_IDENTITY);
if (identity == NULL || !identity->HasAttr(QN_NAME)) {
- SignalResult(this, false, "", features, extended_info);
+ SignalResult(this, false, "", "", features, extended_info);
return;
}
const std::string name(identity->Attr(QN_NAME));
+ // Get the conversation id
+ const XmlElement* convIdElement =
+ identity->FirstNamed(QN_GOOGLE_MUC_HANGOUT_CONVERSATION_ID);
+ std::string conversation_id;
+ if (convIdElement != NULL) {
+ conversation_id = convIdElement->BodyText();
+ }
+
for (const XmlElement* feature = query->FirstNamed(QN_DISCO_FEATURE);
feature != NULL; feature = feature->NextNamed(QN_DISCO_FEATURE)) {
features.insert(feature->Attr(QN_VAR));
@@ -69,7 +77,7 @@
}
}
- SignalResult(this, true, name, features, extended_info);
+ SignalResult(this, true, name, conversation_id, features, extended_info);
}
} // namespace buzz
diff --git a/talk/xmpp/mucroomdiscoverytask.h b/talk/xmpp/mucroomdiscoverytask.h
index 6e3a21a..4097cc6 100644
--- a/talk/xmpp/mucroomdiscoverytask.h
+++ b/talk/xmpp/mucroomdiscoverytask.h
@@ -41,10 +41,11 @@
MucRoomDiscoveryTask(XmppTaskParentInterface* parent,
const Jid& room_jid);
- // Signal (exists, name, features, extended_info)
- sigslot::signal5<MucRoomDiscoveryTask*,
+ // Signal (exists, name, conversationId, features, extended_info)
+ sigslot::signal6<MucRoomDiscoveryTask*,
bool,
const std::string&,
+ const std::string&,
const std::set<std::string>&,
const std::map<std::string, std::string>& > SignalResult;
diff --git a/talk/xmpp/mucroomdiscoverytask_unittest.cc b/talk/xmpp/mucroomdiscoverytask_unittest.cc
index b88b6f2..354503f 100644
--- a/talk/xmpp/mucroomdiscoverytask_unittest.cc
+++ b/talk/xmpp/mucroomdiscoverytask_unittest.cc
@@ -43,10 +43,12 @@
void OnResult(buzz::MucRoomDiscoveryTask* task,
bool exists,
const std::string& name,
+ const std::string& conversation_id,
const std::set<std::string>& features,
const std::map<std::string, std::string>& extended_info) {
last_exists = exists;
last_name = name;
+ last_conversation_id = conversation_id;
last_features = features;
last_extended_info = extended_info;
}
@@ -58,6 +60,7 @@
bool last_exists;
std::string last_name;
+ std::string last_conversation_id;
std::set<std::string> last_features;
std::map<std::string, std::string> last_extended_info;
int error_count;
@@ -67,7 +70,8 @@
public:
MucRoomDiscoveryTaskTest() :
room_jid("muc-jid-ponies@domain.com"),
- room_name("ponies") {
+ room_name("ponies"),
+ conversation_id("test_conversation_id") {
}
virtual void SetUp() {
@@ -87,6 +91,7 @@
MucRoomDiscoveryListener* listener;
buzz::Jid room_jid;
std::string room_name;
+ std::string conversation_id;
};
TEST_F(MucRoomDiscoveryTaskTest, TestDiscovery) {
@@ -107,12 +112,16 @@
EXPECT_EQ(expected_iq, xmpp_client->sent_stanzas()[0]->Str());
EXPECT_EQ("", listener->last_name);
+ EXPECT_EQ("", listener->last_conversation_id);
std::string response_iq =
"<iq xmlns='jabber:client'"
" from='muc-jid-ponies@domain.com' id='0' type='result'>"
" <info:query xmlns:info='http://jabber.org/protocol/disco#info'>"
- " <info:identity name='ponies'/>"
+ " <info:identity name='ponies'>"
+ " <han:conversation-id xmlns:han='google:muc#hangout'>"
+ "test_conversation_id</han:conversation-id>"
+ " </info:identity>"
" <info:feature var='feature1'/>"
" <info:feature var='feature2'/>"
" <data:x xmlns:data='jabber:x:data'>"
@@ -126,6 +135,7 @@
EXPECT_EQ(true, listener->last_exists);
EXPECT_EQ(room_name, listener->last_name);
+ EXPECT_EQ(conversation_id, listener->last_conversation_id);
EXPECT_EQ(2U, listener->last_features.size());
EXPECT_EQ(1U, listener->last_features.count("feature1"));
EXPECT_EQ(2U, listener->last_extended_info.size());
diff --git a/talk/xmpp/mucroomlookuptask.h b/talk/xmpp/mucroomlookuptask.h
index 60001ff..48f2484 100644
--- a/talk/xmpp/mucroomlookuptask.h
+++ b/talk/xmpp/mucroomlookuptask.h
@@ -46,6 +46,11 @@
class MucRoomLookupTask : public IqTask {
public:
+ enum IdType {
+ ID_TYPE_CONVERSATION,
+ ID_TYPE_HANGOUT
+ };
+
static MucRoomLookupTask*
CreateLookupTaskForRoomName(XmppTaskParentInterface* parent,
const Jid& lookup_server_jid,