| Index: content/browser/plugin_process_host.cc
|
| diff --git a/content/browser/plugin_process_host.cc b/content/browser/plugin_process_host.cc
|
| index 38ca6d196a42495df8b809aa7078f784ea4c8e42..8f39c463109f3805e7916498567689a25f79864d 100644
|
| --- a/content/browser/plugin_process_host.cc
|
| +++ b/content/browser/plugin_process_host.cc
|
| @@ -36,6 +36,7 @@
|
| #include "content/public/browser/resource_context.h"
|
| #include "content/public/common/content_switches.h"
|
| #include "content/public/common/process_type.h"
|
| +#include "content/public/common/sandboxed_process_launcher_delegate.h"
|
| #include "ipc/ipc_switches.h"
|
| #include "net/url_request/url_request_context_getter.h"
|
| #include "ui/base/ui_base_switches.h"
|
| @@ -55,7 +56,6 @@
|
| #if defined(OS_WIN)
|
| #include "base/win/windows_version.h"
|
| #include "content/common/plugin_constants_win.h"
|
| -#include "content/public/common/sandboxed_process_launcher_delegate.h"
|
| #include "ui/gfx/switches.h"
|
| #endif
|
|
|
| @@ -77,24 +77,39 @@ void PluginProcessHost::OnPluginWindowDestroyed(HWND window, HWND parent) {
|
| void PluginProcessHost::AddWindow(HWND window) {
|
| plugin_parent_windows_set_.insert(window);
|
| }
|
| +#endif // defined(OS_WIN)
|
|
|
| // NOTE: changes to this class need to be reviewed by the security team.
|
| class PluginSandboxedProcessLauncherDelegate
|
| : public SandboxedProcessLauncherDelegate {
|
| public:
|
| - PluginSandboxedProcessLauncherDelegate() {}
|
| + explicit PluginSandboxedProcessLauncherDelegate(ChildProcessHost* host)
|
| +#if defined(OS_POSIX)
|
| + : ipc_fd_(host->TakeClientFileDescriptor())
|
| +#endif // OS_POSIX
|
| + {}
|
| +
|
| virtual ~PluginSandboxedProcessLauncherDelegate() {}
|
|
|
| - virtual void ShouldSandbox(bool* in_sandbox) OVERRIDE {
|
| - *in_sandbox = false;
|
| +#if defined(OS_WIN)
|
| + virtual bool ShouldSandbox() OVERRIDE {
|
| + return false;
|
| }
|
|
|
| +#elif defined(OS_POSIX)
|
| + virtual int GetIpcFd() OVERRIDE {
|
| + return ipc_fd_;
|
| + }
|
| +#endif // OS_WIN
|
| +
|
| private:
|
| +#if defined(OS_POSIX)
|
| + int ipc_fd_;
|
| +#endif // OS_POSIX
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(PluginSandboxedProcessLauncherDelegate);
|
| };
|
|
|
| -#endif // defined(OS_WIN)
|
| -
|
| #if defined(TOOLKIT_GTK)
|
| void PluginProcessHost::OnMapNativeViewId(gfx::NativeViewId id,
|
| gfx::PluginWindowHandle* output) {
|
| @@ -246,13 +261,7 @@ bool PluginProcessHost::Init(const WebPluginInfo& info) {
|
| #endif
|
|
|
| process_->Launch(
|
| -#if defined(OS_WIN)
|
| - new PluginSandboxedProcessLauncherDelegate,
|
| - false,
|
| -#elif defined(OS_POSIX)
|
| - false,
|
| - env,
|
| -#endif
|
| + new PluginSandboxedProcessLauncherDelegate(process_->GetHost()),
|
| cmd_line);
|
|
|
| // The plugin needs to be shutdown gracefully, i.e. NP_Shutdown needs to be
|
|
|