summaryrefslogtreecommitdiffstats
path: root/content/test/webrtc_audio_device_test.cc
diff options
context:
space:
mode:
authorxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-18 15:05:58 +0000
committerxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-18 15:05:58 +0000
commit5982b6f86da8a4098960c50072c8d5fe9a8f3d8d (patch)
tree0003884d62da2f7d8af9c079b2f1049f7e02665f /content/test/webrtc_audio_device_test.cc
parent941804cd7cefd01c7bb3222aa02902799e7468f8 (diff)
downloadchromium_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.cc25
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();
}