Index: webrtc/p2p/base/transportcontroller_unittest.cc |
diff --git a/webrtc/p2p/base/transportcontroller_unittest.cc b/webrtc/p2p/base/transportcontroller_unittest.cc |
index 9f30518af74c6efb59737b035d01db7e05813f58..bafffa031ed238132e7d13a3bb74029bb1c84c98 100644 |
--- a/webrtc/p2p/base/transportcontroller_unittest.cc |
+++ b/webrtc/p2p/base/transportcontroller_unittest.cc |
@@ -793,4 +793,45 @@ TEST_F(TransportControllerTest, TestSetRemoteIceLiteInAnswer) { |
EXPECT_EQ(ICEMODE_LITE, channel->remote_ice_mode()); |
} |
+// Tests SetNeedsIceRestartFlag and NeedsIceRestart, setting the flag and then |
+// initiating an ICE restart for one of the transports. |
+TEST_F(TransportControllerTest, NeedsIceRestart) { |
+ CreateChannel("audio", 1); |
+ CreateChannel("video", 1); |
+ |
+ // Do initial offer/answer so there's something to restart. |
+ TransportDescription local_desc(kIceUfrag1, kIcePwd1); |
+ TransportDescription remote_desc(kIceUfrag1, kIcePwd1); |
+ ASSERT_TRUE(transport_controller_->SetLocalTransportDescription( |
+ "audio", local_desc, CA_OFFER, nullptr)); |
+ ASSERT_TRUE(transport_controller_->SetLocalTransportDescription( |
+ "video", local_desc, CA_OFFER, nullptr)); |
+ ASSERT_TRUE(transport_controller_->SetRemoteTransportDescription( |
+ "audio", remote_desc, CA_ANSWER, nullptr)); |
+ ASSERT_TRUE(transport_controller_->SetRemoteTransportDescription( |
+ "video", remote_desc, CA_ANSWER, nullptr)); |
+ |
+ // Initially NeedsIceRestart should return false. |
+ EXPECT_FALSE(transport_controller_->NeedsIceRestart("audio")); |
+ EXPECT_FALSE(transport_controller_->NeedsIceRestart("video")); |
+ |
+ // Set the needs-ice-restart flag and verify NeedsIceRestart starts returning |
+ // true. |
+ transport_controller_->SetNeedsIceRestartFlag(); |
+ EXPECT_TRUE(transport_controller_->NeedsIceRestart("audio")); |
+ EXPECT_TRUE(transport_controller_->NeedsIceRestart("video")); |
+ // For a nonexistent transport, false should be returned. |
+ EXPECT_FALSE(transport_controller_->NeedsIceRestart("deadbeef")); |
+ |
+ // Do ICE restart but only for audio. |
+ TransportDescription ice_restart_local_desc(kIceUfrag2, kIcePwd2); |
+ ASSERT_TRUE(transport_controller_->SetLocalTransportDescription( |
+ "audio", ice_restart_local_desc, CA_OFFER, nullptr)); |
+ ASSERT_TRUE(transport_controller_->SetLocalTransportDescription( |
+ "video", local_desc, CA_OFFER, nullptr)); |
+ // NeedsIceRestart should still be true for video. |
+ EXPECT_FALSE(transport_controller_->NeedsIceRestart("audio")); |
+ EXPECT_TRUE(transport_controller_->NeedsIceRestart("video")); |
+} |
+ |
} // namespace cricket { |