| Index: webrtc/api/quicdatatransport_unittest.cc
|
| diff --git a/webrtc/api/quicdatatransport_unittest.cc b/webrtc/api/quicdatatransport_unittest.cc
|
| index a9c605ff2a78e73d6f0936aadc65ac4ac10aa3b8..975898ef1f886f7cb93f95fc45c673d660accb61 100644
|
| --- a/webrtc/api/quicdatatransport_unittest.cc
|
| +++ b/webrtc/api/quicdatatransport_unittest.cc
|
| @@ -30,7 +30,6 @@
|
| using webrtc::QuicDataChannel;
|
| using webrtc::QuicDataTransport;
|
| using cricket::FakeTransportChannel;
|
| -using cricket::FakeTransportController;
|
| using cricket::QuicTransportChannel;
|
| using cricket::ReliableQuicStream;
|
|
|
| @@ -38,7 +37,6 @@
|
|
|
| // Timeout for asynchronous operations.
|
| static const int kTimeoutMs = 1000; // milliseconds
|
| -static const char kTransportName[] = "data";
|
|
|
| // FakeObserver receives messages from the data channel.
|
| class FakeObserver : public DataChannelObserver {
|
| @@ -66,16 +64,11 @@
|
| class QuicDataTransportPeer {
|
| public:
|
| QuicDataTransportPeer()
|
| - : fake_transport_controller_(new FakeTransportController()),
|
| - quic_data_transport_(rtc::Thread::Current(),
|
| + : quic_data_transport_(rtc::Thread::Current(),
|
| rtc::Thread::Current(),
|
| - rtc::Thread::Current(),
|
| - fake_transport_controller_.get()) {
|
| - fake_transport_controller_->use_quic();
|
| - quic_data_transport_.set_content_name("data");
|
| - quic_data_transport_.SetTransport(kTransportName);
|
| - ice_transport_channel_ = static_cast<FakeTransportChannel*>(
|
| - quic_data_transport_.quic_transport_channel()->ice_transport_channel());
|
| + rtc::Thread::Current()),
|
| + ice_transport_channel_(new FakeTransportChannel("data", 0)),
|
| + quic_transport_channel_(ice_transport_channel_) {
|
| ice_transport_channel_->SetAsync(true);
|
| }
|
|
|
| @@ -83,8 +76,7 @@
|
| rtc::scoped_refptr<rtc::RTCCertificate> local_cert =
|
| rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
|
| rtc::SSLIdentity::Generate("cert_name", rtc::KT_DEFAULT)));
|
| - quic_data_transport_.quic_transport_channel()->SetLocalCertificate(
|
| - local_cert);
|
| + quic_transport_channel_.SetLocalCertificate(local_cert);
|
| local_fingerprint_.reset(CreateFingerprint(local_cert.get()));
|
| }
|
|
|
| @@ -98,15 +90,14 @@
|
| }
|
|
|
| QuicTransportChannel* quic_transport_channel() {
|
| - return quic_data_transport_.quic_transport_channel();
|
| + return &quic_transport_channel_;
|
| }
|
|
|
| // Write a messge directly to the ReliableQuicStream.
|
| void WriteMessage(int data_channel_id,
|
| uint64_t message_id,
|
| const std::string& message) {
|
| - ReliableQuicStream* stream =
|
| - quic_data_transport_.quic_transport_channel()->CreateQuicStream();
|
| + ReliableQuicStream* stream = quic_transport_channel_.CreateQuicStream();
|
| rtc::CopyOnWriteBuffer payload;
|
| webrtc::WriteQuicDataChannelMessageHeader(data_channel_id, message_id,
|
| &payload);
|
| @@ -131,9 +122,9 @@
|
| return fingerprint.release();
|
| }
|
|
|
| - std::unique_ptr<FakeTransportController> fake_transport_controller_;
|
| QuicDataTransport quic_data_transport_;
|
| FakeTransportChannel* ice_transport_channel_;
|
| + QuicTransportChannel quic_transport_channel_;
|
| std::unique_ptr<rtc::SSLFingerprint> local_fingerprint_;
|
| };
|
|
|
| @@ -147,6 +138,13 @@
|
| ASSERT_TRUE_WAIT(peer1_.quic_transport_channel()->writable() &&
|
| peer2_.quic_transport_channel()->writable(),
|
| kTimeoutMs);
|
| + }
|
| +
|
| + void SetTransportChannels() {
|
| + ASSERT_TRUE(peer1_.quic_data_transport()->SetTransportChannel(
|
| + peer1_.quic_transport_channel()));
|
| + ASSERT_TRUE(peer2_.quic_data_transport()->SetTransportChannel(
|
| + peer2_.quic_transport_channel()));
|
| }
|
|
|
| // Sets crypto parameters required for the QUIC handshake.
|
| @@ -209,7 +207,7 @@
|
| }
|
|
|
| // Tests that any data channels created by the QuicDataTransport are in state
|
| -// kConnecting before the QuicTransportChannel is set, then transition to state
|
| +// kConnecting before the QuicTransportChannel is set, then transiton to state
|
| // kOpen when the transport channel becomes writable.
|
| TEST_F(QuicDataTransportTest, DataChannelsOpenWhenTransportChannelWritable) {
|
| webrtc::DataChannelInit config1;
|
| @@ -217,6 +215,7 @@
|
| rtc::scoped_refptr<DataChannelInterface> data_channel1 =
|
| peer2_.CreateDataChannel(&config1);
|
| EXPECT_EQ(webrtc::DataChannelInterface::kConnecting, data_channel1->state());
|
| + SetTransportChannels();
|
| EXPECT_EQ(webrtc::DataChannelInterface::kConnecting, data_channel1->state());
|
| webrtc::DataChannelInit config2;
|
| config2.id = 14;
|
| @@ -240,6 +239,7 @@
|
| // Tests that the QuicTransport dispatches messages for one QuicDataChannel.
|
| TEST_F(QuicDataTransportTest, ReceiveMessagesForSingleDataChannel) {
|
| ConnectTransportChannels();
|
| + SetTransportChannels();
|
|
|
| int data_channel_id = 1337;
|
| webrtc::DataChannelInit config;
|
| @@ -269,6 +269,7 @@
|
| // when multiple are in use.
|
| TEST_F(QuicDataTransportTest, ReceiveMessagesForMultipleDataChannels) {
|
| ConnectTransportChannels();
|
| + SetTransportChannels();
|
|
|
| std::vector<rtc::scoped_refptr<DataChannelInterface>> data_channels;
|
| for (int data_channel_id = 0; data_channel_id < 5; ++data_channel_id) {
|
| @@ -298,6 +299,7 @@
|
| // send/receive messages using a QuicDataTransport.
|
| TEST_F(QuicDataTransportTest, EndToEndSendReceiveMessages) {
|
| ConnectTransportChannels();
|
| + SetTransportChannels();
|
|
|
| std::vector<rtc::scoped_refptr<DataChannelInterface>> peer1_data_channels;
|
| std::vector<rtc::scoped_refptr<DataChannelInterface>> peer2_data_channels;
|
| @@ -337,14 +339,18 @@
|
| }
|
| }
|
|
|
| -// Tests that SetTransport returns false when setting a transport that is not
|
| -// equivalent to the one already set.
|
| -TEST_F(QuicDataTransportTest, SetTransportReturnValue) {
|
| +// Tests that SetTransportChannel returns false when setting a NULL transport
|
| +// channel or a transport channel that is not equivalent to the one already set.
|
| +TEST_F(QuicDataTransportTest, SetTransportChannelReturnValue) {
|
| QuicDataTransport* quic_data_transport = peer1_.quic_data_transport();
|
| - // Ignore the same transport name.
|
| - EXPECT_TRUE(quic_data_transport->SetTransport(kTransportName));
|
| - // Return false when setting a different transport name.
|
| - EXPECT_FALSE(quic_data_transport->SetTransport("another transport name"));
|
| + EXPECT_FALSE(quic_data_transport->SetTransportChannel(nullptr));
|
| + QuicTransportChannel* transport_channel = peer1_.quic_transport_channel();
|
| + EXPECT_TRUE(quic_data_transport->SetTransportChannel(transport_channel));
|
| + EXPECT_TRUE(quic_data_transport->SetTransportChannel(transport_channel));
|
| + QuicTransportChannel* other_transport_channel =
|
| + peer2_.quic_transport_channel();
|
| + EXPECT_FALSE(
|
| + quic_data_transport->SetTransportChannel(other_transport_channel));
|
| }
|
|
|
| } // namespace
|
|
|