| Index: webrtc/p2p/base/p2ptransportchannel_unittest.cc
|
| diff --git a/webrtc/p2p/base/p2ptransportchannel_unittest.cc b/webrtc/p2p/base/p2ptransportchannel_unittest.cc
|
| index d645c578947b5a23085b73312527693dd5fb33ba..e2c50031268a8dd5025bc252a8b532317dfc5ced 100644
|
| --- a/webrtc/p2p/base/p2ptransportchannel_unittest.cc
|
| +++ b/webrtc/p2p/base/p2ptransportchannel_unittest.cc
|
| @@ -2008,6 +2008,8 @@ class P2PTransportChannelPingTest : public testing::Test,
|
| this, &P2PTransportChannelPingTest::OnSelectedCandidatePairChanged);
|
| ch->SignalReadyToSend.connect(this,
|
| &P2PTransportChannelPingTest::OnReadyToSend);
|
| + ch->SignalStateChanged.connect(
|
| + this, &P2PTransportChannelPingTest::OnChannelStateChanged);
|
| }
|
|
|
| cricket::Candidate CreateHostCandidate(const std::string& ip,
|
| @@ -2077,6 +2079,9 @@ class P2PTransportChannelPingTest : public testing::Test,
|
| void OnReadyToSend(cricket::TransportChannel* channel) {
|
| channel_ready_to_send_ = true;
|
| }
|
| + void OnChannelStateChanged(cricket::TransportChannelImpl* channel) {
|
| + channel_state_ = channel->GetState();
|
| + }
|
|
|
| cricket::CandidatePairInterface* last_selected_candidate_pair() {
|
| return last_selected_candidate_pair_;
|
| @@ -2084,6 +2089,7 @@ class P2PTransportChannelPingTest : public testing::Test,
|
| int last_sent_packet_id() { return last_sent_packet_id_; }
|
| bool channel_ready_to_send() { return channel_ready_to_send_; }
|
| void reset_channel_ready_to_send() { channel_ready_to_send_ = false; }
|
| + cricket::TransportChannelState channel_state() { return channel_state_; }
|
|
|
| private:
|
| std::unique_ptr<rtc::PhysicalSocketServer> pss_;
|
| @@ -2092,6 +2098,7 @@ class P2PTransportChannelPingTest : public testing::Test,
|
| cricket::CandidatePairInterface* last_selected_candidate_pair_ = nullptr;
|
| int last_sent_packet_id_ = -1;
|
| bool channel_ready_to_send_ = false;
|
| + cricket::TransportChannelState channel_state_ = cricket::STATE_INIT;
|
| };
|
|
|
| TEST_F(P2PTransportChannelPingTest, TestTriggeredChecks) {
|
| @@ -2145,6 +2152,21 @@ TEST_F(P2PTransportChannelPingTest, TestNoTriggeredChecksWhenWritable) {
|
| EXPECT_EQ(conn2, FindNextPingableConnectionAndPingIt(&ch));
|
| }
|
|
|
| +TEST_F(P2PTransportChannelPingTest, TestSignalStateChanged) {
|
| + cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr);
|
| + cricket::P2PTransportChannel ch("state change", 1, &pa);
|
| + PrepareChannel(&ch);
|
| + ch.Connect();
|
| + ch.MaybeStartGathering();
|
| + ch.AddRemoteCandidate(CreateHostCandidate("1.1.1.1", 1, 1));
|
| + cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
|
| + ASSERT_TRUE(conn1 != nullptr);
|
| + // Pruning the connection reduces the set of active connections and changes
|
| + // the channel state.
|
| + conn1->Prune();
|
| + EXPECT_EQ_WAIT(cricket::STATE_FAILED, channel_state(), kDefaultTimeout);
|
| +}
|
| +
|
| // Test adding remote candidates with different ufrags. If a remote candidate
|
| // is added with an old ufrag, it will be discarded. If it is added with a
|
| // ufrag that was not seen before, it will be used to create connections
|
|
|