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

Unified Diff: content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc

Issue 10829190: Resolve the problems where we can leak the system tray UI (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed testbots. Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
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..e5b31ee83f2c4271d3929382fc27758311face5d 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
@@ -337,8 +337,56 @@ TEST_F(MediaStreamDispatcherHostTest, FailDevice) {
// TODO(perkj): test audio device failure?
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _));
host_->OnStopGeneratedStream(label);
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, StopGeneratedStreamsOnChannelClosing) {
+ 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);
+ // Wait until the streams are all generated.
+ WaitForResult();
+
+ // Calling OnChannelClosing() to cancel all the pending/generated streams.
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _))
+ .Times(3);
+ host_->OnChannelClosing();
+
+ // Streams should have been cleaned up.
+ EXPECT_EQ(host_->NumberOfStreams(), 0u);
+}
+
}; // namespace media_stream

Powered by Google App Engine
This is Rietveld 408576698