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

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

Issue 131763002: Adds MediaStreamSource, MediaStreamAudioSource and MediaStreamVideoCaptureDeviceSource (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "content/renderer/media/media_stream_extra_data.h" 7 #include "content/renderer/media/media_stream_extra_data.h"
8 #include "content/renderer/media/media_stream_impl.h" 8 #include "content/renderer/media/media_stream_impl.h"
9 #include "content/renderer/media/mock_media_stream_dependency_factory.h" 9 #include "content/renderer/media/mock_media_stream_dependency_factory.h"
10 #include "content/renderer/media/mock_media_stream_dispatcher.h" 10 #include "content/renderer/media/mock_media_stream_dispatcher.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 last_generated_stream_ = stream; 46 last_generated_stream_ = stream;
47 state_ = request_succeeded ? REQUEST_SUCCEEDED : REQUEST_FAILED; 47 state_ = request_succeeded ? REQUEST_SUCCEEDED : REQUEST_FAILED;
48 } 48 }
49 49
50 virtual blink::WebMediaStream GetMediaStream( 50 virtual blink::WebMediaStream GetMediaStream(
51 const GURL& url) OVERRIDE { 51 const GURL& url) OVERRIDE {
52 return last_generated_stream_; 52 return last_generated_stream_;
53 } 53 }
54 54
55 using MediaStreamImpl::OnLocalMediaStreamStop; 55 using MediaStreamImpl::OnLocalMediaStreamStop;
56 using MediaStreamImpl::OnLocalSourceStop; 56 using MediaStreamImpl::OnLocalSourceStopped;
57 57
58 const blink::WebMediaStream& last_generated_stream() { 58 const blink::WebMediaStream& last_generated_stream() {
59 return last_generated_stream_; 59 return last_generated_stream_;
60 } 60 }
61 61
62 RequestState request_state() const { return state_; } 62 RequestState request_state() const { return state_; }
63 63
64 private: 64 private:
65 blink::WebMediaStream last_generated_stream_; 65 blink::WebMediaStream last_generated_stream_;
66 RequestState state_; 66 RequestState state_;
67 }; 67 };
68 68
69 class MediaStreamImplTest : public ::testing::Test { 69 class MediaStreamImplTest : public ::testing::Test {
70 public: 70 public:
71 virtual void SetUp() { 71 virtual void SetUp() {
72 // Create our test object. 72 // Create our test object.
73 ms_dispatcher_.reset(new MockMediaStreamDispatcher()); 73 ms_dispatcher_.reset(new MockMediaStreamDispatcher());
74 dependency_factory_.reset(new MockMediaStreamDependencyFactory()); 74 dependency_factory_.reset(new MockMediaStreamDependencyFactory());
75 ms_impl_.reset(new MediaStreamImplUnderTest(ms_dispatcher_.get(), 75 ms_impl_.reset(new MediaStreamImplUnderTest(ms_dispatcher_.get(),
76 dependency_factory_.get())); 76 dependency_factory_.get()));
77 } 77 }
78 78
79 blink::WebMediaStream RequestLocalMediaStream() { 79 blink::WebMediaStream RequestLocalMediaStream() {
80 ms_impl_->RequestUserMedia(); 80 ms_impl_->RequestUserMedia();
81 FakeMediaStreamDispatcherComplete(); 81 FakeMediaStreamDispatcherComplete();
82 ChangeVideoSourceStateToLive(); 82 ChangeVideoSourceStateToLive();
83 ChangeAudioSourceStateToLive();
84 83
85 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED, 84 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED,
86 ms_impl_->request_state()); 85 ms_impl_->request_state());
87 86
88 blink::WebMediaStream desc = ms_impl_->last_generated_stream(); 87 blink::WebMediaStream desc = ms_impl_->last_generated_stream();
89 content::MediaStreamExtraData* extra_data = 88 content::MediaStreamExtraData* extra_data =
90 static_cast<content::MediaStreamExtraData*>(desc.extraData()); 89 static_cast<content::MediaStreamExtraData*>(desc.extraData());
91 if (!extra_data || !extra_data->stream().get()) { 90 if (!extra_data || !extra_data->stream().get()) {
92 ADD_FAILURE(); 91 ADD_FAILURE();
93 return desc; 92 return desc;
(...skipping 12 matching lines...) Expand all
106 ms_dispatcher_->audio_array(), 105 ms_dispatcher_->audio_array(),
107 ms_dispatcher_->video_array()); 106 ms_dispatcher_->video_array());
108 } 107 }
109 108
110 void ChangeVideoSourceStateToLive() { 109 void ChangeVideoSourceStateToLive() {
111 if (dependency_factory_->last_video_source() != NULL) { 110 if (dependency_factory_->last_video_source() != NULL) {
112 dependency_factory_->last_video_source()->SetLive(); 111 dependency_factory_->last_video_source()->SetLive();
113 } 112 }
114 } 113 }
115 114
116 void ChangeAudioSourceStateToLive() {
117 if (dependency_factory_->last_audio_source() != NULL) {
118 dependency_factory_->last_audio_source()->SetLive();
119 }
120 }
121
122 void ChangeVideoSourceStateToEnded() { 115 void ChangeVideoSourceStateToEnded() {
123 if (dependency_factory_->last_video_source() != NULL) { 116 if (dependency_factory_->last_video_source() != NULL) {
124 dependency_factory_->last_video_source()->SetEnded(); 117 dependency_factory_->last_video_source()->SetEnded();
125 } 118 }
126 } 119 }
127 120
128 void ChangeAudioSourceStateToEnded() {
129 if (dependency_factory_->last_audio_source() != NULL) {
130 dependency_factory_->last_audio_source()->SetEnded();
131 }
132 }
133
134 protected: 121 protected:
135 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_; 122 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_;
136 scoped_ptr<MediaStreamImplUnderTest> ms_impl_; 123 scoped_ptr<MediaStreamImplUnderTest> ms_impl_;
137 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_; 124 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_;
138 }; 125 };
139 126
140 TEST_F(MediaStreamImplTest, GenerateMediaStream) { 127 TEST_F(MediaStreamImplTest, GenerateMediaStream) {
141 // Generate a stream with both audio and video. 128 // Generate a stream with both audio and video.
142 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); 129 blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
143 } 130 }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 // Test that the source is stopped even if there are two MediaStreams using 216 // Test that the source is stopped even if there are two MediaStreams using
230 // the same source. 217 // the same source.
231 TEST_F(MediaStreamImplTest, StopSource) { 218 TEST_F(MediaStreamImplTest, StopSource) {
232 // Generate a stream with both audio and video. 219 // Generate a stream with both audio and video.
233 blink::WebMediaStream desc1 = RequestLocalMediaStream(); 220 blink::WebMediaStream desc1 = RequestLocalMediaStream();
234 blink::WebMediaStream desc2 = RequestLocalMediaStream(); 221 blink::WebMediaStream desc2 = RequestLocalMediaStream();
235 222
236 // Stop the video source. 223 // Stop the video source.
237 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 224 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
238 desc1.videoTracks(video_tracks); 225 desc1.videoTracks(video_tracks);
239 ms_impl_->OnLocalSourceStop(video_tracks[0].source()); 226 ms_impl_->OnLocalSourceStopped(video_tracks[0].source());
240 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); 227 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
241 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 228 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
242 229
243 // Stop the audio source. 230 // Stop the audio source.
244 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 231 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
245 desc1.audioTracks(audio_tracks); 232 desc1.audioTracks(audio_tracks);
246 ms_impl_->OnLocalSourceStop(audio_tracks[0].source()); 233 ms_impl_->OnLocalSourceStopped(audio_tracks[0].source());
247 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 234 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
248 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 235 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
249 } 236 }
250 237
251 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. 238 // Test that the MediaStreams are deleted if the owning WebFrame is deleted.
252 // In the unit test the owning frame is NULL. 239 // In the unit test the owning frame is NULL.
253 TEST_F(MediaStreamImplTest, FrameWillClose) { 240 TEST_F(MediaStreamImplTest, FrameWillClose) {
254 // Test a stream with both audio and video. 241 // Test a stream with both audio and video.
255 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); 242 blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
256 243
257 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. 244 // Test that the MediaStreams are deleted if the owning WebFrame is deleted.
258 // In the unit test the owning frame is NULL. 245 // In the unit test the owning frame is NULL.
259 ms_impl_->FrameWillClose(NULL); 246 ms_impl_->FrameWillClose(NULL);
260 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 247 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
261 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 248 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
262 } 249 }
263 250
264 // This test what happens if a source to a MediaSteam fails to start. 251 // This test what happens if a source to a MediaSteam fails to start.
265 TEST_F(MediaStreamImplTest, MediaSourceFailToStart) { 252 TEST_F(MediaStreamImplTest, MediaSourceFailToStart) {
266 ms_impl_->RequestUserMedia(); 253 ms_impl_->RequestUserMedia();
267 FakeMediaStreamDispatcherComplete(); 254 FakeMediaStreamDispatcherComplete();
268 ChangeVideoSourceStateToEnded(); 255 ChangeVideoSourceStateToEnded();
269 ChangeAudioSourceStateToEnded();
270 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_FAILED, 256 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_FAILED,
271 ms_impl_->request_state()); 257 ms_impl_->request_state());
272 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 258 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
273 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 259 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
274 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 260 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
275 } 261 }
276 262
277 // This test what happens if MediaStreamImpl is deleted while the sources of a 263 // This test what happens if MediaStreamImpl is deleted while the sources of a
278 // MediaStream is being started. 264 // MediaStream is being started.
279 TEST_F(MediaStreamImplTest, MediaStreamImplShutDown) { 265 TEST_F(MediaStreamImplTest, MediaStreamImplShutDown) {
280 ms_impl_->RequestUserMedia(); 266 ms_impl_->RequestUserMedia();
281 FakeMediaStreamDispatcherComplete(); 267 FakeMediaStreamDispatcherComplete();
282 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 268 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
283 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, 269 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
284 ms_impl_->request_state()); 270 ms_impl_->request_state());
285 ms_impl_.reset(); 271 ms_impl_.reset();
286 ChangeAudioSourceStateToLive();
287 ChangeVideoSourceStateToLive(); 272 ChangeVideoSourceStateToLive();
288 } 273 }
289 274
290 // This test what happens if the WebFrame is closed while the MediaStream is 275 // This test what happens if the WebFrame is closed while the MediaStream is
291 // being generated by the MediaStreamDispatcher. 276 // being generated by the MediaStreamDispatcher.
292 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingStream) { 277 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingStream) {
293 ms_impl_->RequestUserMedia(); 278 ms_impl_->RequestUserMedia();
294 ms_impl_->FrameWillClose(NULL); 279 ms_impl_->FrameWillClose(NULL);
295 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 280 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
296 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); 281 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
297 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter()); 282 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter());
298 ChangeAudioSourceStateToLive();
299 ChangeVideoSourceStateToLive(); 283 ChangeVideoSourceStateToLive();
300 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, 284 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
301 ms_impl_->request_state()); 285 ms_impl_->request_state());
302 } 286 }
303 287
304 // This test what happens if the WebFrame is closed while the sources are being 288 // This test what happens if the WebFrame is closed while the sources are being
305 // started by MediaStreamDependencyFactory. 289 // started by MediaStreamDependencyFactory.
306 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingSources) { 290 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingSources) {
307 ms_impl_->RequestUserMedia(); 291 ms_impl_->RequestUserMedia();
308 FakeMediaStreamDispatcherComplete(); 292 FakeMediaStreamDispatcherComplete();
309 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 293 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
310 ms_impl_->FrameWillClose(NULL); 294 ms_impl_->FrameWillClose(NULL);
311 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 295 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
312 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 296 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
313 ChangeAudioSourceStateToLive();
314 ChangeVideoSourceStateToLive(); 297 ChangeVideoSourceStateToLive();
315 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, 298 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
316 ms_impl_->request_state()); 299 ms_impl_->request_state());
317 } 300 }
318 301
319 // This test what happens if stop is called on a stream after the frame has 302 // This test what happens if stop is called on a stream after the frame has
320 // been reloaded. 303 // been reloaded.
321 TEST_F(MediaStreamImplTest, StopStreamAfterReload) { 304 TEST_F(MediaStreamImplTest, StopStreamAfterReload) {
322 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); 305 blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
323 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 306 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
324 ms_impl_->FrameWillClose(NULL); 307 ms_impl_->FrameWillClose(NULL);
325 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 308 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
326 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 309 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
327 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8()); 310 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8());
328 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 311 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
329 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 312 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
330 } 313 }
331 314
332 } // namespace content 315 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_impl.cc ('k') | content/renderer/media/media_stream_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698