| OLD | NEW |
| 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 "content/test/webrtc_audio_device_test.h" | 5 #include "content/test/webrtc_audio_device_test.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| 11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
| 12 #include "base/synchronization/waitable_event.h" | 12 #include "base/synchronization/waitable_event.h" |
| 13 #include "base/test/test_timeouts.h" | 13 #include "base/test/test_timeouts.h" |
| 14 #include "content/browser/renderer_host/media/audio_input_renderer_host.h" | 14 #include "content/browser/renderer_host/media/audio_input_renderer_host.h" |
| 15 #include "content/browser/renderer_host/media/audio_mirroring_manager.h" |
| 15 #include "content/browser/renderer_host/media/audio_renderer_host.h" | 16 #include "content/browser/renderer_host/media/audio_renderer_host.h" |
| 16 #include "content/browser/renderer_host/media/media_stream_manager.h" | 17 #include "content/browser/renderer_host/media/media_stream_manager.h" |
| 17 #include "content/browser/renderer_host/media/mock_media_observer.h" | 18 #include "content/browser/renderer_host/media/mock_media_observer.h" |
| 18 #include "content/common/view_messages.h" | 19 #include "content/common/view_messages.h" |
| 19 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" |
| 20 #include "content/public/common/content_paths.h" | 21 #include "content/public/common/content_paths.h" |
| 21 #include "content/public/test/mock_resource_context.h" | 22 #include "content/public/test/mock_resource_context.h" |
| 22 #include "content/public/test/test_browser_thread.h" | 23 #include "content/public/test/test_browser_thread.h" |
| 23 #include "content/renderer/media/audio_hardware.h" | 24 #include "content/renderer/media/audio_hardware.h" |
| 24 #include "content/renderer/media/audio_input_message_filter.h" | 25 #include "content/renderer/media/audio_input_message_filter.h" |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 // then is the reference to the audio manager released, so we wait for the | 166 // then is the reference to the audio manager released, so we wait for the |
| 166 // whole thing to be torn down before we finally uninitialize the io thread. | 167 // whole thing to be torn down before we finally uninitialize the io thread. |
| 167 WaitForAudioManagerCompletion(); | 168 WaitForAudioManagerCompletion(); |
| 168 | 169 |
| 169 ChildProcess::current()->io_message_loop()->PostTask(FROM_HERE, | 170 ChildProcess::current()->io_message_loop()->PostTask(FROM_HERE, |
| 170 base::Bind(&WebRTCAudioDeviceTest::UninitializeIOThread, | 171 base::Bind(&WebRTCAudioDeviceTest::UninitializeIOThread, |
| 171 base::Unretained((this)))); | 172 base::Unretained((this)))); |
| 172 WaitForIOThreadCompletion(); | 173 WaitForIOThreadCompletion(); |
| 173 mock_process_.reset(); | 174 mock_process_.reset(); |
| 174 media_stream_manager_.reset(); | 175 media_stream_manager_.reset(); |
| 176 mirroring_manager_.reset(); |
| 175 audio_manager_.reset(); | 177 audio_manager_.reset(); |
| 176 RendererWebKitPlatformSupportImpl::SetSandboxEnabledForTesting( | 178 RendererWebKitPlatformSupportImpl::SetSandboxEnabledForTesting( |
| 177 sandbox_was_enabled_); | 179 sandbox_was_enabled_); |
| 178 } | 180 } |
| 179 | 181 |
| 180 bool WebRTCAudioDeviceTest::Send(IPC::Message* message) { | 182 bool WebRTCAudioDeviceTest::Send(IPC::Message* message) { |
| 181 return channel_->Send(message); | 183 return channel_->Send(message); |
| 182 } | 184 } |
| 183 | 185 |
| 184 void WebRTCAudioDeviceTest::SetAudioUtilCallback(AudioUtilInterface* callback) { | 186 void WebRTCAudioDeviceTest::SetAudioUtilCallback(AudioUtilInterface* callback) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 199 io_thread_.reset(new TestBrowserThread(BrowserThread::IO, | 201 io_thread_.reset(new TestBrowserThread(BrowserThread::IO, |
| 200 MessageLoop::current())); | 202 MessageLoop::current())); |
| 201 | 203 |
| 202 // Populate our resource context. | 204 // Populate our resource context. |
| 203 test_request_context_.reset(new net::TestURLRequestContext()); | 205 test_request_context_.reset(new net::TestURLRequestContext()); |
| 204 MockRTCResourceContext* resource_context = | 206 MockRTCResourceContext* resource_context = |
| 205 static_cast<MockRTCResourceContext*>(resource_context_.get()); | 207 static_cast<MockRTCResourceContext*>(resource_context_.get()); |
| 206 resource_context->set_request_context(test_request_context_.get()); | 208 resource_context->set_request_context(test_request_context_.get()); |
| 207 media_observer_.reset(new MockMediaObserver()); | 209 media_observer_.reset(new MockMediaObserver()); |
| 208 | 210 |
| 209 // Create our own AudioManager and MediaStreamManager. | 211 // Create our own AudioManager, AudioMirroringManager and MediaStreamManager. |
| 210 audio_manager_.reset(media::AudioManager::Create()); | 212 audio_manager_.reset(media::AudioManager::Create()); |
| 213 mirroring_manager_.reset(new AudioMirroringManager()); |
| 211 media_stream_manager_.reset(new MediaStreamManager(audio_manager_.get())); | 214 media_stream_manager_.reset(new MediaStreamManager(audio_manager_.get())); |
| 212 | 215 |
| 213 has_input_devices_ = audio_manager_->HasAudioInputDevices(); | 216 has_input_devices_ = audio_manager_->HasAudioInputDevices(); |
| 214 has_output_devices_ = audio_manager_->HasAudioOutputDevices(); | 217 has_output_devices_ = audio_manager_->HasAudioOutputDevices(); |
| 215 | 218 |
| 216 // Create an IPC channel that handles incoming messages on the IO thread. | 219 // Create an IPC channel that handles incoming messages on the IO thread. |
| 217 CreateChannel(thread_name); | 220 CreateChannel(thread_name); |
| 218 } | 221 } |
| 219 | 222 |
| 220 void WebRTCAudioDeviceTest::UninitializeIOThread() { | 223 void WebRTCAudioDeviceTest::UninitializeIOThread() { |
| 221 resource_context_.reset(); | 224 resource_context_.reset(); |
| 222 | 225 |
| 223 test_request_context_.reset(); | 226 test_request_context_.reset(); |
| 224 | 227 |
| 225 #if defined(OS_WIN) | 228 #if defined(OS_WIN) |
| 226 initialize_com_.reset(); | 229 initialize_com_.reset(); |
| 227 #endif | 230 #endif |
| 228 } | 231 } |
| 229 | 232 |
| 230 void WebRTCAudioDeviceTest::CreateChannel(const char* name) { | 233 void WebRTCAudioDeviceTest::CreateChannel(const char* name) { |
| 231 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 234 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 235 |
| 236 static const int kRenderProcessId = 1; |
| 232 audio_render_host_ = new AudioRendererHost( | 237 audio_render_host_ = new AudioRendererHost( |
| 233 audio_manager_.get(), media_observer_.get()); | 238 kRenderProcessId, audio_manager_.get(), mirroring_manager_.get(), |
| 239 media_observer_.get()); |
| 234 audio_render_host_->OnChannelConnected(base::GetCurrentProcId()); | 240 audio_render_host_->OnChannelConnected(base::GetCurrentProcId()); |
| 235 | 241 |
| 236 audio_input_renderer_host_ = new AudioInputRendererHost( | 242 audio_input_renderer_host_ = new AudioInputRendererHost( |
| 237 audio_manager_.get(), media_stream_manager_.get()); | 243 audio_manager_.get(), media_stream_manager_.get()); |
| 238 audio_input_renderer_host_->OnChannelConnected(base::GetCurrentProcId()); | 244 audio_input_renderer_host_->OnChannelConnected(base::GetCurrentProcId()); |
| 239 | 245 |
| 240 channel_.reset(new IPC::Channel(name, IPC::Channel::MODE_SERVER, this)); | 246 channel_.reset(new IPC::Channel(name, IPC::Channel::MODE_SERVER, this)); |
| 241 ASSERT_TRUE(channel_->Connect()); | 247 ASSERT_TRUE(channel_->Connect()); |
| 242 | 248 |
| 243 audio_render_host_->OnFilterAdded(channel_.get()); | 249 audio_render_host_->OnFilterAdded(channel_.get()); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 int WebRTCTransportImpl::SendPacket(int channel, const void* data, int len) { | 371 int WebRTCTransportImpl::SendPacket(int channel, const void* data, int len) { |
| 366 return network_->ReceivedRTPPacket(channel, data, len); | 372 return network_->ReceivedRTPPacket(channel, data, len); |
| 367 } | 373 } |
| 368 | 374 |
| 369 int WebRTCTransportImpl::SendRTCPPacket(int channel, const void* data, | 375 int WebRTCTransportImpl::SendRTCPPacket(int channel, const void* data, |
| 370 int len) { | 376 int len) { |
| 371 return network_->ReceivedRTCPPacket(channel, data, len); | 377 return network_->ReceivedRTCPPacket(channel, data, len); |
| 372 } | 378 } |
| 373 | 379 |
| 374 } // namespace content | 380 } // namespace content |
| OLD | NEW |