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

Side by Side Diff: content/renderer/media/media_stream_video_track_unittest.cc

Issue 218763007: Update MediaStreamTrack::Stop to latest draft. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review comments and added tests. Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/strings/utf_string_conversions.h" 5 #include "base/strings/utf_string_conversions.h"
6 #include "content/renderer/media/media_stream_video_track.h" 6 #include "content/renderer/media/media_stream_video_track.h"
7 #include "content/renderer/media/mock_media_stream_dependency_factory.h" 7 #include "content/renderer/media/mock_media_stream_dependency_factory.h"
8 #include "content/renderer/media/mock_media_stream_video_source.h" 8 #include "content/renderer/media/mock_media_stream_video_source.h"
9 #include "media/base/video_frame.h" 9 #include "media/base/video_frame.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 27 matching lines...) Expand all
38 38
39 private: 39 private:
40 int number_of_frames_; 40 int number_of_frames_;
41 bool enabled_; 41 bool enabled_;
42 blink::WebMediaStreamSource::ReadyState state_; 42 blink::WebMediaStreamSource::ReadyState state_;
43 }; 43 };
44 44
45 class MediaStreamVideoTrackTest : public ::testing::Test { 45 class MediaStreamVideoTrackTest : public ::testing::Test {
46 public: 46 public:
47 MediaStreamVideoTrackTest() 47 MediaStreamVideoTrackTest()
48 : mock_source_(new MockMediaStreamVideoSource(&factory_, false)) { 48 : mock_source_(new MockMediaStreamVideoSource(&factory_, false)),
49 webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"), 49 source_started_(false) {
50 blink_source_.initialize(base::UTF8ToUTF16("dummy_source_id"),
50 blink::WebMediaStreamSource::TypeVideo, 51 blink::WebMediaStreamSource::TypeVideo,
51 base::UTF8ToUTF16("dummy_source_name")); 52 base::UTF8ToUTF16("dummy_source_name"));
52 webkit_source_.setExtraData(mock_source_); 53 blink_source_.setExtraData(mock_source_);
53 } 54 }
54 55
55 protected: 56 protected:
56 // Create a track that's associated with |mock_source_|. 57 // Create a track that's associated with |mock_source_|.
57 blink::WebMediaStreamTrack CreateTrack() { 58 blink::WebMediaStreamTrack CreateTrack() {
58 blink::WebMediaConstraints constraints; 59 blink::WebMediaConstraints constraints;
59 constraints.initialize(); 60 constraints.initialize();
60 bool enabled = true; 61 bool enabled = true;
61 blink::WebMediaStreamTrack track = 62 blink::WebMediaStreamTrack track =
62 MediaStreamVideoTrack::CreateVideoTrack( 63 MediaStreamVideoTrack::CreateVideoTrack(
63 mock_source_, constraints, 64 mock_source_, constraints,
64 MediaStreamSource::ConstraintsCallback(), enabled, &factory_); 65 MediaStreamSource::ConstraintsCallback(), enabled, &factory_);
65 mock_source_->StartMockedSource(); 66 if (!source_started_) {
66 67 mock_source_->StartMockedSource();
68 source_started_ = true;
69 }
67 return track; 70 return track;
68 } 71 }
69 72
70 MockMediaStreamVideoSource* mock_source() { return mock_source_; } 73 MockMediaStreamVideoSource* mock_source() { return mock_source_; }
74 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.
75 return blink_source_;
76 }
71 77
72 private: 78 private:
73 MockMediaStreamDependencyFactory factory_; 79 MockMediaStreamDependencyFactory factory_;
74 blink::WebMediaStreamSource webkit_source_; 80 blink::WebMediaStreamSource blink_source_;
75 // |mock_source_| is owned by |webkit_source_|. 81 // |mock_source_| is owned by |webkit_source_|.
76 MockMediaStreamVideoSource* mock_source_; 82 MockMediaStreamVideoSource* mock_source_;
83 bool source_started_;
77 }; 84 };
78 85
79 TEST_F(MediaStreamVideoTrackTest, GetAdapter) { 86 TEST_F(MediaStreamVideoTrackTest, GetAdapter) {
80 blink::WebMediaStreamTrack track = CreateTrack(); 87 blink::WebMediaStreamTrack track = CreateTrack();
81 MediaStreamVideoTrack* video_track = 88 MediaStreamVideoTrack* video_track =
82 MediaStreamVideoTrack::GetVideoTrack(track); 89 MediaStreamVideoTrack::GetVideoTrack(track);
83 EXPECT_TRUE(video_track->GetVideoAdapter() != NULL); 90 EXPECT_TRUE(video_track->GetVideoAdapter() != NULL);
84 } 91 }
85 92
86 TEST_F(MediaStreamVideoTrackTest, AddAndRemoveSink) { 93 TEST_F(MediaStreamVideoTrackTest, AddAndRemoveSink) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 MockVideoSink sink; 141 MockVideoSink sink;
135 blink::WebMediaStreamTrack track = CreateTrack(); 142 blink::WebMediaStreamTrack track = CreateTrack();
136 MediaStreamVideoSink::AddToVideoTrack(&sink, track); 143 MediaStreamVideoSink::AddToVideoTrack(&sink, track);
137 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink.state()); 144 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink.state());
138 145
139 mock_source()->StopSource(); 146 mock_source()->StopSource();
140 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink.state()); 147 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink.state());
141 MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track); 148 MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track);
142 } 149 }
143 150
151 TEST_F(MediaStreamVideoTrackTest, StopLastTrack) {
152 MockVideoSink sink1;
153 blink::WebMediaStreamTrack track1 = CreateTrack();
154 MediaStreamVideoSink::AddToVideoTrack(&sink1, track1);
155 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink1.state());
156
157 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
158 blink_source().readyState());
159
160 MockVideoSink sink2;
161 blink::WebMediaStreamTrack track2 = CreateTrack();
162 MediaStreamVideoSink::AddToVideoTrack(&sink2, track2);
163 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink2.state());
164
165 MediaStreamVideoTrack* native_track1 =
166 MediaStreamVideoTrack::GetVideoTrack(track1);
167 native_track1->StopTrack();
168 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink1.state());
169 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
170 blink_source().readyState());
171 MediaStreamVideoSink::RemoveFromVideoTrack(&sink1, track1);
172
173 MediaStreamVideoTrack* native_track2 =
174 MediaStreamVideoTrack::GetVideoTrack(track2);
175 native_track2->StopTrack();
176 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink2.state());
177 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
178 blink_source().readyState());
179 MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2);
180 }
181
144 } // namespace content 182 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698