diff options
Diffstat (limited to 'content/renderer/media/media_stream_video_track_unittest.cc')
-rw-r--r-- | content/renderer/media/media_stream_video_track_unittest.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/content/renderer/media/media_stream_video_track_unittest.cc b/content/renderer/media/media_stream_video_track_unittest.cc index 8de755e..1b5071b 100644 --- a/content/renderer/media/media_stream_video_track_unittest.cc +++ b/content/renderer/media/media_stream_video_track_unittest.cc @@ -82,6 +82,16 @@ class MediaStreamVideoTrackTest : public ::testing::Test { return track; } + void UpdateVideoSourceToRespondToRequestRefreshFrame() { + blink_source_.reset(); + mock_source_ = new MockMediaStreamVideoSource(false, true); + blink_source_.initialize(base::UTF8ToUTF16("dummy_source_id"), + blink::WebMediaStreamSource::TypeVideo, + base::UTF8ToUTF16("dummy_source_name"), + false /* remote */, true /* readonly */); + blink_source_.setExtraData(mock_source_); + } + MockMediaStreamVideoSource* mock_source() { return mock_source_; } const blink::WebMediaStreamSource& blink_source() const { return blink_source_; @@ -232,4 +242,20 @@ TEST_F(MediaStreamVideoTrackTest, StopLastTrack) { MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2); } +TEST_F(MediaStreamVideoTrackTest, CheckTrackRequestsFrame) { + UpdateVideoSourceToRespondToRequestRefreshFrame(); + blink::WebMediaStreamTrack track = CreateTrack(); + + // Add sink and expect to get a frame. + MockMediaStreamVideoSink sink; + base::RunLoop run_loop; + base::Closure quit_closure = run_loop.QuitClosure(); + EXPECT_CALL(sink, OnVideoFrame()).WillOnce(RunClosure(quit_closure)); + MediaStreamVideoSink::AddToVideoTrack(&sink, sink.GetDeliverFrameCB(), track); + run_loop.Run(); + EXPECT_EQ(1, sink.number_of_frames()); + + MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track); +} + } // namespace content |