diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-29 01:19:25 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-29 01:19:25 +0000 |
commit | a05c0d82a604eee8c765c450ddc47bf603844642 (patch) | |
tree | dbbbc2071d8a6610ee9729f3218b1a52243576b5 /remoting | |
parent | 667d3f576698a74703700a8cf0a005883a3ff624 (diff) | |
download | chromium_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.cc | 10 | ||||
-rw-r--r-- | remoting/jingle_glue/fake_signal_strategy.h | 9 | ||||
-rw-r--r-- | remoting/protocol/jingle_session.cc | 1 | ||||
-rw-r--r-- | remoting/protocol/jingle_session_unittest.cc | 10 |
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. |