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

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

Issue 218763007: Update MediaStreamTrack::Stop to latest draft. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments. 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 (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.h" 7 #include "content/renderer/media/media_stream.h"
8 #include "content/renderer/media/media_stream_impl.h" 8 #include "content/renderer/media/media_stream_impl.h"
9 #include "content/renderer/media/media_stream_track.h"
9 #include "content/renderer/media/mock_media_stream_dependency_factory.h" 10 #include "content/renderer/media/mock_media_stream_dependency_factory.h"
10 #include "content/renderer/media/mock_media_stream_dispatcher.h" 11 #include "content/renderer/media/mock_media_stream_dispatcher.h"
11 #include "content/renderer/media/mock_media_stream_video_source.h" 12 #include "content/renderer/media/mock_media_stream_video_source.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/WebKit/public/platform/WebMediaStream.h" 14 #include "third_party/WebKit/public/platform/WebMediaStream.h"
14 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" 15 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
15 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 16 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
16 #include "third_party/WebKit/public/platform/WebString.h" 17 #include "third_party/WebKit/public/platform/WebString.h"
17 #include "third_party/WebKit/public/platform/WebVector.h" 18 #include "third_party/WebKit/public/platform/WebVector.h"
18 19
(...skipping 17 matching lines...) Expand all
36 REQUEST_NOT_STARTED, 37 REQUEST_NOT_STARTED,
37 REQUEST_NOT_COMPLETE, 38 REQUEST_NOT_COMPLETE,
38 REQUEST_SUCCEEDED, 39 REQUEST_SUCCEEDED,
39 REQUEST_FAILED, 40 REQUEST_FAILED,
40 }; 41 };
41 42
42 MediaStreamImplUnderTest(MediaStreamDispatcher* media_stream_dispatcher, 43 MediaStreamImplUnderTest(MediaStreamDispatcher* media_stream_dispatcher,
43 MediaStreamDependencyFactory* dependency_factory) 44 MediaStreamDependencyFactory* dependency_factory)
44 : MediaStreamImpl(NULL, media_stream_dispatcher, dependency_factory), 45 : MediaStreamImpl(NULL, media_stream_dispatcher, dependency_factory),
45 state_(REQUEST_NOT_STARTED), 46 state_(REQUEST_NOT_STARTED),
47 result_(NUM_MEDIA_REQUEST_RESULTS),
46 factory_(dependency_factory), 48 factory_(dependency_factory),
47 video_source_(NULL) { 49 video_source_(NULL) {
48 } 50 }
49 51
50 void RequestUserMedia() { 52 void RequestUserMedia() {
51 blink::WebUserMediaRequest user_media_request; 53 blink::WebUserMediaRequest user_media_request;
52 state_ = REQUEST_NOT_COMPLETE; 54 state_ = REQUEST_NOT_COMPLETE;
53 requestUserMedia(user_media_request); 55 requestUserMedia(user_media_request);
54 } 56 }
55 57
56 virtual void CompleteGetUserMediaRequest( 58 virtual void GetUserMediaRequestSucceeded(
57 const blink::WebMediaStream& stream, 59 const blink::WebMediaStream& stream,
60 blink::WebUserMediaRequest* request_info) OVERRIDE {
61 last_generated_stream_ = stream;
62 state_ = REQUEST_SUCCEEDED;
63 }
64
65 virtual void GetUserMediaRequestFailed(
58 blink::WebUserMediaRequest* request_info, 66 blink::WebUserMediaRequest* request_info,
59 content::MediaStreamRequestResult result) OVERRIDE { 67 content::MediaStreamRequestResult result) OVERRIDE {
60 last_generated_stream_ = stream; 68 last_generated_stream_.reset();
69 state_ = REQUEST_FAILED;
61 result_ = result; 70 result_ = result;
62 state_ = (result == MEDIA_DEVICE_OK ? REQUEST_SUCCEEDED : REQUEST_FAILED);
63 }
64
65 virtual blink::WebMediaStream GetMediaStream(
66 const GURL& url) OVERRIDE {
67 return last_generated_stream_;
68 } 71 }
69 72
70 virtual MediaStreamVideoSource* CreateVideoSource( 73 virtual MediaStreamVideoSource* CreateVideoSource(
71 const StreamDeviceInfo& device, 74 const StreamDeviceInfo& device,
72 const MediaStreamSource::SourceStoppedCallback& stop_callback) OVERRIDE { 75 const MediaStreamSource::SourceStoppedCallback& stop_callback) OVERRIDE {
73 video_source_ = new MockMediaStreamVideoCapturerSource(device, 76 video_source_ = new MockMediaStreamVideoCapturerSource(device,
74 stop_callback, 77 stop_callback,
75 factory_); 78 factory_);
76 return video_source_; 79 return video_source_;
77 } 80 }
78 81
79 using MediaStreamImpl::OnLocalMediaStreamStop;
80 using MediaStreamImpl::OnLocalSourceStopped;
81
82 const blink::WebMediaStream& last_generated_stream() { 82 const blink::WebMediaStream& last_generated_stream() {
83 return last_generated_stream_; 83 return last_generated_stream_;
84 } 84 }
85 85
86 void ClearLastGeneratedStream() {
87 last_generated_stream_.reset();
88 }
89
86 MockMediaStreamVideoCapturerSource* last_created_video_source() const { 90 MockMediaStreamVideoCapturerSource* last_created_video_source() const {
87 return video_source_; 91 return video_source_;
88 } 92 }
89 93
90 RequestState request_state() const { return state_; } 94 RequestState request_state() const { return state_; }
91 content::MediaStreamRequestResult error_reason() const { return result_; } 95 content::MediaStreamRequestResult error_reason() const { return result_; }
92 96
93 private: 97 private:
94 blink::WebMediaStream last_generated_stream_; 98 blink::WebMediaStream last_generated_stream_;
95 RequestState state_; 99 RequestState state_;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 video_source->StartMockedSource(); 153 video_source->StartMockedSource();
150 } 154 }
151 155
152 void FailToStartMockedVideoSource() { 156 void FailToStartMockedVideoSource() {
153 MockMediaStreamVideoCapturerSource* video_source = 157 MockMediaStreamVideoCapturerSource* video_source =
154 ms_impl_->last_created_video_source(); 158 ms_impl_->last_created_video_source();
155 if (video_source->SourceHasAttemptedToStart()) 159 if (video_source->SourceHasAttemptedToStart())
156 video_source->FailToStartMockedSource(); 160 video_source->FailToStartMockedSource();
157 } 161 }
158 162
163 void FailToCreateNextAudioCapturer() {
164 dependency_factory_->FailToCreateNextAudioCapturer();
165 }
166
159 protected: 167 protected:
160 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_; 168 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_;
161 scoped_ptr<MediaStreamImplUnderTest> ms_impl_; 169 scoped_ptr<MediaStreamImplUnderTest> ms_impl_;
162 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_; 170 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_;
163 }; 171 };
164 172
165 TEST_F(MediaStreamImplTest, GenerateMediaStream) { 173 TEST_F(MediaStreamImplTest, GenerateMediaStream) {
166 // Generate a stream with both audio and video. 174 // Generate a stream with both audio and video.
167 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); 175 blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
168 } 176 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 desc1.audioTracks(desc1_audio_tracks); 225 desc1.audioTracks(desc1_audio_tracks);
218 blink::WebVector<blink::WebMediaStreamTrack> desc2_audio_tracks; 226 blink::WebVector<blink::WebMediaStreamTrack> desc2_audio_tracks;
219 desc2.audioTracks(desc2_audio_tracks); 227 desc2.audioTracks(desc2_audio_tracks);
220 EXPECT_NE(desc1_audio_tracks[0].source().id(), 228 EXPECT_NE(desc1_audio_tracks[0].source().id(),
221 desc2_audio_tracks[0].source().id()); 229 desc2_audio_tracks[0].source().id());
222 230
223 EXPECT_NE(desc1_audio_tracks[0].source().extraData(), 231 EXPECT_NE(desc1_audio_tracks[0].source().extraData(),
224 desc2_audio_tracks[0].source().extraData()); 232 desc2_audio_tracks[0].source().extraData());
225 } 233 }
226 234
227 TEST_F(MediaStreamImplTest, StopLocalMediaStream) { 235 TEST_F(MediaStreamImplTest, StopLocalTracks) {
228 // Generate a stream with both audio and video. 236 // Generate a stream with both audio and video.
229 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); 237 blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
230 238
231 // Stop generated local streams. 239 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
232 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8()); 240 mixed_desc.audioTracks(audio_tracks);
241 MediaStreamTrack* audio_track = MediaStreamTrack::GetTrack(audio_tracks[0]);
242 audio_track->Stop();
233 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 243 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
244
245 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
246 mixed_desc.videoTracks(video_tracks);
247 MediaStreamTrack* video_track = MediaStreamTrack::GetTrack(video_tracks[0]);
248 video_track->Stop();
234 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 249 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
235 } 250 }
236 251
237 // This test that a source is not stopped even if the MediaStream is stopped if 252 // This test that a source is not stopped even if the tracks in a
238 // there are two MediaStreams using the same device. The source is stopped 253 // MediaStream is stopped if there are two MediaStreams with tracks using the
239 // if there are no more MediaStreams using the device. 254 // same device. The source is stopped
240 TEST_F(MediaStreamImplTest, StopLocalMediaStreamWhenTwoStreamUseSameDevices) { 255 // if there are no more MediaStream tracks using the device.
256 TEST_F(MediaStreamImplTest, StopLocalTracksWhenTwoStreamUseSameDevices) {
241 // Generate a stream with both audio and video. 257 // Generate a stream with both audio and video.
242 blink::WebMediaStream desc1 = RequestLocalMediaStream(); 258 blink::WebMediaStream desc1 = RequestLocalMediaStream();
243 blink::WebMediaStream desc2 = RequestLocalMediaStream(); 259 blink::WebMediaStream desc2 = RequestLocalMediaStream();
244 260
245 ms_impl_->OnLocalMediaStreamStop(desc2.id().utf8()); 261 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks1;
262 desc1.audioTracks(audio_tracks1);
263 MediaStreamTrack* audio_track1 = MediaStreamTrack::GetTrack(audio_tracks1[0]);
264 audio_track1->Stop();
246 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); 265 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
266
267 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks2;
268 desc2.audioTracks(audio_tracks2);
269 MediaStreamTrack* audio_track2 = MediaStreamTrack::GetTrack(audio_tracks2[0]);
270 audio_track2->Stop();
271 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
272
273 blink::WebVector<blink::WebMediaStreamTrack> video_tracks1;
274 desc1.videoTracks(video_tracks1);
275 MediaStreamTrack* video_track1 = MediaStreamTrack::GetTrack(video_tracks1[0]);
276 video_track1->Stop();
247 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter()); 277 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter());
248 278
249 ms_impl_->OnLocalMediaStreamStop(desc1.id().utf8()); 279 blink::WebVector<blink::WebMediaStreamTrack> video_tracks2;
280 desc2.videoTracks(video_tracks2);
281 MediaStreamTrack* video_track2 = MediaStreamTrack::GetTrack(video_tracks2[0]);
282 video_track2->Stop();
283 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
284 }
285
286 TEST_F(MediaStreamImplTest, StopSourceWhenMediaStreamGoesOutOfScope) {
287 // Generate a stream with both audio and video.
288 RequestLocalMediaStream();
289 // Makes sure the test itself don't hold a reference to the created
290 // MediaStream.
291 ms_impl_->ClearLastGeneratedStream();
292
293 // Expect the sources to be stopped when the MediaStream goes out of scope.
250 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 294 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
251 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 295 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
252 } 296 }
253
254 // Test that the source is stopped even if there are two MediaStreams using
255 // the same source.
256 TEST_F(MediaStreamImplTest, StopSource) {
257 // Generate a stream with both audio and video.
258 blink::WebMediaStream desc1 = RequestLocalMediaStream();
259 blink::WebMediaStream desc2 = RequestLocalMediaStream();
260
261 // Stop the video source.
262 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
263 desc1.videoTracks(video_tracks);
264 ms_impl_->OnLocalSourceStopped(video_tracks[0].source());
265 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
266 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
267
268 // Stop the audio source.
269 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
270 desc1.audioTracks(audio_tracks);
271 ms_impl_->OnLocalSourceStopped(audio_tracks[0].source());
272 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
273 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
274 }
275 297
276 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. 298 // Test that the MediaStreams are deleted if the owning WebFrame is deleted.
277 // In the unit test the owning frame is NULL. 299 // In the unit test the owning frame is NULL.
278 TEST_F(MediaStreamImplTest, FrameWillClose) { 300 TEST_F(MediaStreamImplTest, FrameWillClose) {
279 // Test a stream with both audio and video. 301 // Test a stream with both audio and video.
280 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); 302 blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
303 blink::WebMediaStream desc2 = RequestLocalMediaStream();
281 304
282 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. 305 // Test that the MediaStreams are deleted if the owning WebFrame is deleted.
283 // In the unit test the owning frame is NULL. 306 // In the unit test the owning frame is NULL.
284 ms_impl_->FrameWillClose(NULL); 307 ms_impl_->FrameWillClose(NULL);
285 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 308 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
286 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 309 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
287 } 310 }
288 311
289 // This test what happens if a source to a MediaSteam fails to start. 312 // This test what happens if a video source to a MediaSteam fails to start.
290 TEST_F(MediaStreamImplTest, MediaSourceFailToStart) { 313 TEST_F(MediaStreamImplTest, MediaVideoSourceFailToStart) {
291 ms_impl_->RequestUserMedia(); 314 ms_impl_->RequestUserMedia();
292 FakeMediaStreamDispatcherComplete(); 315 FakeMediaStreamDispatcherComplete();
293 FailToStartMockedVideoSource(); 316 FailToStartMockedVideoSource();
294 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_FAILED, 317 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_FAILED,
295 ms_impl_->request_state()); 318 ms_impl_->request_state());
296 EXPECT_EQ(MEDIA_DEVICE_TRACK_START_FAILURE, 319 EXPECT_EQ(MEDIA_DEVICE_TRACK_START_FAILURE,
297 ms_impl_->error_reason()); 320 ms_impl_->error_reason());
298 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 321 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
299 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 322 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
300 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 323 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
301 } 324 }
302 325
303 // This test what happens if MediaStreamImpl is deleted while the sources of a 326 // This test what happens if an audio source fail to initialize.
304 // MediaStream is being started. 327 TEST_F(MediaStreamImplTest, MediaAudioSourceFailToInitialize) {
328 FailToCreateNextAudioCapturer();
329 ms_impl_->RequestUserMedia();
330 FakeMediaStreamDispatcherComplete();
331 StartMockedVideoSource();
332 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_FAILED,
333 ms_impl_->request_state());
334 EXPECT_EQ(MEDIA_DEVICE_TRACK_START_FAILURE,
335 ms_impl_->error_reason());
336 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
337 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
338 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
339 }
340
341 // This test what happens if MediaStreamImpl is deleted before a source has
342 // started.
305 TEST_F(MediaStreamImplTest, MediaStreamImplShutDown) { 343 TEST_F(MediaStreamImplTest, MediaStreamImplShutDown) {
306 ms_impl_->RequestUserMedia(); 344 ms_impl_->RequestUserMedia();
307 FakeMediaStreamDispatcherComplete(); 345 FakeMediaStreamDispatcherComplete();
308 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 346 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
309 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, 347 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
310 ms_impl_->request_state()); 348 ms_impl_->request_state());
311
312 MockMediaStreamVideoCapturerSource* video_source =
313 ms_impl_->last_created_video_source();
314 // Hold on to a blink reference to the source to guarantee that its not
315 // deleted when MediaStreamImpl is deleted.
316 blink::WebMediaStreamSource blink_source = video_source->owner();
317 ms_impl_.reset(); 349 ms_impl_.reset();
318 video_source->StartMockedSource();
319 } 350 }
320 351
321 // This test what happens if the WebFrame is closed while the MediaStream is 352 // This test what happens if the WebFrame is closed while the MediaStream is
322 // being generated by the MediaStreamDispatcher. 353 // being generated by the MediaStreamDispatcher.
323 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingStream) { 354 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingStream) {
324 ms_impl_->RequestUserMedia(); 355 ms_impl_->RequestUserMedia();
325 ms_impl_->FrameWillClose(NULL); 356 ms_impl_->FrameWillClose(NULL);
326 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 357 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
327 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); 358 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
328 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter()); 359 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter());
329 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, 360 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
330 ms_impl_->request_state()); 361 ms_impl_->request_state());
331 } 362 }
332 363
333 // This test what happens if the WebFrame is closed while the sources are being 364 // This test what happens if the WebFrame is closed while the sources are being
334 // started. 365 // started.
335 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingSources) { 366 TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingSources) {
336 ms_impl_->RequestUserMedia(); 367 ms_impl_->RequestUserMedia();
337 FakeMediaStreamDispatcherComplete(); 368 FakeMediaStreamDispatcherComplete();
338 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 369 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
339 ms_impl_->FrameWillClose(NULL); 370 ms_impl_->FrameWillClose(NULL);
340 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 371 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
341 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 372 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
342 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, 373 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
343 ms_impl_->request_state()); 374 ms_impl_->request_state());
344 } 375 }
345 376
346 // This test what happens if stop is called on a stream after the frame has 377 // This test what happens if stop is called on a track after the frame has
347 // been reloaded. 378 // been reloaded.
348 TEST_F(MediaStreamImplTest, StopStreamAfterReload) { 379 TEST_F(MediaStreamImplTest, StopTrackAfterReload) {
349 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); 380 blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
350 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); 381 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
351 ms_impl_->FrameWillClose(NULL); 382 ms_impl_->FrameWillClose(NULL);
352 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 383 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
353 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 384 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
354 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8()); 385
386 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
387 mixed_desc.audioTracks(audio_tracks);
388 MediaStreamTrack* audio_track = MediaStreamTrack::GetTrack(audio_tracks[0]);
389 audio_track->Stop();
355 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); 390 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
391
392 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
393 mixed_desc.videoTracks(video_tracks);
394 MediaStreamTrack* video_track = MediaStreamTrack::GetTrack(video_tracks[0]);
395 video_track->Stop();
356 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); 396 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
357 } 397 }
358 398
359 } // namespace content 399 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_impl.cc ('k') | content/renderer/media/media_stream_track.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698