Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1008)

Unified Diff: webrtc/pc/peerconnectioninterface_unittest.cc

Issue 2990683002: Add PeerConnectionObserver::OnRemoveTrack callback.
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/pc/peerconnection.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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());
+}
« no previous file with comments | « webrtc/pc/peerconnection.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698