Index: chrome/test/ui/ui_test.cc |
diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc |
index cfabbc256349b5ee7291211106886186ebce255b..bed4292de8c913a897b672d9187bf78e4e83b162 100644 |
--- a/chrome/test/ui/ui_test.cc |
+++ b/chrome/test/ui/ui_test.cc |
@@ -44,6 +44,8 @@ static const int kWaitForActionMaxMsec = 10000; |
static const int kMaxTestExecutionTime = 30000; |
// Delay to let the browser shut down before trying more brutal methods. |
static const int kWaitForTerminateMsec = 30000; |
+// Timeout after which the test will be aborted. |
+static const int kPerTestTimeoutMsec = 360000; |
const wchar_t UITest::kFailedNoCrashService[] = |
#if defined(OS_WIN) |
@@ -73,11 +75,13 @@ std::wstring UITest::log_level_ = L""; |
// Specify the time (in milliseconds) that the ui_tests should wait before |
// timing out. This is used to specify longer timeouts when running under Purify |
// which requires much more time. |
+// TODO(phajdan.jr): ui-test-timeout is misleading name, rename it. |
const wchar_t kUiTestTimeout[] = L"ui-test-timeout"; |
const wchar_t kUiTestActionTimeout[] = L"ui-test-action-timeout"; |
const wchar_t kUiTestActionMaxTimeout[] = L"ui-test-action-max-timeout"; |
const wchar_t kUiTestSleepTimeout[] = L"ui-test-sleep-timeout"; |
const wchar_t kUiTestTerminateTimeout[] = L"ui-test-terminate-timeout"; |
+const wchar_t kUiTestPerTestTimeout[] = L"ui-test-per-test-timeout"; |
const wchar_t kExtraChromeFlagsSwitch[] = L"extra-chrome-flags"; |
@@ -111,7 +115,8 @@ UITest::UITest() |
action_timeout_ms_(kWaitForActionMsec), |
action_max_timeout_ms_(kWaitForActionMaxMsec), |
sleep_timeout_ms_(kWaitForActionMsec), |
- terminate_timeout_ms_(kWaitForTerminateMsec) { |
+ terminate_timeout_ms_(kWaitForTerminateMsec), |
+ per_test_timeout_ms_(kPerTestTimeoutMsec) { |
PathService::Get(chrome::DIR_APP, &browser_directory_); |
PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_); |
} |
@@ -135,6 +140,8 @@ void UITest::SetUp() { |
InitializeTimeouts(); |
LaunchBrowserAndServer(); |
+ |
+ automation()->QuitAfterTimeout(per_test_timeout_ms_); |
} |
void UITest::TearDown() { |
@@ -207,6 +214,14 @@ void UITest::InitializeTimeouts() { |
int terminate_timeout = StringToInt(WideToUTF16Hack(terminate_timeout_str)); |
terminate_timeout_ms_ = std::max(kWaitForActionMsec, terminate_timeout); |
} |
+ |
+ if (CommandLine::ForCurrentProcess()->HasSwitch(kUiTestPerTestTimeout)) { |
+ std::wstring per_test_timeout_str = |
+ CommandLine::ForCurrentProcess()->GetSwitchValue( |
+ kUiTestPerTestTimeout); |
+ int per_test_timeout = StringToInt(WideToUTF16Hack(per_test_timeout_str)); |
+ per_test_timeout_ms_ = std::max(kPerTestTimeoutMsec, per_test_timeout); |
+ } |
} |
AutomationProxy* UITest::CreateAutomationProxy(int execution_timeout) { |