summaryrefslogtreecommitdiffstats
path: root/content/browser/plugin_process_host.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/plugin_process_host.cc')
-rw-r--r--content/browser/plugin_process_host.cc35
1 files changed, 22 insertions, 13 deletions
diff --git a/content/browser/plugin_process_host.cc b/content/browser/plugin_process_host.cc
index 21d7fd4..8aa69dd 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