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 |