Index: webrtc/pc/peerconnectioninterface_unittest.cc |
diff --git a/webrtc/pc/peerconnectioninterface_unittest.cc b/webrtc/pc/peerconnectioninterface_unittest.cc |
index c10324a94b7a5772733cd473a939226c074981d2..f380d3ba46502a8c884d5715c14f57fea1d6e5c9 100644 |
--- a/webrtc/pc/peerconnectioninterface_unittest.cc |
+++ b/webrtc/pc/peerconnectioninterface_unittest.cc |
@@ -3702,3 +3702,37 @@ TEST(RTCConfigurationTest, ComparisonOperators) { |
PeerConnectionInterface::RTCConfigurationType::kAggressive); |
EXPECT_NE(a, h); |
} |
+ |
+// This test ensures OnRenegotiationNeeded is called when we add track with |
+// MediaStream -> AddTrack in the same way it is called when we add track with |
+// PeerConnection -> AddTrack. |
+// The test can be removed once addStream is rewritten in terms of addTrack |
+// https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 |
+TEST_F(PeerConnectionInterfaceTest, MediaStreamAddTrackRemoveTrackRenegotiate) { |
+ CreatePeerConnectionWithoutDtls(); |
+ rtc::scoped_refptr<MediaStreamInterface> stream( |
+ pc_factory_->CreateLocalMediaStream(kStreamLabel1)); |
+ pc_->AddStream(stream); |
+ rtc::scoped_refptr<AudioTrackInterface> audio_track( |
+ pc_factory_->CreateAudioTrack("audio_track", nullptr)); |
+ rtc::scoped_refptr<VideoTrackInterface> video_track( |
+ pc_factory_->CreateVideoTrack( |
+ "video_track", pc_factory_->CreateVideoSource( |
+ std::unique_ptr<cricket::VideoCapturer>( |
+ new cricket::FakeVideoCapturer())))); |
+ stream->AddTrack(audio_track); |
+ EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout); |
+ observer_.renegotiation_needed_ = false; |
+ |
+ stream->AddTrack(video_track); |
+ EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout); |
+ observer_.renegotiation_needed_ = false; |
+ |
+ stream->RemoveTrack(audio_track); |
+ EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout); |
+ observer_.renegotiation_needed_ = false; |
+ |
+ stream->RemoveTrack(video_track); |
+ EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout); |
+ observer_.renegotiation_needed_ = false; |
+} |