| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |