Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 164 const PeerConnectionFactory::Options* options) { | 164 const PeerConnectionFactory::Options* options) { |
| 165 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( | 165 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( |
| 166 rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore() | 166 rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore() |
| 167 : nullptr); | 167 : nullptr); |
| 168 | 168 |
| 169 return CreateClientWithDtlsIdentityStore(id, constraints, options, | 169 return CreateClientWithDtlsIdentityStore(id, constraints, options, |
| 170 dtls_identity_store.Pass()); | 170 dtls_identity_store.Pass()); |
| 171 } | 171 } |
| 172 | 172 |
| 173 ~PeerConnectionTestClient() { | 173 ~PeerConnectionTestClient() { |
| 174 while (!fake_video_renderers_.empty()) { | |
| 175 RenderMap::iterator it = fake_video_renderers_.begin(); | |
| 176 delete it->second; | |
| 177 fake_video_renderers_.erase(it); | |
| 178 } | |
| 179 } | 174 } |
| 180 | 175 |
| 181 void Negotiate() { Negotiate(true, true); } | 176 void Negotiate() { Negotiate(true, true); } |
| 182 | 177 |
| 183 void Negotiate(bool audio, bool video) { | 178 void Negotiate(bool audio, bool video) { |
| 184 rtc::scoped_ptr<SessionDescriptionInterface> offer; | 179 rtc::scoped_ptr<SessionDescriptionInterface> offer; |
| 185 ASSERT_TRUE(DoCreateOffer(offer.use())); | 180 ASSERT_TRUE(DoCreateOffer(offer.use())); |
| 186 | 181 |
| 187 if (offer->description()->GetContentByName("audio")) { | 182 if (offer->description()->GetContentByName("audio")) { |
| 188 offer->description()->GetContentByName("audio")->rejected = !audio; | 183 offer->description()->GetContentByName("audio")->rejected = !audio; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 222 void OnSignalingChange( | 217 void OnSignalingChange( |
| 223 webrtc::PeerConnectionInterface::SignalingState new_state) override { | 218 webrtc::PeerConnectionInterface::SignalingState new_state) override { |
| 224 EXPECT_EQ(pc()->signaling_state(), new_state); | 219 EXPECT_EQ(pc()->signaling_state(), new_state); |
| 225 } | 220 } |
| 226 void OnAddStream(MediaStreamInterface* media_stream) override { | 221 void OnAddStream(MediaStreamInterface* media_stream) override { |
| 227 media_stream->RegisterObserver(this); | 222 media_stream->RegisterObserver(this); |
| 228 for (size_t i = 0; i < media_stream->GetVideoTracks().size(); ++i) { | 223 for (size_t i = 0; i < media_stream->GetVideoTracks().size(); ++i) { |
| 229 const std::string id = media_stream->GetVideoTracks()[i]->id(); | 224 const std::string id = media_stream->GetVideoTracks()[i]->id(); |
| 230 ASSERT_TRUE(fake_video_renderers_.find(id) == | 225 ASSERT_TRUE(fake_video_renderers_.find(id) == |
| 231 fake_video_renderers_.end()); | 226 fake_video_renderers_.end()); |
| 232 fake_video_renderers_[id] = | 227 fake_video_renderers_[id].reset(new webrtc::FakeVideoTrackRenderer( |
| 233 new webrtc::FakeVideoTrackRenderer(media_stream->GetVideoTracks()[i]); | 228 media_stream->GetVideoTracks()[i])); |
| 234 } | 229 } |
| 235 } | 230 } |
| 236 void OnRemoveStream(MediaStreamInterface* media_stream) override {} | 231 void OnRemoveStream(MediaStreamInterface* media_stream) override {} |
| 237 void OnRenegotiationNeeded() override {} | 232 void OnRenegotiationNeeded() override {} |
| 238 void OnIceConnectionChange( | 233 void OnIceConnectionChange( |
| 239 webrtc::PeerConnectionInterface::IceConnectionState new_state) override { | 234 webrtc::PeerConnectionInterface::IceConnectionState new_state) override { |
| 240 EXPECT_EQ(pc()->ice_connection_state(), new_state); | 235 EXPECT_EQ(pc()->ice_connection_state(), new_state); |
| 241 } | 236 } |
| 242 void OnIceGatheringChange( | 237 void OnIceGatheringChange( |
| 243 webrtc::PeerConnectionInterface::IceGatheringState new_state) override { | 238 webrtc::PeerConnectionInterface::IceGatheringState new_state) override { |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 258 | 253 |
| 259 // MediaStreamInterface callback | 254 // MediaStreamInterface callback |
| 260 void OnChanged() override { | 255 void OnChanged() override { |
| 261 // Track added or removed from MediaStream, so update our renderers. | 256 // Track added or removed from MediaStream, so update our renderers. |
| 262 rtc::scoped_refptr<StreamCollectionInterface> remote_streams = | 257 rtc::scoped_refptr<StreamCollectionInterface> remote_streams = |
| 263 pc()->remote_streams(); | 258 pc()->remote_streams(); |
| 264 // Remove renderers for tracks that were removed. | 259 // Remove renderers for tracks that were removed. |
| 265 for (auto it = fake_video_renderers_.begin(); | 260 for (auto it = fake_video_renderers_.begin(); |
| 266 it != fake_video_renderers_.end();) { | 261 it != fake_video_renderers_.end();) { |
| 267 if (remote_streams->FindVideoTrack(it->first) == nullptr) { | 262 if (remote_streams->FindVideoTrack(it->first) == nullptr) { |
| 268 auto to_delete = it++; | 263 auto to_remove = it++; |
| 269 delete to_delete->second; | 264 removed_fake_video_renderers_.push_back(std::move(to_remove->second)); |
| 270 fake_video_renderers_.erase(to_delete); | 265 fake_video_renderers_.erase(to_remove); |
| 271 } else { | 266 } else { |
| 272 ++it; | 267 ++it; |
| 273 } | 268 } |
| 274 } | 269 } |
| 275 // Create renderers for new video tracks. | 270 // Create renderers for new video tracks. |
| 276 for (size_t stream_index = 0; stream_index < remote_streams->count(); | 271 for (size_t stream_index = 0; stream_index < remote_streams->count(); |
| 277 ++stream_index) { | 272 ++stream_index) { |
| 278 MediaStreamInterface* remote_stream = remote_streams->at(stream_index); | 273 MediaStreamInterface* remote_stream = remote_streams->at(stream_index); |
| 279 for (size_t track_index = 0; | 274 for (size_t track_index = 0; |
| 280 track_index < remote_stream->GetVideoTracks().size(); | 275 track_index < remote_stream->GetVideoTracks().size(); |
| 281 ++track_index) { | 276 ++track_index) { |
| 282 const std::string id = | 277 const std::string id = |
| 283 remote_stream->GetVideoTracks()[track_index]->id(); | 278 remote_stream->GetVideoTracks()[track_index]->id(); |
| 284 if (fake_video_renderers_.find(id) != fake_video_renderers_.end()) { | 279 if (fake_video_renderers_.find(id) != fake_video_renderers_.end()) { |
| 285 continue; | 280 continue; |
| 286 } | 281 } |
| 287 fake_video_renderers_[id] = new webrtc::FakeVideoTrackRenderer( | 282 fake_video_renderers_[id].reset(new webrtc::FakeVideoTrackRenderer( |
| 288 remote_stream->GetVideoTracks()[track_index]); | 283 remote_stream->GetVideoTracks()[track_index])); |
| 289 } | 284 } |
| 290 } | 285 } |
| 291 } | 286 } |
| 292 | 287 |
| 293 void SetVideoConstraints(const webrtc::FakeConstraints& video_constraint) { | 288 void SetVideoConstraints(const webrtc::FakeConstraints& video_constraint) { |
| 294 video_constraints_ = video_constraint; | 289 video_constraints_ = video_constraint; |
| 295 } | 290 } |
| 296 | 291 |
| 297 void AddMediaStream(bool audio, bool video) { | 292 void AddMediaStream(bool audio, bool video) { |
| 298 std::string stream_label = | 293 std::string stream_label = |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 445 video_capturers_.begin(); | 440 video_capturers_.begin(); |
| 446 it != video_capturers_.end(); ++it) { | 441 it != video_capturers_.end(); ++it) { |
| 447 (*it)->Stop(); | 442 (*it)->Stop(); |
| 448 } | 443 } |
| 449 } | 444 } |
| 450 | 445 |
| 451 bool AudioFramesReceivedCheck(int number_of_frames) const { | 446 bool AudioFramesReceivedCheck(int number_of_frames) const { |
| 452 return number_of_frames <= fake_audio_capture_module_->frames_received(); | 447 return number_of_frames <= fake_audio_capture_module_->frames_received(); |
| 453 } | 448 } |
| 454 | 449 |
| 450 int TotalAudioFramesReceived() const { | |
|
pthatcher1
2015/12/11 02:10:13
I'd just call this audio_frames_received()
| |
| 451 return fake_audio_capture_module_->frames_received(); | |
| 452 } | |
| 453 | |
| 455 bool VideoFramesReceivedCheck(int number_of_frames) { | 454 bool VideoFramesReceivedCheck(int number_of_frames) { |
| 456 if (video_decoder_factory_enabled_) { | 455 if (video_decoder_factory_enabled_) { |
| 457 const std::vector<FakeWebRtcVideoDecoder*>& decoders | 456 const std::vector<FakeWebRtcVideoDecoder*>& decoders |
| 458 = fake_video_decoder_factory_->decoders(); | 457 = fake_video_decoder_factory_->decoders(); |
| 459 if (decoders.empty()) { | 458 if (decoders.empty()) { |
| 460 return number_of_frames <= 0; | 459 return number_of_frames <= 0; |
| 461 } | 460 } |
| 462 | 461 |
| 463 for (std::vector<FakeWebRtcVideoDecoder*>::const_iterator | 462 for (FakeWebRtcVideoDecoder* decoder : decoders) { |
| 464 it = decoders.begin(); it != decoders.end(); ++it) { | 463 if (number_of_frames > decoder->GetNumFramesReceived()) { |
| 465 if (number_of_frames > (*it)->GetNumFramesReceived()) { | |
| 466 return false; | 464 return false; |
| 467 } | 465 } |
| 468 } | 466 } |
| 469 return true; | 467 return true; |
| 470 } else { | 468 } else { |
| 471 if (fake_video_renderers_.empty()) { | 469 if (fake_video_renderers_.empty()) { |
| 472 return number_of_frames <= 0; | 470 return number_of_frames <= 0; |
| 473 } | 471 } |
| 474 | 472 |
| 475 for (RenderMap::const_iterator it = fake_video_renderers_.begin(); | 473 for (const auto& pair : fake_video_renderers_) { |
| 476 it != fake_video_renderers_.end(); ++it) { | 474 if (number_of_frames > pair.second->num_rendered_frames()) { |
| 477 if (number_of_frames > it->second->num_rendered_frames()) { | |
| 478 return false; | 475 return false; |
| 479 } | 476 } |
| 480 } | 477 } |
| 481 return true; | 478 return true; |
| 482 } | 479 } |
| 483 } | 480 } |
| 484 | 481 |
| 482 int TotalVideoFramesReceived() const { | |
|
pthatcher1
2015/12/11 02:10:13
Likewise, video_frames_received()
| |
| 483 int total = 0; | |
| 484 if (video_decoder_factory_enabled_) { | |
| 485 const std::vector<FakeWebRtcVideoDecoder*>& decoders = | |
| 486 fake_video_decoder_factory_->decoders(); | |
| 487 for (const FakeWebRtcVideoDecoder* decoder : decoders) { | |
| 488 total += decoder->GetNumFramesReceived(); | |
| 489 } | |
| 490 } else { | |
| 491 for (const auto& pair : fake_video_renderers_) { | |
| 492 total += pair.second->num_rendered_frames(); | |
| 493 } | |
| 494 for (const auto& renderer : removed_fake_video_renderers_) { | |
| 495 total += renderer->num_rendered_frames(); | |
| 496 } | |
| 497 } | |
| 498 return total; | |
| 499 } | |
| 500 | |
| 485 // Verify the CreateDtmfSender interface | 501 // Verify the CreateDtmfSender interface |
| 486 void VerifyDtmf() { | 502 void VerifyDtmf() { |
| 487 rtc::scoped_ptr<DummyDtmfObserver> observer(new DummyDtmfObserver()); | 503 rtc::scoped_ptr<DummyDtmfObserver> observer(new DummyDtmfObserver()); |
| 488 rtc::scoped_refptr<DtmfSenderInterface> dtmf_sender; | 504 rtc::scoped_refptr<DtmfSenderInterface> dtmf_sender; |
| 489 | 505 |
| 490 // We can't create a DTMF sender with an invalid audio track or a non local | 506 // We can't create a DTMF sender with an invalid audio track or a non local |
| 491 // track. | 507 // track. |
| 492 EXPECT_TRUE(peer_connection_->CreateDtmfSender(nullptr) == nullptr); | 508 EXPECT_TRUE(peer_connection_->CreateDtmfSender(nullptr) == nullptr); |
| 493 rtc::scoped_refptr<webrtc::AudioTrackInterface> non_localtrack( | 509 rtc::scoped_refptr<webrtc::AudioTrackInterface> non_localtrack( |
| 494 peer_connection_factory_->CreateAudioTrack("dummy_track", nullptr)); | 510 peer_connection_factory_->CreateAudioTrack("dummy_track", nullptr)); |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 871 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_; | 887 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_; |
| 872 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> | 888 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> |
| 873 peer_connection_factory_; | 889 peer_connection_factory_; |
| 874 | 890 |
| 875 bool auto_add_stream_ = true; | 891 bool auto_add_stream_ = true; |
| 876 | 892 |
| 877 typedef std::pair<std::string, std::string> IceUfragPwdPair; | 893 typedef std::pair<std::string, std::string> IceUfragPwdPair; |
| 878 std::map<int, IceUfragPwdPair> ice_ufrag_pwd_; | 894 std::map<int, IceUfragPwdPair> ice_ufrag_pwd_; |
| 879 bool expect_ice_restart_ = false; | 895 bool expect_ice_restart_ = false; |
| 880 | 896 |
| 881 // Needed to keep track of number of frames send. | 897 // Needed to keep track of number of frames sent. |
| 882 rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_; | 898 rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_; |
| 883 // Needed to keep track of number of frames received. | 899 // Needed to keep track of number of frames received. |
| 884 typedef std::map<std::string, webrtc::FakeVideoTrackRenderer*> RenderMap; | 900 std::map<std::string, rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>> |
| 885 RenderMap fake_video_renderers_; | 901 fake_video_renderers_; |
| 902 // Needed to ensure frames aren't received for removed tracks. | |
| 903 std::vector<rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>> | |
| 904 removed_fake_video_renderers_; | |
| 886 // Needed to keep track of number of frames received when external decoder | 905 // Needed to keep track of number of frames received when external decoder |
| 887 // used. | 906 // used. |
| 888 FakeWebRtcVideoDecoderFactory* fake_video_decoder_factory_ = nullptr; | 907 FakeWebRtcVideoDecoderFactory* fake_video_decoder_factory_ = nullptr; |
| 889 FakeWebRtcVideoEncoderFactory* fake_video_encoder_factory_ = nullptr; | 908 FakeWebRtcVideoEncoderFactory* fake_video_encoder_factory_ = nullptr; |
| 890 bool video_decoder_factory_enabled_ = false; | 909 bool video_decoder_factory_enabled_ = false; |
| 891 webrtc::FakeConstraints video_constraints_; | 910 webrtc::FakeConstraints video_constraints_; |
| 892 | 911 |
| 893 // For remote peer communication. | 912 // For remote peer communication. |
| 894 SignalingMessageReceiver* signaling_message_receiver_ = nullptr; | 913 SignalingMessageReceiver* signaling_message_receiver_ = nullptr; |
| 895 | 914 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 937 bool VideoFramesReceivedCheck(int frames_received) { | 956 bool VideoFramesReceivedCheck(int frames_received) { |
| 938 return initiating_client_->VideoFramesReceivedCheck(frames_received) && | 957 return initiating_client_->VideoFramesReceivedCheck(frames_received) && |
| 939 receiving_client_->VideoFramesReceivedCheck(frames_received); | 958 receiving_client_->VideoFramesReceivedCheck(frames_received); |
| 940 } | 959 } |
| 941 void VerifyDtmf() { | 960 void VerifyDtmf() { |
| 942 initiating_client_->VerifyDtmf(); | 961 initiating_client_->VerifyDtmf(); |
| 943 receiving_client_->VerifyDtmf(); | 962 receiving_client_->VerifyDtmf(); |
| 944 } | 963 } |
| 945 | 964 |
| 946 void TestUpdateOfferWithRejectedContent() { | 965 void TestUpdateOfferWithRejectedContent() { |
| 966 // Renegotiate, rejecting the video m-line. | |
| 947 initiating_client_->Negotiate(true, false); | 967 initiating_client_->Negotiate(true, false); |
| 948 EXPECT_TRUE_WAIT( | 968 ASSERT_TRUE_WAIT(SessionActive(), kMaxWaitForActivationMs); |
| 949 FramesNotPending(kEndAudioFrameCount * 2, kEndVideoFrameCount), | 969 |
| 950 kMaxWaitForFramesMs); | 970 int pc1_audio_received = initiating_client_->TotalAudioFramesReceived(); |
| 951 // There shouldn't be any more video frame after the new offer is | 971 int pc1_video_received = initiating_client_->TotalVideoFramesReceived(); |
| 952 // negotiated. | 972 int pc2_audio_received = receiving_client_->TotalAudioFramesReceived(); |
| 953 EXPECT_FALSE(VideoFramesReceivedCheck(kEndVideoFrameCount + 1)); | 973 int pc2_video_received = receiving_client_->TotalVideoFramesReceived(); |
| 974 | |
| 975 // Wait for some additional audio frames to be received. | |
| 976 EXPECT_TRUE_WAIT(initiating_client_->AudioFramesReceivedCheck( | |
| 977 pc1_audio_received + kEndAudioFrameCount) && | |
| 978 receiving_client_->AudioFramesReceivedCheck( | |
| 979 pc2_audio_received + kEndAudioFrameCount), | |
| 980 kMaxWaitForFramesMs); | |
| 981 | |
| 982 // During this time, we shouldn't have received any additional video frames | |
| 983 // for the rejected video tracks. | |
| 984 EXPECT_EQ(pc1_video_received, | |
| 985 initiating_client_->TotalVideoFramesReceived()); | |
| 986 EXPECT_EQ(pc2_video_received, | |
| 987 receiving_client_->TotalVideoFramesReceived()); | |
| 954 } | 988 } |
| 955 | 989 |
| 956 void VerifyRenderedSize(int width, int height) { | 990 void VerifyRenderedSize(int width, int height) { |
| 957 EXPECT_EQ(width, receiving_client()->rendered_width()); | 991 EXPECT_EQ(width, receiving_client()->rendered_width()); |
| 958 EXPECT_EQ(height, receiving_client()->rendered_height()); | 992 EXPECT_EQ(height, receiving_client()->rendered_height()); |
| 959 EXPECT_EQ(width, initializing_client()->rendered_width()); | 993 EXPECT_EQ(width, initializing_client()->rendered_width()); |
| 960 EXPECT_EQ(height, initializing_client()->rendered_height()); | 994 EXPECT_EQ(height, initializing_client()->rendered_height()); |
| 961 } | 995 } |
| 962 | 996 |
| 963 void VerifySessionDescriptions() { | 997 void VerifySessionDescriptions() { |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1287 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestAnswerNone) { | 1321 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestAnswerNone) { |
| 1288 ASSERT_TRUE(CreateTestClients()); | 1322 ASSERT_TRUE(CreateTestClients()); |
| 1289 receiving_client()->SetReceiveAudioVideo(false, false); | 1323 receiving_client()->SetReceiveAudioVideo(false, false); |
| 1290 LocalP2PTest(); | 1324 LocalP2PTest(); |
| 1291 } | 1325 } |
| 1292 | 1326 |
| 1293 // This test sets up an audio and video call between two parties. After the call | 1327 // This test sets up an audio and video call between two parties. After the call |
| 1294 // runs for a while (10 frames), the caller sends an update offer with video | 1328 // runs for a while (10 frames), the caller sends an update offer with video |
| 1295 // being rejected. Once the re-negotiation is done, the video flow should stop | 1329 // being rejected. Once the re-negotiation is done, the video flow should stop |
| 1296 // and the audio flow should continue. | 1330 // and the audio flow should continue. |
| 1297 // Disabled due to b/14955157. | 1331 TEST_F(JsepPeerConnectionP2PTestClient, UpdateOfferWithRejectedContent) { |
| 1298 TEST_F(JsepPeerConnectionP2PTestClient, | |
| 1299 DISABLED_UpdateOfferWithRejectedContent) { | |
| 1300 ASSERT_TRUE(CreateTestClients()); | 1332 ASSERT_TRUE(CreateTestClients()); |
| 1301 LocalP2PTest(); | 1333 LocalP2PTest(); |
| 1302 TestUpdateOfferWithRejectedContent(); | 1334 TestUpdateOfferWithRejectedContent(); |
| 1303 } | 1335 } |
| 1304 | 1336 |
| 1305 // This test sets up a Jsep call between two parties. The MSID is removed from | 1337 // This test sets up a Jsep call between two parties. The MSID is removed from |
| 1306 // the SDP strings from the caller. | 1338 // the SDP strings from the caller. |
| 1307 // Disabled due to b/14955157. | 1339 TEST_F(JsepPeerConnectionP2PTestClient, LocalP2PTestWithoutMsid) { |
| 1308 TEST_F(JsepPeerConnectionP2PTestClient, | |
| 1309 DISABLED_LocalP2PTestWithoutMsid) { | |
| 1310 ASSERT_TRUE(CreateTestClients()); | 1340 ASSERT_TRUE(CreateTestClients()); |
| 1311 receiving_client()->RemoveMsidFromReceivedSdp(true); | 1341 receiving_client()->RemoveMsidFromReceivedSdp(true); |
| 1312 // TODO(perkj): Currently there is a bug that cause audio to stop playing if | 1342 // TODO(perkj): Currently there is a bug that cause audio to stop playing if |
| 1313 // audio and video is muxed when MSID is disabled. Remove | 1343 // audio and video is muxed when MSID is disabled. Remove |
| 1314 // SetRemoveBundleFromSdp once | 1344 // SetRemoveBundleFromSdp once |
| 1315 // https://code.google.com/p/webrtc/issues/detail?id=1193 is fixed. | 1345 // https://code.google.com/p/webrtc/issues/detail?id=1193 is fixed. |
| 1316 receiving_client()->RemoveBundleFromReceivedSdp(true); | 1346 receiving_client()->RemoveBundleFromReceivedSdp(true); |
| 1317 LocalP2PTest(); | 1347 LocalP2PTest(); |
| 1318 } | 1348 } |
| 1319 | 1349 |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1965 server.urls.push_back("stun:hostname"); | 1995 server.urls.push_back("stun:hostname"); |
| 1966 server.urls.push_back("turn:hostname"); | 1996 server.urls.push_back("turn:hostname"); |
| 1967 servers.push_back(server); | 1997 servers.push_back(server); |
| 1968 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_configurations_, | 1998 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_configurations_, |
| 1969 &turn_configurations_)); | 1999 &turn_configurations_)); |
| 1970 EXPECT_EQ(1U, stun_configurations_.size()); | 2000 EXPECT_EQ(1U, stun_configurations_.size()); |
| 1971 EXPECT_EQ(1U, turn_configurations_.size()); | 2001 EXPECT_EQ(1U, turn_configurations_.size()); |
| 1972 } | 2002 } |
| 1973 | 2003 |
| 1974 #endif // if !defined(THREAD_SANITIZER) | 2004 #endif // if !defined(THREAD_SANITIZER) |
| OLD | NEW |