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

Unified Diff: chrome/test/ui/ui_test_suite.cc

Issue 39282: Start the crash_service on windows when running ui tests, if it's not running... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/ui/ui_test_suite.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/test/ui/ui_test_suite.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698