| Index: content/browser/frame_host/frame_tree.cc
|
| diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc
|
| index e463c3ce2b0e2db75eff7cf3dd8272365901efc0..814980e527e1b3691dfb50c7c99fed8202bb7a80 100644
|
| --- a/content/browser/frame_host/frame_tree.cc
|
| +++ b/content/browser/frame_host/frame_tree.cc
|
| @@ -8,6 +8,7 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/callback.h"
|
| +#include "base/command_line.h"
|
| #include "base/containers/hash_tables.h"
|
| #include "base/lazy_instance.h"
|
| #include "content/browser/frame_host/frame_tree_node.h"
|
| @@ -17,6 +18,7 @@
|
| #include "content/browser/frame_host/render_frame_proxy_host.h"
|
| #include "content/browser/renderer_host/render_view_host_factory.h"
|
| #include "content/browser/renderer_host/render_view_host_impl.h"
|
| +#include "content/public/common/content_switches.h"
|
| #include "third_party/WebKit/public/web/WebSandboxFlags.h"
|
|
|
| namespace content {
|
| @@ -226,9 +228,14 @@ void FrameTree::CreateProxiesForSiteInstance(
|
| RenderViewHostImpl* render_view_host =
|
| source->frame_tree()->GetRenderViewHost(site_instance);
|
| if (!render_view_host) {
|
| - root()->render_manager()->CreateRenderFrame(
|
| - site_instance, nullptr, MSG_ROUTING_NONE,
|
| - CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, nullptr);
|
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kSitePerProcess)) {
|
| + root()->render_manager()->CreateRenderFrameProxy(site_instance);
|
| + } else {
|
| + root()->render_manager()->CreateRenderFrame(
|
| + site_instance, nullptr, MSG_ROUTING_NONE,
|
| + CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, nullptr);
|
| + }
|
| } else {
|
| root()->render_manager()->EnsureRenderViewInitialized(
|
| source, render_view_host, site_instance);
|
| @@ -265,7 +272,6 @@ RenderViewHostImpl* FrameTree::CreateRenderViewHost(SiteInstance* site_instance,
|
| int main_frame_routing_id,
|
| bool swapped_out,
|
| bool hidden) {
|
| - DCHECK(main_frame_routing_id != MSG_ROUTING_NONE);
|
| RenderViewHostMap::iterator iter =
|
| render_view_host_map_.find(site_instance->GetId());
|
| if (iter != render_view_host_map_.end()) {
|
| @@ -274,7 +280,8 @@ RenderViewHostImpl* FrameTree::CreateRenderViewHost(SiteInstance* site_instance,
|
| // Otherwise return the existing RenderViewHost for the SiteInstance.
|
| RenderFrameHostImpl* main_frame = static_cast<RenderFrameHostImpl*>(
|
| iter->second->GetMainFrame());
|
| - if (main_frame->frame_tree_node()->render_manager()->IsPendingDeletion(
|
| + if (main_frame &&
|
| + main_frame->frame_tree_node()->render_manager()->IsPendingDeletion(
|
| main_frame)) {
|
| render_view_host_pending_shutdown_map_.insert(
|
| std::pair<int, RenderViewHostImpl*>(site_instance->GetId(),
|
|
|