Index: content/shell/browser/layout_test/layout_test_browser_main.cc |
diff --git a/content/shell/browser/layout_test/layout_test_browser_main.cc b/content/shell/browser/layout_test/layout_test_browser_main.cc |
index 8d0cc6316d407fbc8b4d66f32513506a385bc024..e0c2fdbfc4ff26ef050f2a30d6554f405ba33672 100644 |
--- a/content/shell/browser/layout_test/layout_test_browser_main.cc |
+++ b/content/shell/browser/layout_test/layout_test_browser_main.cc |
@@ -147,6 +147,43 @@ bool RunOneTest(const std::string& test_string, |
return true; |
} |
+int RunTests(const scoped_ptr<content::BrowserMainRunner>& main_runner) { |
+ content::WebKitTestController test_controller; |
+ { |
+ // We're outside of the message loop here, and this is a test. |
+ base::ThreadRestrictions::ScopedAllowIO allow_io; |
+ base::FilePath temp_path; |
+ base::GetTempDir(&temp_path); |
+ test_controller.SetTempPath(temp_path); |
+ } |
+ std::string test_string; |
+ CommandLine::StringVector args = CommandLine::ForCurrentProcess()->GetArgs(); |
+ size_t command_line_position = 0; |
+ bool ran_at_least_once = false; |
+ |
+ std::cout << "#READY\n"; |
+ std::cout.flush(); |
+ |
+ while (GetNextTest(args, &command_line_position, &test_string)) { |
+ if (!RunOneTest(test_string, &ran_at_least_once, main_runner)) |
+ break; |
+ } |
+ if (!ran_at_least_once) { |
+ base::MessageLoop::current()->PostTask(FROM_HERE, |
+ base::MessageLoop::QuitClosure()); |
+ main_runner->Run(); |
+ } |
+ |
+#if defined(OS_ANDROID) |
+ // We need to execute 'main_runner->Shutdown()' before the test_controller |
+ // destructs when running on Android, and after it destructs when running |
+ // anywhere else. |
+ main_runner->Shutdown(); |
+#endif |
+ |
+ return 0; |
+} |
+ |
} // namespace |
// Main routine for running as the Browser process. |
@@ -182,38 +219,7 @@ int LayoutTestBrowserMain( |
return 0; |
} |
- content::WebKitTestController test_controller; |
- { |
- // We're outside of the message loop here, and this is a test. |
- base::ThreadRestrictions::ScopedAllowIO allow_io; |
- base::FilePath temp_path; |
- base::GetTempDir(&temp_path); |
- test_controller.SetTempPath(temp_path); |
- } |
- std::string test_string; |
- CommandLine::StringVector args = CommandLine::ForCurrentProcess()->GetArgs(); |
- size_t command_line_position = 0; |
- bool ran_at_least_once = false; |
- |
- std::cout << "#READY\n"; |
- std::cout.flush(); |
- |
- while (GetNextTest(args, &command_line_position, &test_string)) { |
- if (!RunOneTest(test_string, &ran_at_least_once, main_runner)) |
- break; |
- } |
- if (!ran_at_least_once) { |
- base::MessageLoop::current()->PostTask(FROM_HERE, |
- base::MessageLoop::QuitClosure()); |
- main_runner->Run(); |
- } |
- |
-#if defined(OS_ANDROID) |
- // Android should only execute Shutdown() here when running layout tests. |
- main_runner->Shutdown(); |
-#endif |
- |
- exit_code = 0; |
+ exit_code = RunTests(main_runner); |
Peter Beverloo
2014/10/18 09:17:58
Hmm. RunTests never returns anything that's non-ze
|
#if !defined(OS_ANDROID) |
main_runner->Shutdown(); |