summaryrefslogtreecommitdiffstats
path: root/chrome/test/ui/ui_test_suite.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/ui/ui_test_suite.cc')
-rw-r--r--chrome/test/ui/ui_test_suite.cc97
1 files changed, 97 insertions, 0 deletions
diff --git a/chrome/test/ui/ui_test_suite.cc b/chrome/test/ui/ui_test_suite.cc
index d8d24fb..3ff0fef 100644
--- a/chrome/test/ui/ui_test_suite.cc
+++ b/chrome/test/ui/ui_test_suite.cc
@@ -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