Chromium Code Reviews| Index: content/renderer/media/media_stream_video_track_unittest.cc |
| diff --git a/content/renderer/media/media_stream_video_track_unittest.cc b/content/renderer/media/media_stream_video_track_unittest.cc |
| index 242b9cefff9929ab62fefe09306fef6dd0f0f60c..6f4d3b7d387139e228770df3ab1ad56672b26391 100644 |
| --- a/content/renderer/media/media_stream_video_track_unittest.cc |
| +++ b/content/renderer/media/media_stream_video_track_unittest.cc |
| @@ -45,11 +45,12 @@ class MockVideoSink : public MediaStreamVideoSink { |
| class MediaStreamVideoTrackTest : public ::testing::Test { |
| public: |
| MediaStreamVideoTrackTest() |
| - : mock_source_(new MockMediaStreamVideoSource(&factory_, false)) { |
| - webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"), |
| + : mock_source_(new MockMediaStreamVideoSource(&factory_, false)), |
| + source_started_(false) { |
| + blink_source_.initialize(base::UTF8ToUTF16("dummy_source_id"), |
| blink::WebMediaStreamSource::TypeVideo, |
| base::UTF8ToUTF16("dummy_source_name")); |
| - webkit_source_.setExtraData(mock_source_); |
| + blink_source_.setExtraData(mock_source_); |
| } |
| protected: |
| @@ -62,18 +63,24 @@ class MediaStreamVideoTrackTest : public ::testing::Test { |
| MediaStreamVideoTrack::CreateVideoTrack( |
| mock_source_, constraints, |
| MediaStreamSource::ConstraintsCallback(), enabled, &factory_); |
| - mock_source_->StartMockedSource(); |
| - |
| + if (!source_started_) { |
| + mock_source_->StartMockedSource(); |
| + source_started_ = true; |
| + } |
| return track; |
| } |
| MockMediaStreamVideoSource* mock_source() { return mock_source_; } |
| + const blink::WebMediaStreamSource blink_source() const { |
|
tommi (sloooow) - chröme
2014/04/03 08:53:16
did you intend to return a const&?
perkj_chrome
2014/04/03 11:58:34
Done.
|
| + return blink_source_; |
| + } |
| private: |
| MockMediaStreamDependencyFactory factory_; |
| - blink::WebMediaStreamSource webkit_source_; |
| + blink::WebMediaStreamSource blink_source_; |
| // |mock_source_| is owned by |webkit_source_|. |
| MockMediaStreamVideoSource* mock_source_; |
| + bool source_started_; |
| }; |
| TEST_F(MediaStreamVideoTrackTest, GetAdapter) { |
| @@ -141,4 +148,35 @@ TEST_F(MediaStreamVideoTrackTest, SourceStopped) { |
| MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track); |
| } |
| +TEST_F(MediaStreamVideoTrackTest, StopLastTrack) { |
| + MockVideoSink sink1; |
| + blink::WebMediaStreamTrack track1 = CreateTrack(); |
| + MediaStreamVideoSink::AddToVideoTrack(&sink1, track1); |
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink1.state()); |
| + |
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, |
| + blink_source().readyState()); |
| + |
| + MockVideoSink sink2; |
| + blink::WebMediaStreamTrack track2 = CreateTrack(); |
| + MediaStreamVideoSink::AddToVideoTrack(&sink2, track2); |
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink2.state()); |
| + |
| + MediaStreamVideoTrack* native_track1 = |
| + MediaStreamVideoTrack::GetVideoTrack(track1); |
| + native_track1->StopTrack(); |
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink1.state()); |
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, |
| + blink_source().readyState()); |
| + MediaStreamVideoSink::RemoveFromVideoTrack(&sink1, track1); |
| + |
| + MediaStreamVideoTrack* native_track2 = |
| + MediaStreamVideoTrack::GetVideoTrack(track2); |
| + native_track2->StopTrack(); |
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink2.state()); |
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, |
| + blink_source().readyState()); |
| + MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2); |
| +} |
| + |
| } // namespace content |