Chromium Code Reviews| Index: content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| index 9e197df642405f1ad790f6e55e3123016889d700..837bf2cccaa5f6154e0f98d6f160b9d3d14765ef 100644 |
| --- a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| +++ b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| @@ -321,6 +321,7 @@ TEST_F(MediaStreamDispatcherHostTest, FailDevice) { |
| EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1)); |
| host_->OnGenerateStream(kPageRequestId, options); |
| EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _)); |
| + EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _)); |
|
perkj_chrome
2012/08/10 07:09:31
Move this to just before OnStopGeneratedStream
no longer working on chromium
2012/08/10 11:50:56
Done.
|
| WaitForResult(); |
| std::string label = host_->label_; |
| @@ -341,4 +342,58 @@ TEST_F(MediaStreamDispatcherHostTest, FailDevice) { |
| EXPECT_EQ(host_->NumberOfStreams(), 0u); |
| } |
| +TEST_F(MediaStreamDispatcherHostTest, CancelPendingStreamsOnChannelClosing) { |
| + StreamOptions options(false, true); |
| + |
| + EXPECT_CALL(*host_, GetMediaObserver()) |
| + .WillRepeatedly(Return(media_observer_.get())); |
| + |
| + // Create multiple GenerateStream requests. |
| + size_t streams = 5; |
| + for (size_t i = 1; i <= streams; ++i) { |
| + host_->OnGenerateStream(kPageRequestId + i, options); |
| + EXPECT_EQ(host_->NumberOfStreams(), i); |
| + } |
| + |
| + // Calling OnChannelClosing() to cancel all the pending requests. |
| + host_->OnChannelClosing(); |
| + |
| + // Streams should have been cleaned up. |
| + EXPECT_EQ(host_->NumberOfStreams(), 0u); |
| +} |
| + |
| +TEST_F(MediaStreamDispatcherHostTest, StopAllStreamsOnChannelClosing) { |
| + StreamOptions options(false, true); |
| + |
| + EXPECT_CALL(*host_, GetMediaObserver()) |
| + .WillRepeatedly(Return(media_observer_.get())); |
| + |
| + // Create first group of streams. |
| + size_t generated_streams = 3; |
| + for (size_t i = 0; i < generated_streams; ++i) { |
| + EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId + i, 0, 1)); |
| + host_->OnGenerateStream(kPageRequestId + i, options); |
| + } |
| + EXPECT_EQ(host_->NumberOfStreams(), generated_streams); |
| + EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _)) |
| + .Times(3); |
| + EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _)) |
|
perkj_chrome
2012/08/10 07:09:31
Move this expect to just before host->OnChannelClo
no longer working on chromium
2012/08/10 11:50:56
Done.
|
| + .Times(3); |
| + // Wait until the streams are all generated. |
| + WaitForResult(); |
| + |
| + // Create second group of streams. |
| + size_t pending_streams = 3; |
|
perkj_chrome
2012/08/10 07:09:31
No need to test CancelPendingStreams again. You ha
no longer working on chromium
2012/08/10 11:50:56
Done.
|
| + for (size_t i = 1; i <= pending_streams; ++i) { |
| + host_->OnGenerateStream(kPageRequestId + generated_streams + i, options); |
| + } |
| + EXPECT_EQ(host_->NumberOfStreams(), pending_streams + generated_streams); |
| + |
| + // Calling OnChannelClosing() to cancel all the pending/generated streams. |
| + host_->OnChannelClosing(); |
| + |
| + // Streams should have been cleaned up. |
| + EXPECT_EQ(host_->NumberOfStreams(), 0u); |
| +} |
| + |
| }; // namespace media_stream |