summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-10 00:52:14 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-10 00:52:14 +0000
commit052f1d48dd75d470ece2b0df27da7304bfba1bcd (patch)
tree6b9451d475ae34f2b3273730e130d0e07390acf1 /base
parent4adf2b8090bef783e8ba9c444fce7153063756a7 (diff)
downloadchromium_src-052f1d48dd75d470ece2b0df27da7304bfba1bcd.zip
chromium_src-052f1d48dd75d470ece2b0df27da7304bfba1bcd.tar.gz
chromium_src-052f1d48dd75d470ece2b0df27da7304bfba1bcd.tar.bz2
POSIX: add command line option to launch renderers in a wrapper
For example, ./Hammer/chrome --renderer-cmd-prefix="gdb --args" Review URL: http://codereview.chromium.org/21190 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9438 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/command_line.cc10
-rw-r--r--base/command_line.h4
2 files changed, 14 insertions, 0 deletions
diff --git a/base/command_line.cc b/base/command_line.cc
index cf3e36f..d9a2052 100644
--- a/base/command_line.cc
+++ b/base/command_line.cc
@@ -334,5 +334,15 @@ void CommandLine::AppendArguments(const CommandLine& other,
for (i = other.switches_.begin(); i != other.switches_.end(); ++i)
switches_[i->first] = i->second;
}
+
+void CommandLine::PrependWrapper(const std::wstring& wrapper_wide) {
+ // The wrapper may have embedded arguments (like "gdb --args"). In this case,
+ // we don't pretend to do anything fancy, we just split on spaces.
+ const std::string wrapper = WideToASCII(wrapper_wide);
+ std::vector<std::string> wrapper_and_args;
+ SplitString(wrapper, ' ', &wrapper_and_args);
+ argv_.insert(argv_.begin(), wrapper_and_args.begin(), wrapper_and_args.end());
+}
+
#endif
diff --git a/base/command_line.h b/base/command_line.h
index 9a02546..94992b8 100644
--- a/base/command_line.h
+++ b/base/command_line.h
@@ -114,6 +114,10 @@ class CommandLine {
void AppendArguments(const CommandLine& other,
bool include_program);
+ // On POSIX systems it's common to run processes via a wrapper (like
+ // "valgrind" or "gdb --args"). *Note, only availible on POSIX*
+ void PrependWrapper(const std::wstring& wrapper);
+
private:
friend class InProcessBrowserTest;