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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <string> 5 #include <string>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "content/browser/browser_thread_impl.h" 9 #include "content/browser/browser_thread_impl.h"
10 #include "content/browser/renderer_host/media/audio_input_device_manager.h" 10 #include "content/browser/renderer_host/media/audio_input_device_manager.h"
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 } 314 }
315 315
316 TEST_F(MediaStreamDispatcherHostTest, FailDevice) { 316 TEST_F(MediaStreamDispatcherHostTest, FailDevice) {
317 StreamOptions options(false, true); 317 StreamOptions options(false, true);
318 318
319 EXPECT_CALL(*host_, GetMediaObserver()) 319 EXPECT_CALL(*host_, GetMediaObserver())
320 .WillRepeatedly(Return(media_observer_.get())); 320 .WillRepeatedly(Return(media_observer_.get()));
321 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1)); 321 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1));
322 host_->OnGenerateStream(kPageRequestId, options); 322 host_->OnGenerateStream(kPageRequestId, options);
323 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _)); 323 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
324 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.
324 WaitForResult(); 325 WaitForResult();
325 std::string label = host_->label_; 326 std::string label = host_->label_;
326 327
327 EXPECT_EQ(host_->audio_devices_.size(), 0u); 328 EXPECT_EQ(host_->audio_devices_.size(), 0u);
328 EXPECT_EQ(host_->video_devices_.size(), 1u); 329 EXPECT_EQ(host_->video_devices_.size(), 1u);
329 EXPECT_EQ(host_->NumberOfStreams(), 1u); 330 EXPECT_EQ(host_->NumberOfStreams(), 1u);
330 331
331 EXPECT_CALL(*host_, OnVideoDeviceFailed(kRenderId, 0)); 332 EXPECT_CALL(*host_, OnVideoDeviceFailed(kRenderId, 0));
332 int session_id = host_->video_devices_[0].session_id; 333 int session_id = host_->video_devices_[0].session_id;
333 media_stream_manager_->video_capture_manager()->Error(session_id); 334 media_stream_manager_->video_capture_manager()->Error(session_id);
334 WaitForResult(); 335 WaitForResult();
335 EXPECT_EQ(host_->video_devices_.size(), 0u); 336 EXPECT_EQ(host_->video_devices_.size(), 0u);
336 EXPECT_EQ(host_->NumberOfStreams(), 1u); 337 EXPECT_EQ(host_->NumberOfStreams(), 1u);
337 338
338 // TODO(perkj): test audio device failure? 339 // TODO(perkj): test audio device failure?
339 340
340 host_->OnStopGeneratedStream(label); 341 host_->OnStopGeneratedStream(label);
341 EXPECT_EQ(host_->NumberOfStreams(), 0u); 342 EXPECT_EQ(host_->NumberOfStreams(), 0u);
342 } 343 }
343 344
345 TEST_F(MediaStreamDispatcherHostTest, CancelPendingStreamsOnChannelClosing) {
346 StreamOptions options(false, true);
347
348 EXPECT_CALL(*host_, GetMediaObserver())
349 .WillRepeatedly(Return(media_observer_.get()));
350
351 // Create multiple GenerateStream requests.
352 size_t streams = 5;
353 for (size_t i = 1; i <= streams; ++i) {
354 host_->OnGenerateStream(kPageRequestId + i, options);
355 EXPECT_EQ(host_->NumberOfStreams(), i);
356 }
357
358 // Calling OnChannelClosing() to cancel all the pending requests.
359 host_->OnChannelClosing();
360
361 // Streams should have been cleaned up.
362 EXPECT_EQ(host_->NumberOfStreams(), 0u);
363 }
364
365 TEST_F(MediaStreamDispatcherHostTest, StopAllStreamsOnChannelClosing) {
366 StreamOptions options(false, true);
367
368 EXPECT_CALL(*host_, GetMediaObserver())
369 .WillRepeatedly(Return(media_observer_.get()));
370
371 // Create first group of streams.
372 size_t generated_streams = 3;
373 for (size_t i = 0; i < generated_streams; ++i) {
374 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId + i, 0, 1));
375 host_->OnGenerateStream(kPageRequestId + i, options);
376 }
377 EXPECT_EQ(host_->NumberOfStreams(), generated_streams);
378 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _))
379 .Times(3);
380 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.
381 .Times(3);
382 // Wait until the streams are all generated.
383 WaitForResult();
384
385 // Create second group of streams.
386 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.
387 for (size_t i = 1; i <= pending_streams; ++i) {
388 host_->OnGenerateStream(kPageRequestId + generated_streams + i, options);
389 }
390 EXPECT_EQ(host_->NumberOfStreams(), pending_streams + generated_streams);
391
392 // Calling OnChannelClosing() to cancel all the pending/generated streams.
393 host_->OnChannelClosing();
394
395 // Streams should have been cleaned up.
396 EXPECT_EQ(host_->NumberOfStreams(), 0u);
397 }
398
344 }; // namespace media_stream 399 }; // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698