Index: chrome/test/ui/ui_test_suite.cc |
=================================================================== |
--- chrome/test/ui/ui_test_suite.cc (revision 11070) |
+++ chrome/test/ui/ui_test_suite.cc (working copy) |
@@ -4,9 +4,106 @@ |
#include "chrome/test/ui/ui_test_suite.h" |
+#include "base/path_service.h" |
+#include "base/process_util.h" |
+#include "base/sys_info.h" |
+#include "chrome/common/env_vars.h" |
+ |
// Force a test to use an already running browser instance. UI tests only. |
const wchar_t UITestSuite::kUseExistingBrowser[] = L"use-existing-browser"; |
// Timeout for the test in milliseconds. UI tests only. |
const wchar_t UITestSuite::kTestTimeout[] = L"test-timeout"; |
+ |
+UITestSuite::UITestSuite(int argc, char** argv) |
+ : ChromeTestSuite(argc, argv) { |
+#if defined(OS_WIN) |
+ crash_service_ = NULL; |
+#endif |
+} |
+ |
+void UITestSuite::Initialize() { |
+ ChromeTestSuite::Initialize(); |
+ |
+ const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); |
+ UITest::set_in_process_renderer( |
+ parsed_command_line.HasSwitch(switches::kSingleProcess)); |
+ UITest::set_no_sandbox( |
+ parsed_command_line.HasSwitch(switches::kNoSandbox)); |
+ UITest::set_full_memory_dump( |
+ parsed_command_line.HasSwitch(switches::kFullMemoryCrashReport)); |
+ UITest::set_safe_plugins( |
+ parsed_command_line.HasSwitch(switches::kSafePlugins)); |
+ UITest::set_use_existing_browser( |
+ parsed_command_line.HasSwitch(UITestSuite::kUseExistingBrowser)); |
+ UITest::set_dump_histograms_on_exit( |
+ parsed_command_line.HasSwitch(switches::kDumpHistogramsOnExit)); |
+ UITest::set_enable_dcheck( |
+ parsed_command_line.HasSwitch(switches::kEnableDCHECK)); |
+ UITest::set_silent_dump_on_dcheck( |
+ parsed_command_line.HasSwitch(switches::kSilentDumpOnDCHECK)); |
+ UITest::set_disable_breakpad( |
+ parsed_command_line.HasSwitch(switches::kDisableBreakpad)); |
+ std::wstring test_timeout = |
+ parsed_command_line.GetSwitchValue(UITestSuite::kTestTimeout); |
+ if (!test_timeout.empty()) { |
+ UITest::set_test_timeout_ms(StringToInt(WideToUTF16Hack(test_timeout))); |
+ } |
+ std::wstring js_flags = |
+ parsed_command_line.GetSwitchValue(switches::kJavaScriptFlags); |
+ if (!js_flags.empty()) { |
+ UITest::set_js_flags(js_flags); |
+ } |
+ std::wstring log_level = |
+ parsed_command_line.GetSwitchValue(switches::kLoggingLevel); |
+ if (!log_level.empty()) { |
+ UITest::set_log_level(log_level); |
+ } |
+ |
+#if defined(OS_WIN) |
+ LoadCrashService(); |
+#endif |
+} |
+ |
+void UITestSuite::Shutdown() { |
+#if defined(OS_WIN) |
+ if (crash_service_) |
+ base::KillProcess(crash_service_, 0, false); |
+#endif |
+ |
+ ChromeTestSuite::Shutdown(); |
+} |
+ |
+void UITestSuite::SuppressErrorDialogs() { |
+#if defined(OS_WIN) |
+ TestSuite::SuppressErrorDialogs(); |
+#endif |
+ UITest::set_show_error_dialogs(false); |
+} |
+ |
+#if defined(OS_WIN) |
+void UITestSuite::LoadCrashService() { |
+ if (base::SysInfo::HasEnvVar(env_vars::kHeadless)) |
+ return; |
+ |
+ if (base::GetProcessCount(L"crash_service.exe", NULL)) |
+ return; |
+ |
+ FilePath exe_dir; |
+ if (!PathService::Get(base::DIR_EXE, &exe_dir)) { |
+ DCHECK(false); |
+ return; |
+ } |
+ |
+ FilePath crash_service = exe_dir.Append(L"crash_service.exe"); |
+ if (!base::LaunchApp(crash_service.ToWStringHack(), false, false, |
+ &crash_service_)) { |
+ printf("Couldn't start crash_service.exe, so this ui_test run won't tell " \ |
+ "you if any test crashes!\n"); |
+ return; |
+ } |
+ |
+ printf("Started crash_service.exe so you know if a test crashes!\n"); |
+} |
+#endif |