| 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 d2e8482f2a4556a7cc6595a67bcecf8aa0ae9d32..c2307c6243a7398f03828c0bf53a2ab51c29e5b3 100644
|
| --- a/content/renderer/media/media_stream_video_track_unittest.cc
|
| +++ b/content/renderer/media/media_stream_video_track_unittest.cc
|
| @@ -15,11 +15,12 @@ namespace content {
|
| 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:
|
| @@ -32,18 +33,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 {
|
| + 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) {
|
| @@ -111,4 +118,35 @@ TEST_F(MediaStreamVideoTrackTest, SourceStopped) {
|
| MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track);
|
| }
|
|
|
| +TEST_F(MediaStreamVideoTrackTest, StopLastTrack) {
|
| + MockMediaStreamVideoSink sink1;
|
| + blink::WebMediaStreamTrack track1 = CreateTrack();
|
| + MediaStreamVideoSink::AddToVideoTrack(&sink1, track1);
|
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink1.state());
|
| +
|
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
|
| + blink_source().readyState());
|
| +
|
| + MockMediaStreamVideoSink sink2;
|
| + blink::WebMediaStreamTrack track2 = CreateTrack();
|
| + MediaStreamVideoSink::AddToVideoTrack(&sink2, track2);
|
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink2.state());
|
| +
|
| + MediaStreamVideoTrack* native_track1 =
|
| + MediaStreamVideoTrack::GetVideoTrack(track1);
|
| + native_track1->Stop();
|
| + 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->Stop();
|
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink2.state());
|
| + EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
|
| + blink_source().readyState());
|
| + MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2);
|
| +}
|
| +
|
| } // namespace content
|
|
|