OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/synchronization/waitable_event.h" | 10 #include "base/synchronization/waitable_event.h" |
11 #include "base/test/signaling_task.h" | 11 #include "base/test/signaling_task.h" |
12 #include "base/test/test_timeouts.h" | 12 #include "base/test/test_timeouts.h" |
13 #include "base/win/scoped_com_initializer.h" | 13 #include "base/win/scoped_com_initializer.h" |
| 14 #include "content/browser/renderer_host/media/audio_input_renderer_host.h" |
14 #include "content/browser/renderer_host/media/audio_renderer_host.h" | 15 #include "content/browser/renderer_host/media/audio_renderer_host.h" |
| 16 #include "content/browser/renderer_host/media/media_stream_manager.h" |
15 #include "content/browser/renderer_host/media/mock_media_observer.h" | 17 #include "content/browser/renderer_host/media/mock_media_observer.h" |
16 #include "content/browser/resource_context.h" | 18 #include "content/browser/resource_context.h" |
17 #include "content/common/view_messages.h" | 19 #include "content/common/view_messages.h" |
18 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" |
19 #include "content/public/common/content_paths.h" | 21 #include "content/public/common/content_paths.h" |
20 #include "content/renderer/media/webrtc_audio_device_impl.h" | 22 #include "content/renderer/media/webrtc_audio_device_impl.h" |
21 #include "content/renderer/render_process.h" | 23 #include "content/renderer/render_process.h" |
22 #include "content/renderer/render_thread_impl.h" | 24 #include "content/renderer/render_thread_impl.h" |
23 #include "content/test/test_browser_thread.h" | 25 #include "content/test/test_browser_thread.h" |
24 #include "net/url_request/url_request_test_util.h" | 26 #include "net/url_request/url_request_test_util.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 DISALLOW_COPY_AND_ASSIGN(ReplaceContentClientRenderer); | 75 DISALLOW_COPY_AND_ASSIGN(ReplaceContentClientRenderer); |
74 }; | 76 }; |
75 | 77 |
76 namespace { | 78 namespace { |
77 | 79 |
78 class WebRTCMockResourceContext : public content::ResourceContext { | 80 class WebRTCMockResourceContext : public content::ResourceContext { |
79 public: | 81 public: |
80 WebRTCMockResourceContext() {} | 82 WebRTCMockResourceContext() {} |
81 virtual ~WebRTCMockResourceContext() {} | 83 virtual ~WebRTCMockResourceContext() {} |
82 virtual void EnsureInitialized() const OVERRIDE {} | 84 virtual void EnsureInitialized() const OVERRIDE {} |
| 85 |
| 86 private: |
| 87 DISALLOW_COPY_AND_ASSIGN(WebRTCMockResourceContext); |
83 }; | 88 }; |
84 | 89 |
85 ACTION_P(QuitMessageLoop, loop_or_proxy) { | 90 ACTION_P(QuitMessageLoop, loop_or_proxy) { |
86 loop_or_proxy->PostTask(FROM_HERE, new MessageLoop::QuitTask()); | 91 loop_or_proxy->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
87 } | 92 } |
88 | 93 |
89 } // end namespace | 94 } // end namespace |
90 | 95 |
91 WebRTCAudioDeviceTest::WebRTCAudioDeviceTest() | 96 WebRTCAudioDeviceTest::WebRTCAudioDeviceTest() |
92 : render_thread_(NULL), event_(false, false), audio_util_callback_(NULL) { | 97 : render_thread_(NULL), event_(false, false), audio_util_callback_(NULL) { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 // See BrowserProcessSubThread::Init. | 141 // See BrowserProcessSubThread::Init. |
137 initialize_com_.reset(new ScopedCOMInitializer()); | 142 initialize_com_.reset(new ScopedCOMInitializer()); |
138 | 143 |
139 // Set the current thread as the IO thread. | 144 // Set the current thread as the IO thread. |
140 io_thread_.reset(new content::TestBrowserThread(content::BrowserThread::IO, | 145 io_thread_.reset(new content::TestBrowserThread(content::BrowserThread::IO, |
141 MessageLoop::current())); | 146 MessageLoop::current())); |
142 test_request_context_ = new TestURLRequestContext(); | 147 test_request_context_ = new TestURLRequestContext(); |
143 resource_context_->set_request_context(test_request_context_.get()); | 148 resource_context_->set_request_context(test_request_context_.get()); |
144 media_observer_.reset(new MockMediaObserver()); | 149 media_observer_.reset(new MockMediaObserver()); |
145 resource_context_->set_media_observer(media_observer_.get()); | 150 resource_context_->set_media_observer(media_observer_.get()); |
| 151 media_stream_manager_.reset(new media_stream::MediaStreamManager()); |
| 152 resource_context_->set_media_stream_manager(media_stream_manager_.get()); |
146 | 153 |
147 CreateChannel(thread_name, resource_context_.get()); | 154 CreateChannel(thread_name, resource_context_.get()); |
148 } | 155 } |
149 | 156 |
150 void WebRTCAudioDeviceTest::UninitializeIOThread() { | 157 void WebRTCAudioDeviceTest::UninitializeIOThread() { |
151 DestroyChannel(); | 158 DestroyChannel(); |
152 resource_context_.reset(); | 159 resource_context_.reset(); |
| 160 media_stream_manager_.reset(); |
153 test_request_context_ = NULL; | 161 test_request_context_ = NULL; |
154 initialize_com_.reset(); | 162 initialize_com_.reset(); |
155 } | 163 } |
156 | 164 |
157 void WebRTCAudioDeviceTest::CreateChannel( | 165 void WebRTCAudioDeviceTest::CreateChannel( |
158 const char* name, | 166 const char* name, |
159 content::ResourceContext* resource_context) { | 167 content::ResourceContext* resource_context) { |
160 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 168 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
161 audio_render_host_ = new AudioRendererHost(resource_context); | 169 audio_render_host_ = new AudioRendererHost(resource_context); |
162 audio_render_host_->OnChannelConnected(base::GetCurrentProcId()); | 170 audio_render_host_->OnChannelConnected(base::GetCurrentProcId()); |
163 | 171 |
| 172 audio_input_renderer_host_ = new AudioInputRendererHost(resource_context); |
| 173 audio_input_renderer_host_->OnChannelConnected(base::GetCurrentProcId()); |
| 174 |
164 channel_.reset(new IPC::Channel(name, IPC::Channel::MODE_SERVER, this)); | 175 channel_.reset(new IPC::Channel(name, IPC::Channel::MODE_SERVER, this)); |
165 ASSERT_TRUE(channel_->Connect()); | 176 ASSERT_TRUE(channel_->Connect()); |
166 | 177 |
167 audio_render_host_->OnFilterAdded(channel_.get()); | 178 audio_render_host_->OnFilterAdded(channel_.get()); |
| 179 audio_input_renderer_host_->OnFilterAdded(channel_.get()); |
168 } | 180 } |
169 | 181 |
170 void WebRTCAudioDeviceTest::DestroyChannel() { | 182 void WebRTCAudioDeviceTest::DestroyChannel() { |
171 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 183 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 184 audio_render_host_->OnChannelClosing(); |
| 185 audio_input_renderer_host_->OnChannelClosing(); |
172 channel_.reset(); | 186 channel_.reset(); |
173 audio_render_host_ = NULL; | 187 audio_render_host_ = NULL; |
| 188 audio_input_renderer_host_ = NULL; |
174 } | 189 } |
175 | 190 |
176 void WebRTCAudioDeviceTest::OnGetHardwareSampleRate(double* sample_rate) { | 191 void WebRTCAudioDeviceTest::OnGetHardwareSampleRate(double* sample_rate) { |
177 EXPECT_TRUE(audio_util_callback_); | 192 EXPECT_TRUE(audio_util_callback_); |
178 *sample_rate = audio_util_callback_ ? | 193 *sample_rate = audio_util_callback_ ? |
179 audio_util_callback_->GetAudioHardwareSampleRate() : 0.0; | 194 audio_util_callback_->GetAudioHardwareSampleRate() : 0.0; |
180 } | 195 } |
181 | 196 |
182 void WebRTCAudioDeviceTest::OnGetHardwareInputSampleRate(double* sample_rate) { | 197 void WebRTCAudioDeviceTest::OnGetHardwareInputSampleRate(double* sample_rate) { |
183 EXPECT_TRUE(audio_util_callback_); | 198 EXPECT_TRUE(audio_util_callback_); |
(...skipping 13 matching lines...) Expand all Loading... |
197 if (filter->OnMessageReceived(message)) | 212 if (filter->OnMessageReceived(message)) |
198 return true; | 213 return true; |
199 } | 214 } |
200 | 215 |
201 if (audio_render_host_.get()) { | 216 if (audio_render_host_.get()) { |
202 bool message_was_ok = false; | 217 bool message_was_ok = false; |
203 if (audio_render_host_->OnMessageReceived(message, &message_was_ok)) | 218 if (audio_render_host_->OnMessageReceived(message, &message_was_ok)) |
204 return true; | 219 return true; |
205 } | 220 } |
206 | 221 |
| 222 if (audio_input_renderer_host_.get()) { |
| 223 bool message_was_ok = false; |
| 224 if (audio_input_renderer_host_->OnMessageReceived(message, &message_was_ok)) |
| 225 return true; |
| 226 } |
| 227 |
207 bool handled = true; | 228 bool handled = true; |
208 bool message_is_ok = true; | 229 bool message_is_ok = true; |
209 IPC_BEGIN_MESSAGE_MAP_EX(WebRTCAudioDeviceTest, message, message_is_ok) | 230 IPC_BEGIN_MESSAGE_MAP_EX(WebRTCAudioDeviceTest, message, message_is_ok) |
210 IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareSampleRate, | 231 IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareSampleRate, |
211 OnGetHardwareSampleRate) | 232 OnGetHardwareSampleRate) |
212 IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareInputSampleRate, | 233 IPC_MESSAGE_HANDLER(ViewHostMsg_GetHardwareInputSampleRate, |
213 OnGetHardwareInputSampleRate) | 234 OnGetHardwareInputSampleRate) |
214 IPC_MESSAGE_UNHANDLED(handled = false) | 235 IPC_MESSAGE_UNHANDLED(handled = false) |
215 IPC_END_MESSAGE_MAP_EX() | 236 IPC_END_MESSAGE_MAP_EX() |
216 | 237 |
(...skipping 27 matching lines...) Expand all Loading... |
244 #endif | 265 #endif |
245 } | 266 } |
246 | 267 |
247 WebRTCTransportImpl::WebRTCTransportImpl(webrtc::VoENetwork* network) | 268 WebRTCTransportImpl::WebRTCTransportImpl(webrtc::VoENetwork* network) |
248 : network_(network) { | 269 : network_(network) { |
249 } | 270 } |
250 | 271 |
251 WebRTCTransportImpl::~WebRTCTransportImpl() {} | 272 WebRTCTransportImpl::~WebRTCTransportImpl() {} |
252 | 273 |
253 int WebRTCTransportImpl::SendPacket(int channel, const void* data, int len) { | 274 int WebRTCTransportImpl::SendPacket(int channel, const void* data, int len) { |
254 ADD_FAILURE(); // We don't expect a call to this method in our tests. | |
255 return network_->ReceivedRTPPacket(channel, data, len); | 275 return network_->ReceivedRTPPacket(channel, data, len); |
256 } | 276 } |
257 | 277 |
258 int WebRTCTransportImpl::SendRTCPPacket(int channel, const void* data, | 278 int WebRTCTransportImpl::SendRTCPPacket(int channel, const void* data, |
259 int len) { | 279 int len) { |
260 return network_->ReceivedRTCPPacket(channel, data, len); | 280 return network_->ReceivedRTCPPacket(channel, data, len); |
261 } | 281 } |
OLD | NEW |