summaryrefslogtreecommitdiffstats
path: root/chrome/test/ui_test_utils.cc
diff options
context:
space:
mode:
authormsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-14 01:10:24 +0000
committermsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-14 01:10:24 +0000
commita40ca43033ac86cc3224d843c233a71e94e72dbf (patch)
tree3172d0bd0d9430a8f155df047c6b14d188557abc /chrome/test/ui_test_utils.cc
parentdc09efb7dd87597a7e4b5fe790d0ce3a2511380e (diff)
downloadchromium_src-a40ca43033ac86cc3224d843c233a71e94e72dbf.zip
chromium_src-a40ca43033ac86cc3224d843c233a71e94e72dbf.tar.gz
chromium_src-a40ca43033ac86cc3224d843c233a71e94e72dbf.tar.bz2
Consolidate most CommandLine code across platforms.
Significant refactoring with some notable behavior changes: 1. Switches are appended preceding existing arguments (after other swtiches). 2. (Windows) command_line_string() is generated and properly quoted/escaped. 3. Appended switches will retain their (optional) included prefixes (--,-,/). Notable internal changes (shouldn't affect behavior): 1. (Windows) Generate the cl string, instead of storing&updating the original. 2. Explicitly retain switch prefixes (--,-,/) (was automatic in init*/ctor). Update (obvious) code expecting switches to be appended antecedent to args. Add Nico's test from: codereview.chromium.org/6728016/. An intermediary CL landed between patch set 3 and 4, see: http://codereview.chromium.org/6596020 BUG=73195,67764 TEST=Commandline usage. Review URL: http://codereview.chromium.org/6526040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85360 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/ui_test_utils.cc')
-rw-r--r--chrome/test/ui_test_utils.cc23
1 files changed, 15 insertions, 8 deletions
diff --git a/chrome/test/ui_test_utils.cc b/chrome/test/ui_test_utils.cc
index e7c84aa..77ce4ff 100644
--- a/chrome/test/ui_test_utils.cc
+++ b/chrome/test/ui_test_utils.cc
@@ -750,17 +750,20 @@ TestWebSocketServer::TestWebSocketServer() : started_(false) {
bool TestWebSocketServer::Start(const FilePath& root_directory) {
if (started_)
return true;
+ // Append CommandLine arguments after the server script, switches won't work.
scoped_ptr<CommandLine> cmd_line(CreateWebSocketServerCommandLine());
- cmd_line->AppendSwitchASCII("server", "start");
- cmd_line->AppendSwitch("chromium");
- cmd_line->AppendSwitch("register_cygwin");
- cmd_line->AppendSwitchPath("root", root_directory);
+ cmd_line->AppendArg("--server=start");
+ cmd_line->AppendArg("--chromium");
+ cmd_line->AppendArg("--register_cygwin");
+ cmd_line->AppendArgNative(FILE_PATH_LITERAL("--root=") +
+ root_directory.value());
if (!temp_dir_.CreateUniqueTempDir()) {
LOG(ERROR) << "Unable to create a temporary directory.";
return false;
}
websocket_pid_file_ = temp_dir_.path().AppendASCII("websocket.pid");
- cmd_line->AppendSwitchPath("pidfile", websocket_pid_file_);
+ cmd_line->AppendArgNative(FILE_PATH_LITERAL("--pidfile=") +
+ websocket_pid_file_.value());
SetPythonPath();
if (!base::LaunchApp(*cmd_line.get(), true, false, NULL)) {
LOG(ERROR) << "Unable to launch websocket server.";
@@ -771,6 +774,8 @@ bool TestWebSocketServer::Start(const FilePath& root_directory) {
}
CommandLine* TestWebSocketServer::CreatePythonCommandLine() {
+ // Note: Python's first argument must be the script; do not append CommandLine
+ // switches, as they would precede the script path and break this CommandLine.
return new CommandLine(FilePath(FILE_PATH_LITERAL("python")));
}
@@ -806,10 +811,12 @@ CommandLine* TestWebSocketServer::CreateWebSocketServerCommandLine() {
TestWebSocketServer::~TestWebSocketServer() {
if (!started_)
return;
+ // Append CommandLine arguments after the server script, switches won't work.
scoped_ptr<CommandLine> cmd_line(CreateWebSocketServerCommandLine());
- cmd_line->AppendSwitchASCII("server", "stop");
- cmd_line->AppendSwitch("chromium");
- cmd_line->AppendSwitchPath("pidfile", websocket_pid_file_);
+ cmd_line->AppendArg("--server=stop");
+ cmd_line->AppendArg("--chromium");
+ cmd_line->AppendArgNative(FILE_PATH_LITERAL("--pidfile=") +
+ websocket_pid_file_.value());
base::LaunchApp(*cmd_line.get(), true, false, NULL);
}