Chromium Code Reviews| Index: content/renderer/media/media_stream_video_source_unittest.cc |
| diff --git a/content/renderer/media/media_stream_video_source_unittest.cc b/content/renderer/media/media_stream_video_source_unittest.cc |
| index 71ee6fca7ecd6eb1cdea122d6a5dd8ce3528db4e..47ab0fe9c0b3f88f7b7d265921ae9ef5738cc9f9 100644 |
| --- a/content/renderer/media/media_stream_video_source_unittest.cc |
| +++ b/content/renderer/media/media_stream_video_source_unittest.cc |
| @@ -19,6 +19,10 @@ |
| #include "media/base/video_frame.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +using ::testing::_; |
| +using ::testing::DoAll; |
| +using ::testing::SaveArg; |
| + |
| namespace content { |
| ACTION_P(RunClosure, closure) { |
| @@ -720,4 +724,73 @@ TEST_F(MediaStreamVideoSourceTest, Use0FpsSupportedFormat) { |
| MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track); |
| } |
| +// Test that a source producing no frames calls back the MSVCS to tell so, and |
| +// this in turn tells the Track attached. |
| +TEST_F(MediaStreamVideoSourceTest, MutedSource) { |
| + MockMediaConstraintFactory factory; |
| + blink::WebMediaStreamTrack track = |
| + CreateTrackAndStartSource(factory.CreateWebMediaConstraints(), |
| + 640, 480, 30); |
| + |
| + MockMediaStreamVideoSink sink; |
| + MediaStreamVideoSink::AddToVideoTrack(&sink, sink.GetDeliverFrameCB(), track); |
| + EXPECT_EQ(MediaStreamTrack::GetTrack(track)->GetMutedState(), false); |
| + |
| + base::RunLoop run_loop; |
| + base::Closure quit_closure = run_loop.QuitClosure(); |
| + bool muted_state = false; |
| + EXPECT_CALL(*mock_source(), DoSetMutedState(_)) |
| + .WillOnce(DoAll(SaveArg<0>(&muted_state), RunClosure(quit_closure))); |
| + run_loop.Run(); |
| + EXPECT_EQ(muted_state, true); |
| + // TODO(mcasas): When added, check |track|'s (WebMediaStreamTrack) Muted |
| + // attribute, should be true. In the meantime, check the MediaStreamTrack's. |
| + EXPECT_EQ(MediaStreamTrack::GetTrack(track)->GetMutedState(), true); |
| + |
| + MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track); |
| +} |
| + |
| +// Test that a source producing no frames calls back the MSVCS to tell so, and |
| +// this in turn tells all the Tracks attached. |
| +TEST_F(MediaStreamVideoSourceTest, MutedSourceWithTwoTracks) { |
| + MockMediaConstraintFactory factory1; |
| + blink::WebMediaStreamTrack track1 = |
| + CreateTrackAndStartSource(factory1.CreateWebMediaConstraints(), |
| + MediaStreamVideoSource::kDefaultWidth, |
| + MediaStreamVideoSource::kDefaultHeight, |
| + 30); |
| + |
| + MockMediaConstraintFactory factory2; |
| + factory2.AddMandatory(MediaStreamVideoSource::kMaxFrameRate, 15); |
| + blink::WebMediaStreamTrack track2 = CreateTrack( |
| + "123", factory2.CreateWebMediaConstraints()); |
| + EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks()); |
| + |
| + MockMediaStreamVideoSink sink1; |
| + MediaStreamVideoSink::AddToVideoTrack(&sink1, sink1.GetDeliverFrameCB(), |
| + track1); |
| + EXPECT_EQ(MediaStreamTrack::GetTrack(track1)->GetMutedState(), false); |
| + |
| + MockMediaStreamVideoSink sink2; |
| + MediaStreamVideoSink::AddToVideoTrack(&sink2, sink2.GetDeliverFrameCB(), |
| + track2); |
| + EXPECT_EQ(MediaStreamTrack::GetTrack(track2)->GetMutedState(), false); |
| + |
| + base::RunLoop run_loop; |
| + base::Closure quit_closure = run_loop.QuitClosure(); |
| + bool muted_state = false; |
| + EXPECT_CALL(*mock_source(), DoSetMutedState(_)) |
| + .WillOnce(DoAll(SaveArg<0>(&muted_state), RunClosure(quit_closure))); |
| + run_loop.Run(); |
| + EXPECT_EQ(muted_state, true); |
| + |
| + // TODO(mcasas): When added, check |track|'s (WebMediaStreamTrack) Muted |
| + // attribute, should be true. In the meantime, check the MediaStreamTrack's. |
| + EXPECT_EQ(MediaStreamTrack::GetTrack(track1)->GetMutedState(), true); |
| + EXPECT_EQ(MediaStreamTrack::GetTrack(track2)->GetMutedState(), true); |
| + |
| + MediaStreamVideoSink::RemoveFromVideoTrack(&sink1, track1); |
| + MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2); |
| +} |
|
Henrik Grunell
2014/07/10 08:41:34
I would recommend to add a test where the state go
mcasas
2014/07/10 11:59:04
Extended "MutedSource" to do that.
|
| + |
| } // namespace content |