summaryrefslogtreecommitdiffstats
path: root/remoting
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-29 01:19:25 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-29 01:19:25 +0000
commita05c0d82a604eee8c765c450ddc47bf603844642 (patch)
treedbbbc2071d8a6610ee9729f3218b1a52243576b5 /remoting
parent667d3f576698a74703700a8cf0a005883a3ff624 (diff)
downloadchromium_src-a05c0d82a604eee8c765c450ddc47bf603844642.zip
chromium_src-a05c0d82a604eee8c765c450ddc47bf603844642.tar.gz
chromium_src-a05c0d82a604eee8c765c450ddc47bf603844642.tar.bz2
Fix JingleSession to properly set initiator field in session.
Previously session-initiate messages generated by JingleSession had an empty initiator attribute. Also added tests that verify that initiator field is set. Review URL: https://chromiumcodereview.appspot.com/9477010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124081 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting')
-rw-r--r--remoting/jingle_glue/fake_signal_strategy.cc10
-rw-r--r--remoting/jingle_glue/fake_signal_strategy.h9
-rw-r--r--remoting/protocol/jingle_session.cc1
-rw-r--r--remoting/protocol/jingle_session_unittest.cc10
4 files changed, 25 insertions, 5 deletions
diff --git a/remoting/jingle_glue/fake_signal_strategy.cc b/remoting/jingle_glue/fake_signal_strategy.cc
index 160daba..a854502 100644
--- a/remoting/jingle_glue/fake_signal_strategy.cc
+++ b/remoting/jingle_glue/fake_signal_strategy.cc
@@ -30,9 +30,9 @@ FakeSignalStrategy::FakeSignalStrategy(const std::string& jid)
}
FakeSignalStrategy::~FakeSignalStrategy() {
- while (!pending_messages_.empty()) {
- delete pending_messages_.front();
- pending_messages_.pop();
+ while (!received_messages_.empty()) {
+ delete received_messages_.front();
+ received_messages_.pop_front();
}
}
@@ -87,7 +87,8 @@ std::string FakeSignalStrategy::GetNextId() {
void FakeSignalStrategy::OnIncomingMessage(
scoped_ptr<buzz::XmlElement> stanza) {
- pending_messages_.push(stanza.release());
+ pending_messages_.push(stanza.get());
+ received_messages_.push_back(stanza.release());
MessageLoop::current()->PostTask(
FROM_HERE, base::Bind(&FakeSignalStrategy::DeliverIncomingMessages,
weak_factory_.GetWeakPtr()));
@@ -112,7 +113,6 @@ void FakeSignalStrategy::DeliverIncomingMessages() {
}
pending_messages_.pop();
- delete stanza;
}
}
diff --git a/remoting/jingle_glue/fake_signal_strategy.h b/remoting/jingle_glue/fake_signal_strategy.h
index 7428836..f7f8db2 100644
--- a/remoting/jingle_glue/fake_signal_strategy.h
+++ b/remoting/jingle_glue/fake_signal_strategy.h
@@ -5,6 +5,7 @@
#ifndef REMOTING_JINGLE_GLUE_FAKE_SIGNAL_STRATEGY_H_
#define REMOTING_JINGLE_GLUE_FAKE_SIGNAL_STRATEGY_H_
+#include <list>
#include <queue>
#include <string>
@@ -24,6 +25,10 @@ class FakeSignalStrategy : public SignalStrategy,
FakeSignalStrategy(const std::string& jid);
virtual ~FakeSignalStrategy();
+ const std::list<buzz::XmlElement*>& received_messages() {
+ return received_messages_;
+ }
+
// SignalStrategy interface.
virtual void Connect() OVERRIDE;
virtual void Disconnect() OVERRIDE;
@@ -46,6 +51,10 @@ class FakeSignalStrategy : public SignalStrategy,
int last_id_;
+ // All received messages, includes thouse still in |pending_messages_|.
+ std::list<buzz::XmlElement*> received_messages_;
+
+ // Queue of messages that have yet to be delivered to observers.
std::queue<buzz::XmlElement*> pending_messages_;
base::WeakPtrFactory<FakeSignalStrategy> weak_factory_;
diff --git a/remoting/protocol/jingle_session.cc b/remoting/protocol/jingle_session.cc
index f0edb343..01e12be 100644
--- a/remoting/protocol/jingle_session.cc
+++ b/remoting/protocol/jingle_session.cc
@@ -107,6 +107,7 @@ void JingleSession::StartConnection(
// Send session-initiate message.
JingleMessage message(peer_jid_, JingleMessage::SESSION_INITIATE,
session_id_);
+ message.from = session_manager_->signal_strategy_->GetLocalJid();
message.description.reset(
new ContentDescription(candidate_config_->Clone(),
authenticator_->GetNextMessage()));
diff --git a/remoting/protocol/jingle_session_unittest.cc b/remoting/protocol/jingle_session_unittest.cc
index b5984aa..9361da4 100644
--- a/remoting/protocol/jingle_session_unittest.cc
+++ b/remoting/protocol/jingle_session_unittest.cc
@@ -312,6 +312,16 @@ TEST_F(JingleSessionTest, RejectConnection) {
TEST_F(JingleSessionTest, Connect) {
CreateSessionManagers(1, FakeAuthenticator::ACCEPT);
InitiateConnection(1, FakeAuthenticator::ACCEPT, false);
+
+ // Verify that the client specified correct initiator value.
+ ASSERT_GT(host_signal_strategy_->received_messages().size(), 0U);
+ const buzz::XmlElement* initiate_xml =
+ host_signal_strategy_->received_messages().front();
+ const buzz::XmlElement* jingle_element =
+ initiate_xml->FirstNamed(buzz::QName(kJingleNamespace, "jingle"));
+ ASSERT_TRUE(jingle_element);
+ ASSERT_EQ(kClientJid,
+ jingle_element->Attr(buzz::QName("", "initiator")));
}
// Verify that we can connect two endpoints with multi-step authentication.