Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(976)

Unified Diff: base/process_util.h

Issue 7377012: Change base::LaunchProcess API slightly (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/process_util_posix.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/process_util.h
diff --git a/base/process_util.h b/base/process_util.h
index 3d06f837ac19ed28d51ee9a9f5f7ec82e8078db2..234bb4fd4996d686efc70be7964df8df35de4644 100644
--- a/base/process_util.h
+++ b/base/process_util.h
@@ -195,8 +195,9 @@ typedef std::vector<std::pair<std::string, std::string> > environment_vector;
typedef std::vector<std::pair<int, int> > file_handle_mapping_vector;
// Options for launching a subprocess that are passed to LaunchApp().
+// The default constructor constructs the object with default options.
struct LaunchOptions {
- LaunchOptions() : wait(false), process_handle(NULL),
+ LaunchOptions() : wait(false),
#if defined(OS_WIN)
start_hidden(false), inherit_handles(false), as_user(NULL),
empty_desktop_name(false)
@@ -208,13 +209,6 @@ struct LaunchOptions {
// If true, wait for the process to complete.
bool wait;
- // If non-NULL, will be filled in with the handle of the launched process.
- // NOTE: In this case, the caller is responsible for closing the handle so
- // that it doesn't leak! Otherwise, the handle will be implicitly
- // closed.
- // Not especially useful unless |wait| is false.
- ProcessHandle* process_handle;
-
#if defined(OS_WIN)
bool start_hidden;
@@ -253,7 +247,12 @@ struct LaunchOptions {
};
// Launch a process via the command line |cmdline|.
-// See the documentation of LaunchOptions for details on launching options.
+// See the documentation of LaunchOptions for details on |options|.
+//
+// If |process_handle| is non-NULL, it will be filled in with the
+// handle of the launched process. NOTE: In this case, the caller is
+// responsible for closing the handle so that it doesn't leak!
+// Otherwise, the process handle will be implicitly closed.
//
// Unix-specific notes:
// - Before launching, all FDs open in the parent process will be marked as
@@ -261,7 +260,8 @@ struct LaunchOptions {
// - If the first argument on the command line does not contain a slash,
// PATH will be searched. (See man execvp.)
BASE_API bool LaunchProcess(const CommandLine& cmdline,
- const LaunchOptions& options);
+ const LaunchOptions& options,
+ ProcessHandle* process_handle);
#if defined(OS_WIN)
@@ -288,7 +288,8 @@ BASE_API bool GetProcessIntegrityLevel(ProcessHandle process,
// Example (including literal quotes)
// cmdline = "c:\windows\explorer.exe" -foo "c:\bar\"
BASE_API bool LaunchProcess(const string16& cmdline,
- const LaunchOptions& options);
+ const LaunchOptions& options,
+ ProcessHandle* process_handle);
// TODO(evan): deprecated; change callers to use LaunchProcess, remove.
inline bool LaunchApp(const std::wstring& cmdline,
@@ -297,8 +298,7 @@ inline bool LaunchApp(const std::wstring& cmdline,
LaunchOptions options;
options.wait = wait;
options.start_hidden = start_hidden;
- options.process_handle = process_handle;
- return LaunchProcess(cmdline, options);
+ return LaunchProcess(cmdline, options, process_handle);
}
// TODO(evan): deprecated; change callers to use LaunchProcess, remove.
@@ -308,9 +308,8 @@ inline bool LaunchAppWithHandleInheritance(const std::wstring& cmdline,
LaunchOptions options;
options.wait = wait;
options.start_hidden = start_hidden;
- options.process_handle = process_handle;
options.inherit_handles = true;
- return LaunchProcess(cmdline, options);
+ return LaunchProcess(cmdline, options, process_handle);
}
// TODO(evan): deprecated; change callers to use LaunchProcess, remove.
@@ -320,9 +319,8 @@ inline bool LaunchAppAsUser(UserTokenHandle token,
ProcessHandle* process_handle) {
LaunchOptions options;
options.start_hidden = start_hidden;
- options.process_handle = process_handle;
options.as_user = token;
- return LaunchProcess(cmdline, options);
+ return LaunchProcess(cmdline, options, process_handle);
}
// TODO(evan): deprecated; change callers to use LaunchProcess, remove.
@@ -332,11 +330,10 @@ inline bool LaunchAppAsUser(UserTokenHandle token,
bool empty_desktop_name, bool inherit_handles) {
LaunchOptions options;
options.start_hidden = start_hidden;
- options.process_handle = process_handle;
options.as_user = token;
options.empty_desktop_name = empty_desktop_name;
options.inherit_handles = inherit_handles;
- return LaunchProcess(cmdline, options);
+ return LaunchProcess(cmdline, options, process_handle);
}
#elif defined(OS_POSIX)
@@ -345,7 +342,8 @@ inline bool LaunchAppAsUser(UserTokenHandle token,
// control the command line arguments directly, but prefer the
// CommandLine version if launching Chrome itself.
BASE_API bool LaunchProcess(const std::vector<std::string>& argv,
- const LaunchOptions& options);
+ const LaunchOptions& options,
+ ProcessHandle* process_handle);
// AlterEnvironment returns a modified environment vector, constructed from the
// given environment and the list of changes given in |changes|. Each key in
@@ -365,9 +363,8 @@ inline bool LaunchApp(const CommandLine& cl, bool wait, bool start_hidden,
ProcessHandle* process_handle) {
LaunchOptions options;
options.wait = wait;
- options.process_handle = process_handle;
-
- return LaunchProcess(cl, options);
+ options.start_hidden = start_hidden;
+ return LaunchProcess(cl, options, process_handle);
}
#endif
« no previous file with comments | « no previous file | base/process_util_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698