Index: webrtc/api/rtpsenderreceiver_unittest.cc |
diff --git a/webrtc/api/rtpsenderreceiver_unittest.cc b/webrtc/api/rtpsenderreceiver_unittest.cc |
index 188264e7b2c4ff2c7b6afb64d26d9a80471fff30..0e7d115d39938a1416957c9334276e25583c3091 100644 |
--- a/webrtc/api/rtpsenderreceiver_unittest.cc |
+++ b/webrtc/api/rtpsenderreceiver_unittest.cc |
@@ -27,6 +27,7 @@ |
using ::testing::_; |
using ::testing::Exactly; |
+using ::testing::InvokeWithoutArgs; |
using ::testing::Return; |
static const char kStreamLabel1[] = "local_stream_1"; |
@@ -415,7 +416,14 @@ TEST_F(RtpSenderReceiverTest, AudioSenderTrackSetToNull) { |
new AudioRtpSender(track, kStreamLabel1, &audio_provider_, nullptr); |
sender->SetSsrc(kAudioSsrc); |
- EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _)).Times(1); |
+ // Expect that SetAudioSend will be called before the reference to the track |
+ // is released. |
+ EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, nullptr)) |
+ .Times(1) |
+ .WillOnce(InvokeWithoutArgs([&track] { |
+ EXPECT_LT(2, track->AddRef()); |
+ track->Release(); |
+ })); |
EXPECT_TRUE(sender->SetTrack(nullptr)); |
// Make sure it's SetTrack that called methods on the provider, and not the |
@@ -424,14 +432,25 @@ TEST_F(RtpSenderReceiverTest, AudioSenderTrackSetToNull) { |
} |
TEST_F(RtpSenderReceiverTest, VideoSenderTrackSetToNull) { |
- AddVideoTrack(); |
- EXPECT_CALL(video_provider_, SetSource(kVideoSsrc, video_track_.get())); |
+ rtc::scoped_refptr<VideoTrackSourceInterface> source( |
+ FakeVideoTrackSource::Create()); |
+ rtc::scoped_refptr<VideoTrackInterface> track = |
+ VideoTrack::Create(kVideoTrackId, source); |
+ EXPECT_CALL(video_provider_, SetSource(kVideoSsrc, track.get())); |
EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _)); |
rtc::scoped_refptr<VideoRtpSender> sender = |
- new VideoRtpSender(video_track_, kStreamLabel1, &video_provider_); |
+ new VideoRtpSender(track, kStreamLabel1, &video_provider_); |
sender->SetSsrc(kVideoSsrc); |
- EXPECT_CALL(video_provider_, SetSource(kVideoSsrc, nullptr)).Times(1); |
+ // Expect that SetSource will be called before the reference to the track |
+ // is released. |
+ EXPECT_CALL(video_provider_, SetSource(kVideoSsrc, nullptr)) |
+ .Times(1) |
+ .WillOnce(InvokeWithoutArgs([&track] { |
+ EXPECT_LT(2, track->AddRef()); |
+ track->Release(); |
+ return true; |
+ })); |
EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1); |
EXPECT_TRUE(sender->SetTrack(nullptr)); |