Index: webrtc/p2p/base/p2ptransportchannel_unittest.cc |
diff --git a/webrtc/p2p/base/p2ptransportchannel_unittest.cc b/webrtc/p2p/base/p2ptransportchannel_unittest.cc |
index 87e92a5b30d0756a6d644a649657eca1b6121553..d921a1e063d0bfd28de92f675386ea81c75bd383 100644 |
--- a/webrtc/p2p/base/p2ptransportchannel_unittest.cc |
+++ b/webrtc/p2p/base/p2ptransportchannel_unittest.cc |
@@ -1193,7 +1193,7 @@ TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignaling) { |
set_clear_remote_candidates_ufrag_pwd(false); |
CreateChannels(1); |
// Only have remote credentials come in for ep2, not ep1. |
- ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); |
+ ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[0], kIcePwd[0]); |
// Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive |
// candidate. |
@@ -1209,15 +1209,23 @@ TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignaling) { |
EXPECT_EQ(kIceUfrag[1], |
ep1_ch1()->best_connection()->remote_candidate().username()); |
EXPECT_EQ("", ep1_ch1()->best_connection()->remote_candidate().password()); |
+ // Because we don't have ICE credentials yet, we don't know the generation. |
+ EXPECT_EQ(0u, ep1_ch1()->best_connection()->remote_candidate().generation()); |
EXPECT_TRUE(nullptr == ep1_ch1()->FindNextPingableConnection()); |
+ // Add two sets of remote ICE credentials, so that the ones used by the |
+ // candidate will be generation 1 instead of 0. |
+ ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); |
ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); |
- ResumeCandidates(1); |
- |
+ // After setting the remote ICE credentials, the password and generation |
+ // of the peer reflexive candidate should be updated. |
EXPECT_EQ(kIcePwd[1], |
ep1_ch1()->best_connection()->remote_candidate().password()); |
+ EXPECT_EQ(1u, ep1_ch1()->best_connection()->remote_candidate().generation()); |
EXPECT_TRUE(nullptr != ep1_ch1()->FindNextPingableConnection()); |
+ ResumeCandidates(1); |
+ |
WAIT(ep2_ch1()->best_connection() != NULL, 2000); |
// Verify ep1's best connection is updated to use the 'local' candidate. |
EXPECT_EQ_WAIT( |
@@ -1237,7 +1245,7 @@ TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignalingWithNAT) { |
set_clear_remote_candidates_ufrag_pwd(false); |
CreateChannels(1); |
// Only have remote credentials come in for ep2, not ep1. |
- ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); |
+ ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[0], kIcePwd[0]); |
// Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive |
// candidate. |
PauseCandidates(1); |
@@ -1251,14 +1259,21 @@ TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignalingWithNAT) { |
EXPECT_EQ(kIceUfrag[1], |
ep1_ch1()->best_connection()->remote_candidate().username()); |
EXPECT_EQ("", ep1_ch1()->best_connection()->remote_candidate().password()); |
+ // Because we don't have ICE credentials yet, we don't know the generation. |
+ EXPECT_EQ(0u, ep1_ch1()->best_connection()->remote_candidate().generation()); |
EXPECT_TRUE(nullptr == ep1_ch1()->FindNextPingableConnection()); |
+ // Add two sets of remote ICE credentials, so that the ones used by the |
+ // candidate will be generation 1 instead of 0. |
+ ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); |
ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); |
- ResumeCandidates(1); |
- |
+ // After setting the remote ICE credentials, the password and generation |
+ // of the peer reflexive candidate should be updated. |
EXPECT_EQ(kIcePwd[1], |
ep1_ch1()->best_connection()->remote_candidate().password()); |
- EXPECT_TRUE(nullptr != ep1_ch1()->FindNextPingableConnection()); |
+ EXPECT_EQ(1u, ep1_ch1()->best_connection()->remote_candidate().generation()); |
+ |
+ ResumeCandidates(1); |
const cricket::Connection* best_connection = NULL; |
WAIT((best_connection = ep2_ch1()->best_connection()) != NULL, 2000); |