summaryrefslogtreecommitdiffstats
path: root/chrome/browser/worker_host
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-18 23:46:53 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-18 23:46:53 +0000
commit4f4a13fdcca50a40cc0d761fe9bd00b643169992 (patch)
tree1e9e92deee4830a194c50232327754a99403ccf1 /chrome/browser/worker_host
parentc9d869c9d91ccb7ad8f061a93e7265bcddd85b47 (diff)
downloadchromium_src-4f4a13fdcca50a40cc0d761fe9bd00b643169992.zip
chromium_src-4f4a13fdcca50a40cc0d761fe9bd00b643169992.tar.gz
chromium_src-4f4a13fdcca50a40cc0d761fe9bd00b643169992.tar.bz2
Refactor sandboxing code so that it can be used by worker processes.
Review URL: http://codereview.chromium.org/42311 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12038 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/worker_host')
-rw-r--r--chrome/browser/worker_host/worker_process_host.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/chrome/browser/worker_host/worker_process_host.cc b/chrome/browser/worker_host/worker_process_host.cc
index bf68bff..d696df6 100644
--- a/chrome/browser/worker_host/worker_process_host.cc
+++ b/chrome/browser/worker_host/worker_process_host.cc
@@ -17,6 +17,10 @@
#include "chrome/common/render_messages.h"
#include "chrome/common/worker_messages.h"
+#if defined(OS_WIN)
+#include "chrome/browser/sandbox_policy.h"
+#endif
+
WorkerProcessHost::WorkerProcessHost(
ResourceDispatcherHost* resource_dispatcher_host_)
@@ -38,16 +42,18 @@ bool WorkerProcessHost::Init() {
return false;
CommandLine cmd_line(exe_path);
-
- // TODO(jabdelmalek): factor out common code from renderer/plugin that does
- // sandboxing and command line copying and reuse here.
cmd_line.AppendSwitchWithValue(switches::kProcessType,
switches::kWorkerProcess);
cmd_line.AppendSwitchWithValue(switches::kProcessChannelID, channel_id());
- base::ProcessHandle handle;
- if (!base::LaunchApp(cmd_line, false, false, &handle))
+ base::ProcessHandle process;
+#if defined(OS_WIN)
+ process = sandbox::StartProcess(&cmd_line);
+#else
+ base::LaunchApp(cmd_line, false, false, &process);
+#endif
+ if (!process)
return false;
- SetHandle(handle);
+ SetHandle(process);
return true;
}