OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "chrome/test/in_process_browser_test.h" | 5 #include "chrome/test/in_process_browser_test.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 #include "chrome/common/main_function_params.h" | 26 #include "chrome/common/main_function_params.h" |
27 #include "chrome/test/testing_browser_process.h" | 27 #include "chrome/test/testing_browser_process.h" |
28 #include "chrome/test/ui_test_utils.h" | 28 #include "chrome/test/ui_test_utils.h" |
29 #include "net/base/host_resolver_unittest.h" | 29 #include "net/base/host_resolver_unittest.h" |
30 #include "sandbox/src/dep.h" | 30 #include "sandbox/src/dep.h" |
31 | 31 |
32 extern int BrowserMain(const MainFunctionParams&); | 32 extern int BrowserMain(const MainFunctionParams&); |
33 | 33 |
34 const wchar_t kUnitTestShowWindows[] = L"show-windows"; | 34 const wchar_t kUnitTestShowWindows[] = L"show-windows"; |
35 | 35 |
| 36 // Delay for the time-out at which we stop the inner-message loop the first |
| 37 // time. |
| 38 const int kInitialTimeoutInMS = 30000; |
| 39 |
| 40 // Delay for sub-sequent time-outs once the initial time-out happened. |
| 41 const int kSubsequentTimeoutInMS = 5000; |
| 42 |
36 namespace { | 43 namespace { |
37 | 44 |
38 bool DieFileDie(const std::wstring& file, bool recurse) { | 45 bool DieFileDie(const std::wstring& file, bool recurse) { |
39 if (!file_util::PathExists(file)) | 46 if (!file_util::PathExists(file)) |
40 return true; | 47 return true; |
41 | 48 |
42 // Sometimes Delete fails, so try a few more times. | 49 // Sometimes Delete fails, so try a few more times. |
43 for (int i = 0; i < 10; ++i) { | 50 for (int i = 0; i < 10; ++i) { |
44 if (file_util::Delete(file, recurse)) | 51 if (file_util::Delete(file, recurse)) |
45 return true; | 52 return true; |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 #if defined(OS_WIN) | 205 #if defined(OS_WIN) |
199 chrome_path = chrome_path.Append(chrome::kBrowserProcessExecutablePath); | 206 chrome_path = chrome_path.Append(chrome::kBrowserProcessExecutablePath); |
200 #elif defined(OS_POSIX) | 207 #elif defined(OS_POSIX) |
201 chrome_path = chrome_path.Append( | 208 chrome_path = chrome_path.Append( |
202 WideToASCII(chrome::kBrowserProcessExecutablePath)); | 209 WideToASCII(chrome::kBrowserProcessExecutablePath)); |
203 #endif | 210 #endif |
204 CHECK(PathService::Override(base::FILE_EXE, chrome_path)); | 211 CHECK(PathService::Override(base::FILE_EXE, chrome_path)); |
205 | 212 |
206 browser_ = CreateBrowser(profile); | 213 browser_ = CreateBrowser(profile); |
207 | 214 |
| 215 // Start the timeout timer to prevent hangs. |
| 216 MessageLoopForUI::current()->PostDelayedTask(FROM_HERE, |
| 217 NewRunnableMethod(this, &InProcessBrowserTest::TimedOut), |
| 218 kInitialTimeoutInMS); |
| 219 |
208 RunTestOnMainThread(); | 220 RunTestOnMainThread(); |
209 | 221 |
210 BrowserList::const_iterator browser = BrowserList::begin(); | 222 BrowserList::const_iterator browser = BrowserList::begin(); |
211 for (; browser != BrowserList::end(); ++browser) | 223 for (; browser != BrowserList::end(); ++browser) |
212 (*browser)->CloseAllTabs(); | 224 (*browser)->CloseAllTabs(); |
213 | 225 |
214 // Stop the HTTP server. | 226 // Stop the HTTP server. |
215 http_server_ = NULL; | 227 http_server_ = NULL; |
216 | 228 |
217 MessageLoopForUI::current()->Quit(); | 229 MessageLoopForUI::current()->Quit(); |
218 } | 230 } |
219 | 231 |
220 void InProcessBrowserTest::ConfigureHostMapper( | 232 void InProcessBrowserTest::ConfigureHostMapper( |
221 net::RuleBasedHostMapper* host_mapper) { | 233 net::RuleBasedHostMapper* host_mapper) { |
222 host_mapper->AllowDirectLookup("*.google.com"); | 234 host_mapper->AllowDirectLookup("*.google.com"); |
223 // See http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol | 235 // See http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol |
224 // We don't want the test code to use it. | 236 // We don't want the test code to use it. |
225 host_mapper->AddSimulatedFailure("wpad"); | 237 host_mapper->AddSimulatedFailure("wpad"); |
226 } | 238 } |
| 239 |
| 240 void InProcessBrowserTest::TimedOut() { |
| 241 DCHECK(MessageLoopForUI::current()->IsNested()); |
| 242 |
| 243 GTEST_NONFATAL_FAILURE_("Timed-out"); |
| 244 |
| 245 // Start the timeout timer to prevent hangs. |
| 246 MessageLoopForUI::current()->PostDelayedTask(FROM_HERE, |
| 247 NewRunnableMethod(this, &InProcessBrowserTest::TimedOut), |
| 248 kSubsequentTimeoutInMS); |
| 249 |
| 250 MessageLoopForUI::current()->Quit(); |
| 251 } |
OLD | NEW |