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/public/test/browser_test_base.h" | 5 #include "content/public/test/browser_test_base.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/debug/stack_trace.h" | 9 #include "base/debug/stack_trace.h" |
10 #include "base/i18n/icu_util.h" | 10 #include "base/i18n/icu_util.h" |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 | 161 |
162 BrowserTestBase::~BrowserTestBase() { | 162 BrowserTestBase::~BrowserTestBase() { |
163 #if defined(OS_ANDROID) | 163 #if defined(OS_ANDROID) |
164 // RemoteTestServer can cause wait on the UI thread. | 164 // RemoteTestServer can cause wait on the UI thread. |
165 base::ThreadRestrictions::ScopedAllowWait allow_wait; | 165 base::ThreadRestrictions::ScopedAllowWait allow_wait; |
166 test_server_.reset(NULL); | 166 test_server_.reset(NULL); |
167 #endif | 167 #endif |
168 } | 168 } |
169 | 169 |
170 void BrowserTestBase::SetUp() { | 170 void BrowserTestBase::SetUp() { |
171 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 171 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
172 | 172 |
173 // Override the child process connection timeout since tests can exceed that | 173 // Override the child process connection timeout since tests can exceed that |
174 // when sharded. | 174 // when sharded. |
175 command_line->AppendSwitchASCII( | 175 command_line->AppendSwitchASCII( |
176 switches::kIPCConnectionTimeout, | 176 switches::kIPCConnectionTimeout, |
177 base::IntToString(TestTimeouts::action_max_timeout().InSeconds())); | 177 base::IntToString(TestTimeouts::action_max_timeout().InSeconds())); |
178 | 178 |
179 // The tests assume that file:// URIs can freely access other file:// URIs. | 179 // The tests assume that file:// URIs can freely access other file:// URIs. |
180 command_line->AppendSwitch(switches::kAllowFileAccessFromFiles); | 180 command_line->AppendSwitch(switches::kAllowFileAccessFromFiles); |
181 | 181 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 } | 270 } |
271 | 271 |
272 void BrowserTestBase::ProxyRunTestOnMainThreadLoop() { | 272 void BrowserTestBase::ProxyRunTestOnMainThreadLoop() { |
273 #if defined(OS_POSIX) | 273 #if defined(OS_POSIX) |
274 if (handle_sigterm_) { | 274 if (handle_sigterm_) { |
275 g_browser_process_pid = base::GetCurrentProcId(); | 275 g_browser_process_pid = base::GetCurrentProcId(); |
276 signal(SIGTERM, DumpStackTraceSignalHandler); | 276 signal(SIGTERM, DumpStackTraceSignalHandler); |
277 } | 277 } |
278 #endif // defined(OS_POSIX) | 278 #endif // defined(OS_POSIX) |
279 | 279 |
280 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableTracing)) { | 280 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 281 switches::kEnableTracing)) { |
281 base::debug::CategoryFilter category_filter( | 282 base::debug::CategoryFilter category_filter( |
282 CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 283 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
283 switches::kEnableTracing)); | 284 switches::kEnableTracing)); |
284 TracingController::GetInstance()->EnableRecording( | 285 TracingController::GetInstance()->EnableRecording( |
285 category_filter, | 286 category_filter, |
286 base::debug::TraceOptions(base::debug::RECORD_CONTINUOUSLY), | 287 base::debug::TraceOptions(base::debug::RECORD_CONTINUOUSLY), |
287 TracingController::EnableRecordingDoneCallback()); | 288 TracingController::EnableRecordingDoneCallback()); |
288 } | 289 } |
289 | 290 |
290 RunTestOnMainThreadLoop(); | 291 RunTestOnMainThreadLoop(); |
291 | 292 |
292 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableTracing)) { | 293 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 294 switches::kEnableTracing)) { |
293 base::FilePath trace_file = | 295 base::FilePath trace_file = |
294 CommandLine::ForCurrentProcess()->GetSwitchValuePath( | 296 base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( |
295 switches::kEnableTracingOutput); | 297 switches::kEnableTracingOutput); |
296 // If there was no file specified, put a hardcoded one in the current | 298 // If there was no file specified, put a hardcoded one in the current |
297 // working directory. | 299 // working directory. |
298 if (trace_file.empty()) | 300 if (trace_file.empty()) |
299 trace_file = base::FilePath().AppendASCII("trace.json"); | 301 trace_file = base::FilePath().AppendASCII("trace.json"); |
300 | 302 |
301 // Wait for tracing to collect results from the renderers. | 303 // Wait for tracing to collect results from the renderers. |
302 base::RunLoop run_loop; | 304 base::RunLoop run_loop; |
303 TracingController::GetInstance()->DisableRecording( | 305 TracingController::GetInstance()->DisableRecording( |
304 TracingControllerImpl::CreateFileSink( | 306 TracingControllerImpl::CreateFileSink( |
305 trace_file, | 307 trace_file, |
306 base::Bind(&TraceDisableRecordingComplete, | 308 base::Bind(&TraceDisableRecordingComplete, |
307 run_loop.QuitClosure(), | 309 run_loop.QuitClosure(), |
308 trace_file))); | 310 trace_file))); |
309 run_loop.Run(); | 311 run_loop.Run(); |
310 } | 312 } |
311 } | 313 } |
312 | 314 |
313 void BrowserTestBase::CreateTestServer(const base::FilePath& test_server_base) { | 315 void BrowserTestBase::CreateTestServer(const base::FilePath& test_server_base) { |
314 CHECK(!test_server_.get()); | 316 CHECK(!test_server_.get()); |
315 test_server_.reset(new net::SpawnedTestServer( | 317 test_server_.reset(new net::SpawnedTestServer( |
316 net::SpawnedTestServer::TYPE_HTTP, | 318 net::SpawnedTestServer::TYPE_HTTP, |
317 net::SpawnedTestServer::kLocalhost, | 319 net::SpawnedTestServer::kLocalhost, |
318 test_server_base)); | 320 test_server_base)); |
319 } | 321 } |
320 | 322 |
321 void BrowserTestBase::PostTaskToInProcessRendererAndWait( | 323 void BrowserTestBase::PostTaskToInProcessRendererAndWait( |
322 const base::Closure& task) { | 324 const base::Closure& task) { |
323 CHECK(CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)); | 325 CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 326 switches::kSingleProcess)); |
324 | 327 |
325 scoped_refptr<MessageLoopRunner> runner = new MessageLoopRunner; | 328 scoped_refptr<MessageLoopRunner> runner = new MessageLoopRunner; |
326 | 329 |
327 base::MessageLoop* renderer_loop = | 330 base::MessageLoop* renderer_loop = |
328 RenderProcessHostImpl::GetInProcessRendererThreadForTesting(); | 331 RenderProcessHostImpl::GetInProcessRendererThreadForTesting(); |
329 CHECK(renderer_loop); | 332 CHECK(renderer_loop); |
330 | 333 |
331 renderer_loop->PostTask( | 334 renderer_loop->PostTask( |
332 FROM_HERE, | 335 FROM_HERE, |
333 base::Bind(&RunTaskOnRendererThread, task, runner->QuitClosure())); | 336 base::Bind(&RunTaskOnRendererThread, task, runner->QuitClosure())); |
334 runner->Run(); | 337 runner->Run(); |
335 } | 338 } |
336 | 339 |
337 void BrowserTestBase::EnablePixelOutput() { enable_pixel_output_ = true; } | 340 void BrowserTestBase::EnablePixelOutput() { enable_pixel_output_ = true; } |
338 | 341 |
339 void BrowserTestBase::UseSoftwareCompositing() { | 342 void BrowserTestBase::UseSoftwareCompositing() { |
340 use_software_compositing_ = true; | 343 use_software_compositing_ = true; |
341 } | 344 } |
342 | 345 |
343 bool BrowserTestBase::UsingOSMesa() const { | 346 bool BrowserTestBase::UsingOSMesa() const { |
344 CommandLine* cmd = CommandLine::ForCurrentProcess(); | 347 base::CommandLine* cmd = base::CommandLine::ForCurrentProcess(); |
345 return cmd->GetSwitchValueASCII(switches::kUseGL) == | 348 return cmd->GetSwitchValueASCII(switches::kUseGL) == |
346 gfx::kGLImplementationOSMesaName; | 349 gfx::kGLImplementationOSMesaName; |
347 } | 350 } |
348 | 351 |
349 } // namespace content | 352 } // namespace content |
OLD | NEW |