| Index: webrtc/pc/peerconnectioninterface_unittest.cc
|
| diff --git a/webrtc/pc/peerconnectioninterface_unittest.cc b/webrtc/pc/peerconnectioninterface_unittest.cc
|
| index 1a26a4352277fa5aa616f80d5725f82707bcce1b..ad1f95b4c1b9194355d518cef66fbce2ea4e2e17 100644
|
| --- a/webrtc/pc/peerconnectioninterface_unittest.cc
|
| +++ b/webrtc/pc/peerconnectioninterface_unittest.cc
|
| @@ -606,6 +606,15 @@ class MockPeerConnectionObserver : public PeerConnectionObserver {
|
| last_added_track_label_ = receiver->id();
|
| }
|
|
|
| + void OnRemoveTrack(
|
| + rtc::scoped_refptr<RtpReceiverInterface> receiver,
|
| + const std::vector<rtc::scoped_refptr<MediaStreamInterface>> &
|
| + streams) override {
|
| + EXPECT_TRUE(receiver != nullptr);
|
| + num_removed_tracks_++;
|
| + last_removed_track_label_ = receiver->id();
|
| + }
|
| +
|
| // Returns the label of the last added stream.
|
| // Empty string if no stream have been added.
|
| std::string GetLastAddedStreamLabel() {
|
| @@ -629,6 +638,8 @@ class MockPeerConnectionObserver : public PeerConnectionObserver {
|
| bool callback_triggered_ = false;
|
| int num_added_tracks_ = 0;
|
| std::string last_added_track_label_;
|
| + int num_removed_tracks_ = 0;
|
| + std::string last_removed_track_label_;
|
|
|
| private:
|
| rtc::scoped_refptr<MediaStreamInterface> last_added_stream_;
|
| @@ -864,9 +875,10 @@ class PeerConnectionInterfaceTest : public testing::Test {
|
| observer_.renegotiation_needed_ = false;
|
| }
|
|
|
| - void AddAudioVideoStream(const std::string& stream_label,
|
| - const std::string& audio_track_label,
|
| - const std::string& video_track_label) {
|
| + rtc::scoped_refptr<MediaStreamInterface> AddAudioVideoStream(
|
| + const std::string& stream_label,
|
| + const std::string& audio_track_label,
|
| + const std::string& video_track_label) {
|
| // Create a local stream.
|
| rtc::scoped_refptr<MediaStreamInterface> stream(
|
| pc_factory_->CreateLocalMediaStream(stream_label));
|
| @@ -883,6 +895,7 @@ class PeerConnectionInterfaceTest : public testing::Test {
|
| EXPECT_TRUE(pc_->AddStream(stream));
|
| EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
| observer_.renegotiation_needed_ = false;
|
| + return stream;
|
| }
|
|
|
| bool DoCreateOfferAnswer(std::unique_ptr<SessionDescriptionInterface>* desc,
|
| @@ -3770,3 +3783,21 @@ TEST_F(PeerConnectionInterfaceTest, MediaStreamAddTrackRemoveTrackRenegotiate) {
|
| EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
| observer_.renegotiation_needed_ = false;
|
| }
|
| +
|
| +// This tests that PeerConnectionObserver::OnRemoveTrack is correctly called.
|
| +TEST_F(PeerConnectionInterfaceTest, OnRemoveTrackCallback) {
|
| + CreatePeerConnectionWithoutDtls();
|
| + auto stream = AddAudioVideoStream(
|
| + kStreamLabel1, "audio_label", "video_label");
|
| + CreateOfferReceiveAnswer();
|
| +
|
| + auto audio_track = stream->GetAudioTracks()[0];
|
| + EXPECT_TRUE(stream->RemoveTrack(audio_track));
|
| + EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
|
| + observer_.renegotiation_needed_ = false;
|
| +
|
| + CreateOfferReceiveAnswer();
|
| +
|
| + EXPECT_EQ(observer_.num_removed_tracks_, 1u);
|
| + EXPECT_EQ(observer_.last_removed_track_label_, audio_track->id());
|
| +}
|
|
|