Update talk to 55821645.
TEST=try bots
R=mallinath@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/3139004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5053 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/app/webrtc/datachannel_unittest.cc b/talk/app/webrtc/datachannel_unittest.cc
index 4d66907..5d29811 100644
--- a/talk/app/webrtc/datachannel_unittest.cc
+++ b/talk/app/webrtc/datachannel_unittest.cc
@@ -26,56 +26,56 @@
*/
#include "talk/app/webrtc/datachannel.h"
+#include "talk/app/webrtc/test/fakedatachannelprovider.h"
#include "talk/base/gunit.h"
using webrtc::DataChannel;
-class FakeDataChannelClient : public webrtc::DataChannelProviderInterface {
- public:
- FakeDataChannelClient() : send_blocked_(false) {}
- virtual ~FakeDataChannelClient() {}
-
- virtual bool SendData(const cricket::SendDataParams& params,
- const talk_base::Buffer& payload,
- cricket::SendDataResult* result) OVERRIDE {
- if (send_blocked_) {
- *result = cricket::SDR_BLOCK;
- return false;
- }
- last_send_data_params_ = params;
- return true;
- }
- virtual bool ConnectDataChannel(DataChannel* data_channel) OVERRIDE {
- return true;
- }
- virtual void DisconnectDataChannel(DataChannel* data_channel) OVERRIDE {}
-
- void set_send_blocked(bool blocked) { send_blocked_ = blocked; }
- cricket::SendDataParams last_send_data_params() {
- return last_send_data_params_;
- }
-
- private:
- cricket::SendDataParams last_send_data_params_;
- bool send_blocked_;
-};
-
class SctpDataChannelTest : public testing::Test {
protected:
SctpDataChannelTest()
: webrtc_data_channel_(
- DataChannel::Create(&client_, cricket::DCT_SCTP, "test", &init_)) {
+ DataChannel::Create(&provider_, cricket::DCT_SCTP, "test", &init_)) {
}
void SetChannelReady() {
+ webrtc_data_channel_->OnTransportChannelCreated();
+ if (webrtc_data_channel_->id() < 0) {
+ webrtc_data_channel_->SetSctpSid(0);
+ }
webrtc_data_channel_->OnChannelReady(true);
}
webrtc::DataChannelInit init_;
- FakeDataChannelClient client_;
+ FakeDataChannelProvider provider_;
talk_base::scoped_refptr<DataChannel> webrtc_data_channel_;
};
+// Verifies that the data channel is connected to the transport after creation.
+TEST_F(SctpDataChannelTest, ConnectedToTransportOnCreated) {
+ EXPECT_TRUE(provider_.IsConnected(webrtc_data_channel_.get()));
+ // The sid is not set yet, so it should not have added the streams.
+ EXPECT_FALSE(provider_.IsSendStreamAdded(webrtc_data_channel_->id()));
+ EXPECT_FALSE(provider_.IsRecvStreamAdded(webrtc_data_channel_->id()));
+
+ webrtc_data_channel_->SetSctpSid(0);
+ EXPECT_TRUE(provider_.IsSendStreamAdded(webrtc_data_channel_->id()));
+ EXPECT_TRUE(provider_.IsRecvStreamAdded(webrtc_data_channel_->id()));
+}
+
+// Verifies that the data channel is connected to the transport if the transport
+// is not available initially and becomes available later.
+TEST_F(SctpDataChannelTest, ConnectedAfterTransportBecomesAvailable) {
+ provider_.set_transport_available(false);
+ talk_base::scoped_refptr<DataChannel> dc = DataChannel::Create(
+ &provider_, cricket::DCT_SCTP, "test1", &init_);
+ EXPECT_FALSE(provider_.IsConnected(dc.get()));
+
+ provider_.set_transport_available(true);
+ dc->OnTransportChannelCreated();
+ EXPECT_TRUE(provider_.IsConnected(dc.get()));
+}
+
// Tests the state of the data channel.
TEST_F(SctpDataChannelTest, StateTransition) {
EXPECT_EQ(webrtc::DataChannelInterface::kConnecting,
@@ -85,6 +85,8 @@
webrtc_data_channel_->Close();
EXPECT_EQ(webrtc::DataChannelInterface::kClosed,
webrtc_data_channel_->state());
+ // Verifies that it's disconnected from the transport.
+ EXPECT_FALSE(provider_.IsConnected(webrtc_data_channel_.get()));
}
// Tests that DataChannel::buffered_amount() is correct after the channel is
@@ -96,7 +98,7 @@
EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount());
- client_.set_send_blocked(true);
+ provider_.set_send_blocked(true);
const int number_of_packets = 3;
for (int i = 0; i < number_of_packets; ++i) {
@@ -111,18 +113,22 @@
TEST_F(SctpDataChannelTest, QueuedDataSentWhenUnblocked) {
SetChannelReady();
webrtc::DataBuffer buffer("abcd");
- client_.set_send_blocked(true);
+ provider_.set_send_blocked(true);
EXPECT_TRUE(webrtc_data_channel_->Send(buffer));
- client_.set_send_blocked(false);
+ provider_.set_send_blocked(false);
SetChannelReady();
EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount());
}
// Tests that the queued control message is sent when channel is ready.
-TEST_F(SctpDataChannelTest, QueuedControlMessageSent) {
- talk_base::Buffer* buffer = new talk_base::Buffer("abcd", 4);
- EXPECT_TRUE(webrtc_data_channel_->SendControl(buffer));
+TEST_F(SctpDataChannelTest, OpenMessageSent) {
+ // Initially the id is unassigned.
+ EXPECT_EQ(-1, webrtc_data_channel_->id());
+
SetChannelReady();
- EXPECT_EQ(cricket::DMT_CONTROL, client_.last_send_data_params().type);
+ EXPECT_GE(webrtc_data_channel_->id(), 0);
+ EXPECT_EQ(cricket::DMT_CONTROL, provider_.last_send_data_params().type);
+ EXPECT_EQ(provider_.last_send_data_params().ssrc,
+ static_cast<uint32>(webrtc_data_channel_->id()));
}