| Index: content/browser/renderer_host/render_process_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
|
| index 4f8735eb2593369b165219be9e282f447a85ae97..ed9a1c728c1d2bd805f0194c3008e55146ee7324 100644
|
| --- a/content/browser/renderer_host/render_process_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_process_host_impl.cc
|
| @@ -558,7 +558,8 @@ RenderProcessHostImpl::RenderProcessHostImpl(
|
| pending_views_(0),
|
| immediate_sender_(new SafeSenderProxy(this, true)),
|
| io_thread_sender_(new SafeSenderProxy(this, false)),
|
| - mojo_application_host_(new MojoApplicationHost),
|
| + child_token_(mojo::edk::GenerateRandomToken()),
|
| + mojo_application_host_(new MojoApplicationHost(child_token_)),
|
| visible_widgets_(0),
|
| is_process_backgrounded_(false),
|
| is_initialized_(false),
|
| @@ -694,7 +695,8 @@ bool RenderProcessHostImpl::Init() {
|
|
|
| mojo_child_connection_.reset(new MojoChildConnection(
|
| kRendererMojoApplicationName,
|
| - base::StringPrintf("%d_%d", id_, instance_id_++)));
|
| + base::StringPrintf("%d_%d", id_, instance_id_++),
|
| + child_token_));
|
|
|
| base::CommandLine::StringType renderer_prefix;
|
| // A command prefix is something prepended to the command line of the spawned
|
| @@ -780,7 +782,7 @@ bool RenderProcessHostImpl::Init() {
|
| // at this stage.
|
| child_process_launcher_.reset(new ChildProcessLauncher(
|
| new RendererSandboxedProcessLauncherDelegate(channel_.get()), cmd_line,
|
| - GetID(), this));
|
| + GetID(), this, child_token_));
|
|
|
| fast_shutdown_started_ = false;
|
| }
|
| @@ -803,7 +805,7 @@ std::unique_ptr<IPC::ChannelProxy> RenderProcessHostImpl::CreateChannelProxy(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
|
| mojo_channel_token_ = mojo::edk::GenerateRandomToken();
|
| mojo::ScopedMessagePipeHandle handle =
|
| - mojo::edk::CreateParentMessagePipe(mojo_channel_token_);
|
| + mojo::edk::CreateParentMessagePipe(mojo_channel_token_, child_token_);
|
|
|
| // Do NOT expand ifdef or run time condition checks here! Synchronous
|
| // IPCs from browser process are banned. It is only narrowly allowed
|
| @@ -2417,7 +2419,8 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead,
|
| // RenderProcessExited observers and RenderProcessGone handlers might
|
| // navigate or perform other actions that require a connection. Ensure that
|
| // there is one before calling them.
|
| - mojo_application_host_.reset(new MojoApplicationHost);
|
| + child_token_ = mojo::edk::GenerateRandomToken();
|
| + mojo_application_host_.reset(new MojoApplicationHost(child_token_));
|
|
|
| within_process_died_observer_ = true;
|
| NotificationService::current()->Notify(
|
|
|