| 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 {
|
|
|