| Index: webrtc/api/quicdatatransport_unittest.cc
 | 
| diff --git a/webrtc/api/quicdatatransport_unittest.cc b/webrtc/api/quicdatatransport_unittest.cc
 | 
| index 975898ef1f886f7cb93f95fc45c673d660accb61..a9c605ff2a78e73d6f0936aadc65ac4ac10aa3b8 100644
 | 
| --- a/webrtc/api/quicdatatransport_unittest.cc
 | 
| +++ b/webrtc/api/quicdatatransport_unittest.cc
 | 
| @@ -30,6 +30,7 @@ using webrtc::DataChannelObserver;
 | 
|  using webrtc::QuicDataChannel;
 | 
|  using webrtc::QuicDataTransport;
 | 
|  using cricket::FakeTransportChannel;
 | 
| +using cricket::FakeTransportController;
 | 
|  using cricket::QuicTransportChannel;
 | 
|  using cricket::ReliableQuicStream;
 | 
|  
 | 
| @@ -37,6 +38,7 @@ namespace {
 | 
|  
 | 
|  // 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 {
 | 
| @@ -64,11 +66,16 @@ class FakeObserver : public DataChannelObserver {
 | 
|  class QuicDataTransportPeer {
 | 
|   public:
 | 
|    QuicDataTransportPeer()
 | 
| -      : quic_data_transport_(rtc::Thread::Current(),
 | 
| +      : fake_transport_controller_(new FakeTransportController()),
 | 
| +        quic_data_transport_(rtc::Thread::Current(),
 | 
|                               rtc::Thread::Current(),
 | 
| -                             rtc::Thread::Current()),
 | 
| -        ice_transport_channel_(new FakeTransportChannel("data", 0)),
 | 
| -        quic_transport_channel_(ice_transport_channel_) {
 | 
| +                             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());
 | 
|      ice_transport_channel_->SetAsync(true);
 | 
|    }
 | 
|  
 | 
| @@ -76,7 +83,8 @@ class QuicDataTransportPeer {
 | 
|      rtc::scoped_refptr<rtc::RTCCertificate> local_cert =
 | 
|          rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
 | 
|              rtc::SSLIdentity::Generate("cert_name", rtc::KT_DEFAULT)));
 | 
| -    quic_transport_channel_.SetLocalCertificate(local_cert);
 | 
| +    quic_data_transport_.quic_transport_channel()->SetLocalCertificate(
 | 
| +        local_cert);
 | 
|      local_fingerprint_.reset(CreateFingerprint(local_cert.get()));
 | 
|    }
 | 
|  
 | 
| @@ -90,14 +98,15 @@ class QuicDataTransportPeer {
 | 
|    }
 | 
|  
 | 
|    QuicTransportChannel* quic_transport_channel() {
 | 
| -    return &quic_transport_channel_;
 | 
| +    return quic_data_transport_.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_transport_channel_.CreateQuicStream();
 | 
| +    ReliableQuicStream* stream =
 | 
| +        quic_data_transport_.quic_transport_channel()->CreateQuicStream();
 | 
|      rtc::CopyOnWriteBuffer payload;
 | 
|      webrtc::WriteQuicDataChannelMessageHeader(data_channel_id, message_id,
 | 
|                                                &payload);
 | 
| @@ -122,9 +131,9 @@ class QuicDataTransportPeer {
 | 
|      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_;
 | 
|  };
 | 
|  
 | 
| @@ -140,13 +149,6 @@ class QuicDataTransportTest : public testing::Test {
 | 
|                       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.
 | 
|    void SetCryptoParameters() {
 | 
|      peer1_.GenerateCertificateAndFingerprint();
 | 
| @@ -207,7 +209,7 @@ TEST_F(QuicDataTransportTest, CannotCreateDataChannelsWithSameId) {
 | 
|  }
 | 
|  
 | 
|  // Tests that any data channels created by the QuicDataTransport are in state
 | 
| -// kConnecting before the QuicTransportChannel is set, then transiton to state
 | 
| +// kConnecting before the QuicTransportChannel is set, then transition to state
 | 
|  // kOpen when the transport channel becomes writable.
 | 
|  TEST_F(QuicDataTransportTest, DataChannelsOpenWhenTransportChannelWritable) {
 | 
|    webrtc::DataChannelInit config1;
 | 
| @@ -215,7 +217,6 @@ TEST_F(QuicDataTransportTest, DataChannelsOpenWhenTransportChannelWritable) {
 | 
|    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;
 | 
| @@ -239,7 +240,6 @@ TEST_F(QuicDataTransportTest, DataChannelsOpenWhenTransportChannelWritable) {
 | 
|  // Tests that the QuicTransport dispatches messages for one QuicDataChannel.
 | 
|  TEST_F(QuicDataTransportTest, ReceiveMessagesForSingleDataChannel) {
 | 
|    ConnectTransportChannels();
 | 
| -  SetTransportChannels();
 | 
|  
 | 
|    int data_channel_id = 1337;
 | 
|    webrtc::DataChannelInit config;
 | 
| @@ -269,7 +269,6 @@ TEST_F(QuicDataTransportTest, ReceiveMessagesForSingleDataChannel) {
 | 
|  // 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) {
 | 
| @@ -299,7 +298,6 @@ TEST_F(QuicDataTransportTest, ReceiveMessagesForMultipleDataChannels) {
 | 
|  // 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;
 | 
| @@ -339,18 +337,14 @@ TEST_F(QuicDataTransportTest, EndToEndSendReceiveMessages) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -// 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) {
 | 
| +// Tests that SetTransport returns false when setting a transport that is not
 | 
| +// equivalent to the one already set.
 | 
| +TEST_F(QuicDataTransportTest, SetTransportReturnValue) {
 | 
|    QuicDataTransport* quic_data_transport = peer1_.quic_data_transport();
 | 
| -  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));
 | 
| +  // 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"));
 | 
|  }
 | 
|  
 | 
|  }  // namespace
 | 
| 
 |