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 |