Index: content/shell/shell_browser_main.cc |
diff --git a/content/shell/shell_browser_main.cc b/content/shell/shell_browser_main.cc |
index 499b9b3ddada2646fa48be79dbd18d1ae6a05d84..d8fabe959a96e30851a5337444cee82a8cd7d845 100644 |
--- a/content/shell/shell_browser_main.cc |
+++ b/content/shell/shell_browser_main.cc |
@@ -13,6 +13,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/sys_string_conversions.h" |
#include "base/threading/thread_restrictions.h" |
+#include "base/utf_string_conversions.h" |
#include "content/public/browser/browser_main_runner.h" |
#include "content/shell/shell_switches.h" |
#include "content/shell/webkit_test_runner_host.h" |
@@ -21,7 +22,7 @@ |
namespace { |
-GURL GetURLForLayoutTest(const char* test_name, |
+GURL GetURLForLayoutTest(const std::string& test_name, |
bool* enable_pixel_dumping, |
std::string* expected_pixel_hash) { |
// A test name is formated like file:///path/to/test'--pixel-test'pixelhash |
@@ -63,6 +64,21 @@ GURL GetURLForLayoutTest(const char* test_name, |
return test_url; |
} |
+bool GetNextTest(const CommandLine::StringVector& args, |
+ size_t* position, |
+ std::string* test) { |
+ if (*position >= args.size()) |
+ return false; |
+ if (args[*position] == FILE_PATH_LITERAL("-")) |
+ return !!std::getline(std::cin, *test, '\n'); |
+#if defined(OS_WIN) |
+ *test = WideToUTF8(args[(*position)++]); |
+#else |
+ *test = args[(*position)++]; |
+#endif |
+ return true; |
+} |
+ |
} // namespace |
// Main routine for running as the Browser process. |
@@ -85,20 +101,20 @@ int ShellBrowserMain(const content::MainFunctionParams& parameters) { |
if (layout_test_mode) { |
content::WebKitTestController test_controller; |
+ std::string test_string; |
+ CommandLine::StringVector args = |
+ CommandLine::ForCurrentProcess()->GetArgs(); |
+ size_t command_line_position = 0; |
- char test_string[2048]; |
#if defined(OS_ANDROID) |
std::cout << "#READY\n"; |
std::cout.flush(); |
#endif |
- while (fgets(test_string, sizeof(test_string), stdin)) { |
- char *new_line_position = strchr(test_string, '\n'); |
- if (new_line_position) |
- *new_line_position = '\0'; |
- if (test_string[0] == '\0') |
+ while (GetNextTest(args, &command_line_position, &test_string)) { |
+ if (test_string.empty()) |
continue; |
- if (!strcmp(test_string, "QUIT")) |
+ if (test_string == "QUIT") |
break; |
bool enable_pixel_dumps; |