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

Unified Diff: content/renderer/media/media_stream_video_source_unittest.cc

Issue 509873002: Refactor MediaStreamTrack video onmute event. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed nits. Created 6 years, 4 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
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 28816f1641edff2a89bcd63bbd764a98a85e9a9f..dfd0a4bc5089fc2f91b03bf03524281ec6e4ceec 100644
--- a/content/renderer/media/media_stream_video_source_unittest.cc
+++ b/content/renderer/media/media_stream_video_source_unittest.cc
@@ -198,6 +198,10 @@ class MediaStreamVideoSourceTest
MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2);
}
+ void SetSourceSupportedFormats(const media::VideoCaptureFormats& formats) {
+ mock_source_->SetSupportedFormats(formats);
+ }
+
void ReleaseTrackAndSourceOnAddTrackCallback(
const blink::WebMediaStreamTrack& track_to_release) {
track_to_release_ = track_to_release;
@@ -738,18 +742,25 @@ 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. Then start passing frames, and check
+// Test that a source producing no frames change the source readyState to muted.
// that in a reasonable time frame the muted state turns to false.
TEST_F(MediaStreamVideoSourceTest, MutedSource) {
+ // Setup the source for support a frame rate of 2000fps in order to test
+ // the muted event faster. This is since the frame monitoring uses
+ // PostDelayedTask that is dependent on the source frame rate.
+ media::VideoCaptureFormats formats;
+ formats.push_back(media::VideoCaptureFormat(
+ gfx::Size(640, 480), 2000, media::PIXEL_FORMAT_I420));
+ SetSourceSupportedFormats(formats);
+
MockMediaConstraintFactory factory;
blink::WebMediaStreamTrack track =
CreateTrackAndStartSource(factory.CreateWebMediaConstraints(),
- 640, 480, 30);
-
+ 640, 480, 2000);
MockMediaStreamVideoSink sink;
MediaStreamVideoSink::AddToVideoTrack(&sink, sink.GetDeliverFrameCB(), track);
- EXPECT_EQ(MediaStreamTrack::GetTrack(track)->GetMutedState(), false);
+ EXPECT_EQ(track.source().readyState(),
+ blink::WebMediaStreamSource::ReadyStateLive);
base::RunLoop run_loop;
base::Closure quit_closure = run_loop.QuitClosure();
@@ -758,67 +769,22 @@ TEST_F(MediaStreamVideoSourceTest, MutedSource) {
.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);
-
- EXPECT_CALL(*mock_source(), DoSetMutedState(_))
- .WillOnce(DoAll(SaveArg<0>(&muted_state), RunClosure(quit_closure)));
- // Mock frame delivery happens asynchronously, not according to the configured
- // frame rate, potentially many frames can pass before the muted state is
- // flipped. |kMaxFrameCount| is used as a reasonable high bound of this value.
- const int kMaxFrameCount = 10000;
- int i = 0;
- while (muted_state != false || ++i > kMaxFrameCount)
- DeliverVideoFrameAndWaitForRenderer(640, 480, &sink);
- EXPECT_EQ(muted_state, false);
- EXPECT_LT(i, kMaxFrameCount);
- EXPECT_EQ(MediaStreamTrack::GetTrack(track)->GetMutedState(), false);
- MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track);
-}
+ EXPECT_EQ(track.source().readyState(),
+ blink::WebMediaStreamSource::ReadyStateMuted);
-// 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(0, 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;
+ base::RunLoop run_loop2;
+ base::Closure quit_closure2 = run_loop2.QuitClosure();
EXPECT_CALL(*mock_source(), DoSetMutedState(_))
- .WillOnce(DoAll(SaveArg<0>(&muted_state), RunClosure(quit_closure)));
- run_loop.Run();
- EXPECT_EQ(muted_state, true);
+ .WillOnce(DoAll(SaveArg<0>(&muted_state), RunClosure(quit_closure2)));
+ DeliverVideoFrameAndWaitForRenderer(640, 480, &sink);
+ run_loop2.Run();
- // 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);
+ EXPECT_EQ(muted_state, false);
+ EXPECT_EQ(track.source().readyState(),
+ blink::WebMediaStreamSource::ReadyStateLive);
- MediaStreamVideoSink::RemoveFromVideoTrack(&sink1, track1);
- MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2);
+ MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track);
}
} // namespace content
« no previous file with comments | « content/renderer/media/media_stream_video_source.cc ('k') | content/renderer/media/media_stream_video_track.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698