| Index: content/browser/ppapi_plugin_process_host.cc
|
| diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc
|
| index 1817c762d239b812fe1193dd63223d127a4a5b0d..94f6c9ccd18e85acba4f1b7160f1b5c63bf50235 100644
|
| --- a/content/browser/ppapi_plugin_process_host.cc
|
| +++ b/content/browser/ppapi_plugin_process_host.cc
|
| @@ -35,6 +35,10 @@
|
| #include "ppapi/proxy/ppapi_messages.h"
|
| #include "ui/base/ui_base_switches.h"
|
|
|
| +#if defined(OS_POSIX)
|
| +#include "content/public/browser/zygote_handle_linux.h"
|
| +#endif // defined(OS_POSIX)
|
| +
|
| #if defined(OS_WIN)
|
| #include "content/browser/renderer_host/dwrite_font_proxy_message_filter_win.h"
|
| #include "content/common/sandbox_win.h"
|
| @@ -45,6 +49,10 @@
|
|
|
| namespace content {
|
|
|
| +#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
|
| +ZygoteHandle g_ppapi_zygote;
|
| +#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
|
| +
|
| // NOTE: changes to this class need to be reviewed by the security team.
|
| class PpapiPluginSandboxedProcessLauncherDelegate
|
| : public content::SandboxedProcessLauncherDelegate {
|
| @@ -97,13 +105,18 @@ class PpapiPluginSandboxedProcessLauncherDelegate
|
| }
|
|
|
| #elif defined(OS_POSIX)
|
| - bool ShouldUseZygote() override {
|
| +#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
|
| + ZygoteHandle* GetZygote() override {
|
| const base::CommandLine& browser_command_line =
|
| *base::CommandLine::ForCurrentProcess();
|
| base::CommandLine::StringType plugin_launcher = browser_command_line
|
| .GetSwitchValueNative(switches::kPpapiPluginLauncher);
|
| - return !is_broker_ && plugin_launcher.empty();
|
| + if (is_broker_ || !plugin_launcher.empty())
|
| + return nullptr;
|
| + return &g_ppapi_zygote;
|
| }
|
| +#endif // !defined(OS_MACOSX) && !defined(OS_ANDROID)
|
| +
|
| base::ScopedFD TakeIpcFd() override { return std::move(ipc_fd_); }
|
| #endif // OS_WIN
|
|
|
| @@ -190,6 +203,14 @@ PpapiPluginProcessHost* PpapiPluginProcessHost::CreateBrokerHost(
|
| return NULL;
|
| }
|
|
|
| +#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
|
| +// static
|
| +void PpapiPluginProcessHost::EarlyZygoteLaunch() {
|
| + DCHECK(!g_ppapi_zygote);
|
| + g_ppapi_zygote = zygote_handle::CreateZygote();
|
| +}
|
| +#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
|
| +
|
| // static
|
| void PpapiPluginProcessHost::DidCreateOutOfProcessInstance(
|
| int plugin_process_id,
|
|
|