diff options
author | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-18 15:05:58 +0000 |
---|---|---|
committer | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-18 15:05:58 +0000 |
commit | 5982b6f86da8a4098960c50072c8d5fe9a8f3d8d (patch) | |
tree | 0003884d62da2f7d8af9c079b2f1049f7e02665f /content/test/webrtc_audio_device_test.cc | |
parent | 941804cd7cefd01c7bb3222aa02902799e7468f8 (diff) | |
download | chromium_src-5982b6f86da8a4098960c50072c8d5fe9a8f3d8d.zip chromium_src-5982b6f86da8a4098960c50072c8d5fe9a8f3d8d.tar.gz chromium_src-5982b6f86da8a4098960c50072c8d5fe9a8f3d8d.tar.bz2 |
MediaStreamManager needs to outlive its clients like MediaStreamDispatcherHost, which is deleted when the IPC channels goes away. So MediaStreamManager needs to outlive IO thread. But its components like device thread, AudioInputDeviceManager and VideoCaptureManager should be deleted before IO thread gets deleted. We achieve this by having a destructor observer on the IO thread, and delete the components before IO thread goes away.
BUG=137476
TEST=content_unittests
Review URL: https://chromiumcodereview.appspot.com/10786029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147240 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/test/webrtc_audio_device_test.cc')
-rw-r--r-- | content/test/webrtc_audio_device_test.cc | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/content/test/webrtc_audio_device_test.cc b/content/test/webrtc_audio_device_test.cc index 350e0c11..cb9fff9 100644 --- a/content/test/webrtc_audio_device_test.cc +++ b/content/test/webrtc_audio_device_test.cc @@ -133,6 +133,17 @@ void WebRTCAudioDeviceTest::SetUp() { ui_thread_.reset(new content::TestBrowserThread(content::BrowserThread::UI, MessageLoop::current())); + // Create our own AudioManager and MediaStreamManager. + audio_manager_.reset(media::AudioManager::Create()); + + scoped_refptr<media_stream::AudioInputDeviceManager> + audio_input_device_manager(new media_stream::AudioInputDeviceManager( + audio_manager_.get())); + scoped_refptr<media_stream::VideoCaptureManager> video_capture_manager( + new media_stream::VideoCaptureManager()); + media_stream_manager_.reset(new media_stream::MediaStreamManager( + audio_input_device_manager, video_capture_manager)); + // Construct the resource context on the UI thread. resource_context_.reset(new MockResourceContext); @@ -173,6 +184,8 @@ void WebRTCAudioDeviceTest::TearDown() { base::Unretained((this)))); WaitForIOThreadCompletion(); mock_process_.reset(); + media_stream_manager_.reset(); + audio_manager_.reset(); RendererWebKitPlatformSupportImpl::SetSandboxEnabledForTesting( sandbox_was_enabled_); } @@ -197,16 +210,6 @@ void WebRTCAudioDeviceTest::InitializeIOThread(const char* thread_name) { io_thread_.reset(new content::TestBrowserThread(content::BrowserThread::IO, MessageLoop::current())); - audio_manager_.reset(media::AudioManager::Create()); - - scoped_refptr<media_stream::AudioInputDeviceManager> - audio_input_device_manager(new media_stream::AudioInputDeviceManager( - audio_manager_.get())); - scoped_refptr<media_stream::VideoCaptureManager> video_capture_manager( - new media_stream::VideoCaptureManager()); - media_stream_manager_.reset(new media_stream::MediaStreamManager( - audio_input_device_manager, video_capture_manager)); - // Populate our resource context. test_request_context_.reset(new TestURLRequestContext()); MockResourceContext* resource_context = @@ -224,8 +227,6 @@ void WebRTCAudioDeviceTest::InitializeIOThread(const char* thread_name) { void WebRTCAudioDeviceTest::UninitializeIOThread() { resource_context_.reset(); - media_stream_manager_.reset(); - audio_manager_.reset(); test_request_context_.reset(); initialize_com_.reset(); } |