Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(357)

Side by Side Diff: content/test/webrtc_audio_device_test.cc

Issue 11232014: Move a bunch of code in content\renderer to the content namespace. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix mac Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/test/webrtc_audio_device_test.h ('k') | webkit/plugins/ppapi/fullscreen_container.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
(...skipping 27 matching lines...) Expand all
38 38
39 #if defined(OS_WIN) 39 #if defined(OS_WIN)
40 #include "base/win/scoped_com_initializer.h" 40 #include "base/win/scoped_com_initializer.h"
41 #endif 41 #endif
42 42
43 using testing::_; 43 using testing::_;
44 using testing::InvokeWithoutArgs; 44 using testing::InvokeWithoutArgs;
45 using testing::Return; 45 using testing::Return;
46 using testing::StrEq; 46 using testing::StrEq;
47 47
48 namespace content {
49
48 // This class is a mock of the child process singleton which is needed 50 // This class is a mock of the child process singleton which is needed
49 // to be able to create a RenderThread object. 51 // to be able to create a RenderThread object.
50 class WebRTCMockRenderProcess : public RenderProcess { 52 class WebRTCMockRenderProcess : public RenderProcess {
51 public: 53 public:
52 WebRTCMockRenderProcess() {} 54 WebRTCMockRenderProcess() {}
53 virtual ~WebRTCMockRenderProcess() {} 55 virtual ~WebRTCMockRenderProcess() {}
54 56
55 // RenderProcess implementation. 57 // RenderProcess implementation.
56 virtual skia::PlatformCanvas* GetDrawingCanvas( 58 virtual skia::PlatformCanvas* GetDrawingCanvas(
57 TransportDIB** memory, const gfx::Rect& rect) OVERRIDE { 59 TransportDIB** memory, const gfx::Rect& rect) OVERRIDE {
58 return NULL; 60 return NULL;
59 } 61 }
60 virtual void ReleaseTransportDIB(TransportDIB* memory) OVERRIDE {} 62 virtual void ReleaseTransportDIB(TransportDIB* memory) OVERRIDE {}
61 virtual bool UseInProcessPlugins() const OVERRIDE { return false; } 63 virtual bool UseInProcessPlugins() const OVERRIDE { return false; }
62 virtual void AddBindings(int bindings) OVERRIDE {} 64 virtual void AddBindings(int bindings) OVERRIDE {}
63 virtual int GetEnabledBindings() const { return 0; } 65 virtual int GetEnabledBindings() const { return 0; }
64 virtual TransportDIB* CreateTransportDIB(size_t size) { return NULL; } 66 virtual TransportDIB* CreateTransportDIB(size_t size) { return NULL; }
65 virtual void FreeTransportDIB(TransportDIB*) {} 67 virtual void FreeTransportDIB(TransportDIB*) {}
66 68
67 private: 69 private:
68 DISALLOW_COPY_AND_ASSIGN(WebRTCMockRenderProcess); 70 DISALLOW_COPY_AND_ASSIGN(WebRTCMockRenderProcess);
69 }; 71 };
70 72
71 // Utility scoped class to replace the global content client's renderer for the 73 // Utility scoped class to replace the global content client's renderer for the
72 // duration of the test. 74 // duration of the test.
73 class ReplaceContentClientRenderer { 75 class ReplaceContentClientRenderer {
74 public: 76 public:
75 explicit ReplaceContentClientRenderer( 77 explicit ReplaceContentClientRenderer(ContentRendererClient* new_renderer) {
76 content::ContentRendererClient* new_renderer) { 78 saved_renderer_ = GetContentClient()->renderer();
77 saved_renderer_ = content::GetContentClient()->renderer(); 79 GetContentClient()->set_renderer_for_testing(new_renderer);
78 content::GetContentClient()->set_renderer_for_testing(new_renderer);
79 } 80 }
80 ~ReplaceContentClientRenderer() { 81 ~ReplaceContentClientRenderer() {
81 // Restore the original renderer. 82 // Restore the original renderer.
82 content::GetContentClient()->set_renderer_for_testing(saved_renderer_); 83 GetContentClient()->set_renderer_for_testing(saved_renderer_);
83 } 84 }
84 private: 85 private:
85 content::ContentRendererClient* saved_renderer_; 86 ContentRendererClient* saved_renderer_;
86 DISALLOW_COPY_AND_ASSIGN(ReplaceContentClientRenderer); 87 DISALLOW_COPY_AND_ASSIGN(ReplaceContentClientRenderer);
87 }; 88 };
88 89
89 namespace { 90 class MockRTCResourceContext : public ResourceContext {
90
91 class MockResourceContext : public content::ResourceContext {
92 public: 91 public:
93 MockResourceContext() : test_request_context_(NULL) {} 92 MockRTCResourceContext() : test_request_context_(NULL) {}
94 virtual ~MockResourceContext() {} 93 virtual ~MockRTCResourceContext() {}
95 94
96 void set_request_context(net::URLRequestContext* request_context) { 95 void set_request_context(net::URLRequestContext* request_context) {
97 test_request_context_ = request_context; 96 test_request_context_ = request_context;
98 } 97 }
99 98
100 // ResourceContext implementation: 99 // ResourceContext implementation:
101 virtual net::HostResolver* GetHostResolver() OVERRIDE { 100 virtual net::HostResolver* GetHostResolver() OVERRIDE {
102 return NULL; 101 return NULL;
103 } 102 }
104 virtual net::URLRequestContext* GetRequestContext() OVERRIDE { 103 virtual net::URLRequestContext* GetRequestContext() OVERRIDE {
105 return test_request_context_; 104 return test_request_context_;
106 } 105 }
107 106
108 private: 107 private:
109 net::URLRequestContext* test_request_context_; 108 net::URLRequestContext* test_request_context_;
110 109
111 DISALLOW_COPY_AND_ASSIGN(MockResourceContext); 110 DISALLOW_COPY_AND_ASSIGN(MockRTCResourceContext);
112 }; 111 };
113 112
114 ACTION_P(QuitMessageLoop, loop_or_proxy) { 113 ACTION_P(QuitMessageLoop, loop_or_proxy) {
115 loop_or_proxy->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 114 loop_or_proxy->PostTask(FROM_HERE, MessageLoop::QuitClosure());
116 } 115 }
117 116
118 } // namespace
119
120 WebRTCAudioDeviceTest::WebRTCAudioDeviceTest() 117 WebRTCAudioDeviceTest::WebRTCAudioDeviceTest()
121 : render_thread_(NULL), audio_util_callback_(NULL), 118 : render_thread_(NULL), audio_util_callback_(NULL),
122 has_input_devices_(false), has_output_devices_(false) { 119 has_input_devices_(false), has_output_devices_(false) {
123 } 120 }
124 121
125 WebRTCAudioDeviceTest::~WebRTCAudioDeviceTest() {} 122 WebRTCAudioDeviceTest::~WebRTCAudioDeviceTest() {}
126 123
127 void WebRTCAudioDeviceTest::SetUp() { 124 void WebRTCAudioDeviceTest::SetUp() {
128 // This part sets up a RenderThread environment to ensure that 125 // This part sets up a RenderThread environment to ensure that
129 // RenderThread::current() (<=> TLS pointer) is valid. 126 // RenderThread::current() (<=> TLS pointer) is valid.
130 // Main parts are inspired by the RenderViewFakeResourcesTest. 127 // Main parts are inspired by the RenderViewFakeResourcesTest.
131 // Note that, the IPC part is not utilized in this test. 128 // Note that, the IPC part is not utilized in this test.
132 saved_content_renderer_.reset( 129 saved_content_renderer_.reset(
133 new ReplaceContentClientRenderer(&content_renderer_client_)); 130 new ReplaceContentClientRenderer(&content_renderer_client_));
134 mock_process_.reset(new WebRTCMockRenderProcess()); 131 mock_process_.reset(new WebRTCMockRenderProcess());
135 ui_thread_.reset(new content::TestBrowserThread(content::BrowserThread::UI, 132 ui_thread_.reset(new TestBrowserThread(BrowserThread::UI,
136 MessageLoop::current())); 133 MessageLoop::current()));
137 134
138 // Create our own AudioManager and MediaStreamManager. 135 // Create our own AudioManager and MediaStreamManager.
139 audio_manager_.reset(media::AudioManager::Create()); 136 audio_manager_.reset(media::AudioManager::Create());
140 media_stream_manager_.reset( 137 media_stream_manager_.reset(
141 new media_stream::MediaStreamManager(audio_manager_.get())); 138 new media_stream::MediaStreamManager(audio_manager_.get()));
142 139
143 // Construct the resource context on the UI thread. 140 // Construct the resource context on the UI thread.
144 resource_context_.reset(new MockResourceContext); 141 resource_context_.reset(new MockRTCResourceContext);
145 142
146 static const char kThreadName[] = "RenderThread"; 143 static const char kThreadName[] = "RenderThread";
147 ChildProcess::current()->io_message_loop()->PostTask(FROM_HERE, 144 ChildProcess::current()->io_message_loop()->PostTask(FROM_HERE,
148 base::Bind(&WebRTCAudioDeviceTest::InitializeIOThread, 145 base::Bind(&WebRTCAudioDeviceTest::InitializeIOThread,
149 base::Unretained(this), kThreadName)); 146 base::Unretained(this), kThreadName));
150 WaitForIOThreadCompletion(); 147 WaitForIOThreadCompletion();
151 148
152 sandbox_was_enabled_ = 149 sandbox_was_enabled_ =
153 RendererWebKitPlatformSupportImpl::SetSandboxEnabledForTesting(false); 150 RendererWebKitPlatformSupportImpl::SetSandboxEnabledForTesting(false);
154 render_thread_ = new RenderThreadImpl(kThreadName); 151 render_thread_ = new RenderThreadImpl(kThreadName);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 } 195 }
199 196
200 void WebRTCAudioDeviceTest::InitializeIOThread(const char* thread_name) { 197 void WebRTCAudioDeviceTest::InitializeIOThread(const char* thread_name) {
201 #if defined(OS_WIN) 198 #if defined(OS_WIN)
202 // We initialize COM (STA) on our IO thread as is done in Chrome. 199 // We initialize COM (STA) on our IO thread as is done in Chrome.
203 // See BrowserProcessSubThread::Init. 200 // See BrowserProcessSubThread::Init.
204 initialize_com_.reset(new base::win::ScopedCOMInitializer()); 201 initialize_com_.reset(new base::win::ScopedCOMInitializer());
205 #endif 202 #endif
206 203
207 // Set the current thread as the IO thread. 204 // Set the current thread as the IO thread.
208 io_thread_.reset(new content::TestBrowserThread(content::BrowserThread::IO, 205 io_thread_.reset(new TestBrowserThread(BrowserThread::IO,
209 MessageLoop::current())); 206 MessageLoop::current()));
210 207
211 // Populate our resource context. 208 // Populate our resource context.
212 test_request_context_.reset(new TestURLRequestContext()); 209 test_request_context_.reset(new TestURLRequestContext());
213 MockResourceContext* resource_context = 210 MockRTCResourceContext* resource_context =
214 static_cast<MockResourceContext*>(resource_context_.get()); 211 static_cast<MockRTCResourceContext*>(resource_context_.get());
215 resource_context->set_request_context(test_request_context_.get()); 212 resource_context->set_request_context(test_request_context_.get());
216 media_observer_.reset(new MockMediaObserver()); 213 media_observer_.reset(new MockMediaObserver());
217 214
218 has_input_devices_ = audio_manager_->HasAudioInputDevices(); 215 has_input_devices_ = audio_manager_->HasAudioInputDevices();
219 has_output_devices_ = audio_manager_->HasAudioOutputDevices(); 216 has_output_devices_ = audio_manager_->HasAudioOutputDevices();
220 217
221 // Create an IPC channel that handles incoming messages on the IO thread. 218 // Create an IPC channel that handles incoming messages on the IO thread.
222 CreateChannel(thread_name); 219 CreateChannel(thread_name);
223 } 220 }
224 221
225 void WebRTCAudioDeviceTest::UninitializeIOThread() { 222 void WebRTCAudioDeviceTest::UninitializeIOThread() {
226 resource_context_.reset(); 223 resource_context_.reset();
227 224
228 test_request_context_.reset(); 225 test_request_context_.reset();
229 226
230 #if defined(OS_WIN) 227 #if defined(OS_WIN)
231 initialize_com_.reset(); 228 initialize_com_.reset();
232 #endif 229 #endif
233 } 230 }
234 231
235 void WebRTCAudioDeviceTest::CreateChannel(const char* name) { 232 void WebRTCAudioDeviceTest::CreateChannel(const char* name) {
236 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 233 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
237 audio_render_host_ = new AudioRendererHost( 234 audio_render_host_ = new AudioRendererHost(
238 audio_manager_.get(), media_observer_.get()); 235 audio_manager_.get(), media_observer_.get());
239 audio_render_host_->OnChannelConnected(base::GetCurrentProcId()); 236 audio_render_host_->OnChannelConnected(base::GetCurrentProcId());
240 237
241 audio_input_renderer_host_ = new AudioInputRendererHost( 238 audio_input_renderer_host_ = new AudioInputRendererHost(
242 audio_manager_.get(), media_stream_manager_.get()); 239 audio_manager_.get(), media_stream_manager_.get());
243 audio_input_renderer_host_->OnChannelConnected(base::GetCurrentProcId()); 240 audio_input_renderer_host_->OnChannelConnected(base::GetCurrentProcId());
244 241
245 channel_.reset(new IPC::Channel(name, IPC::Channel::MODE_SERVER, this)); 242 channel_.reset(new IPC::Channel(name, IPC::Channel::MODE_SERVER, this));
246 ASSERT_TRUE(channel_->Connect()); 243 ASSERT_TRUE(channel_->Connect());
247 244
248 audio_render_host_->OnFilterAdded(channel_.get()); 245 audio_render_host_->OnFilterAdded(channel_.get());
249 audio_input_renderer_host_->OnFilterAdded(channel_.get()); 246 audio_input_renderer_host_->OnFilterAdded(channel_.get());
250 } 247 }
251 248
252 void WebRTCAudioDeviceTest::DestroyChannel() { 249 void WebRTCAudioDeviceTest::DestroyChannel() {
253 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 250 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
254 audio_render_host_->OnChannelClosing(); 251 audio_render_host_->OnChannelClosing();
255 audio_render_host_->OnFilterRemoved(); 252 audio_render_host_->OnFilterRemoved();
256 audio_input_renderer_host_->OnChannelClosing(); 253 audio_input_renderer_host_->OnChannelClosing();
257 audio_input_renderer_host_->OnFilterRemoved(); 254 audio_input_renderer_host_->OnFilterRemoved();
258 channel_.reset(); 255 channel_.reset();
259 audio_render_host_ = NULL; 256 audio_render_host_ = NULL;
260 audio_input_renderer_host_ = NULL; 257 audio_input_renderer_host_ = NULL;
261 } 258 }
262 259
263 void WebRTCAudioDeviceTest::OnGetHardwareSampleRate(int* sample_rate) { 260 void WebRTCAudioDeviceTest::OnGetHardwareSampleRate(int* sample_rate) {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 } else { 341 } else {
345 // Don't delete the event object in case the message ever gets processed. 342 // Don't delete the event object in case the message ever gets processed.
346 // If we do, we will crash the test process. 343 // If we do, we will crash the test process.
347 ADD_FAILURE() << "Failed to wait for message loop"; 344 ADD_FAILURE() << "Failed to wait for message loop";
348 } 345 }
349 } 346 }
350 347
351 std::string WebRTCAudioDeviceTest::GetTestDataPath( 348 std::string WebRTCAudioDeviceTest::GetTestDataPath(
352 const FilePath::StringType& file_name) { 349 const FilePath::StringType& file_name) {
353 FilePath path; 350 FilePath path;
354 EXPECT_TRUE(PathService::Get(content::DIR_TEST_DATA, &path)); 351 EXPECT_TRUE(PathService::Get(DIR_TEST_DATA, &path));
355 path = path.Append(file_name); 352 path = path.Append(file_name);
356 EXPECT_TRUE(file_util::PathExists(path)); 353 EXPECT_TRUE(file_util::PathExists(path));
357 #ifdef OS_WIN 354 #ifdef OS_WIN
358 return WideToUTF8(path.value()); 355 return WideToUTF8(path.value());
359 #else 356 #else
360 return path.value(); 357 return path.value();
361 #endif 358 #endif
362 } 359 }
363 360
364 WebRTCTransportImpl::WebRTCTransportImpl(webrtc::VoENetwork* network) 361 WebRTCTransportImpl::WebRTCTransportImpl(webrtc::VoENetwork* network)
365 : network_(network) { 362 : network_(network) {
366 } 363 }
367 364
368 WebRTCTransportImpl::~WebRTCTransportImpl() {} 365 WebRTCTransportImpl::~WebRTCTransportImpl() {}
369 366
370 int WebRTCTransportImpl::SendPacket(int channel, const void* data, int len) { 367 int WebRTCTransportImpl::SendPacket(int channel, const void* data, int len) {
371 return network_->ReceivedRTPPacket(channel, data, len); 368 return network_->ReceivedRTPPacket(channel, data, len);
372 } 369 }
373 370
374 int WebRTCTransportImpl::SendRTCPPacket(int channel, const void* data, 371 int WebRTCTransportImpl::SendRTCPPacket(int channel, const void* data,
375 int len) { 372 int len) {
376 return network_->ReceivedRTCPPacket(channel, data, len); 373 return network_->ReceivedRTCPPacket(channel, data, len);
377 } 374 }
375
376 } // namespace content
OLDNEW
« no previous file with comments | « content/test/webrtc_audio_device_test.h ('k') | webkit/plugins/ppapi/fullscreen_container.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698