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

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: added dispatcher_host_unittests and addressed Perk's and Magnus' comments. 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..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

Powered by Google App Engine
This is Rietveld 408576698