 Chromium Code Reviews
 Chromium Code Reviews Issue 1142123002:
  Remove swapped-out usage in --site-per-process.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1142123002:
  Remove swapped-out usage in --site-per-process.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| Index: content/browser/renderer_host/render_view_host_impl.cc | 
| diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc | 
| index 4e81849d222a27d2e458cb6ff239ea2f4f4749de..fc7ee9ca8fa3163f5c91d2bf16ab071daa0eff90 100644 | 
| --- a/content/browser/renderer_host/render_view_host_impl.cc | 
| +++ b/content/browser/renderer_host/render_view_host_impl.cc | 
| @@ -278,6 +278,7 @@ bool RenderViewHostImpl::CreateRenderView( | 
| int opener_route_id, | 
| int proxy_route_id, | 
| int32 max_page_id, | 
| + const FrameReplicationState& replicated_frame_state, | 
| bool window_was_created_with_opener) { | 
| TRACE_EVENT0("renderer_host,navigation", | 
| "RenderViewHostImpl::CreateRenderView"); | 
| @@ -319,6 +320,7 @@ bool RenderViewHostImpl::CreateRenderView( | 
| // Ensure the RenderView sets its opener correctly. | 
| params.opener_route_id = opener_route_id; | 
| params.swapped_out = !is_active_; | 
| + params.replicated_frame_state = replicated_frame_state; | 
| params.proxy_routing_id = proxy_route_id; | 
| params.hidden = is_hidden(); | 
| params.never_visible = delegate_->IsNeverVisible(); | 
| @@ -328,11 +330,6 @@ bool RenderViewHostImpl::CreateRenderView( | 
| params.min_size = min_size_for_auto_resize(); | 
| params.max_size = max_size_for_auto_resize(); | 
| GetResizeParams(¶ms.initial_size); | 
| - if (!is_active_) { | 
| - params.replicated_frame_state = | 
| - static_cast<RenderFrameHostImpl*>(GetMainFrame())->frame_tree_node() | 
| - ->current_replication_state(); | 
| - } | 
| if (!Send(new ViewMsg_New(params))) | 
| return false; | 
| @@ -353,10 +350,12 @@ bool RenderViewHostImpl::CreateRenderView( | 
| // Let our delegate know that we created a RenderView. | 
| delegate_->RenderViewCreated(this); | 
| - // Since this method creates the main RenderFrame in the renderer process, | 
| + // Since this method can create the main RenderFrame in the renderer process, | 
| // set the proper state on its corresponding RenderFrameHost. | 
| - RenderFrameHostImpl::FromID(GetProcess()->GetID(), main_frame_routing_id_) | 
| - ->SetRenderFrameCreated(true); | 
| + if (main_frame_routing_id_ != MSG_ROUTING_NONE) { | 
| + RenderFrameHostImpl::FromID(GetProcess()->GetID(), main_frame_routing_id_) | 
| + ->SetRenderFrameCreated(true); | 
| + } | 
| return true; | 
| } | 
| @@ -879,7 +878,7 @@ bool RenderViewHostImpl::OnMessageReceived(const IPC::Message& msg) { | 
| // Filter out most IPC messages if this renderer is swapped out. | 
| // We still want to handle certain ACKs to keep our state consistent. | 
| - if (is_swapped_out_) { | 
| + if (is_swapped_out_ || main_frame_routing_id_ == MSG_ROUTING_NONE) { | 
| 
Charlie Reis
2015/06/04 22:27:31
This means subframes can't send (most) IPCs throug
 
nasko
2015/06/04 23:38:36
Ah, good catch! I was trying to be more defensive
 
Charlie Reis
2015/06/05 18:28:45
Acknowledged.
 | 
| if (!SwappedOutMessages::CanHandleWhileSwappedOut(msg)) { | 
| // If this is a synchronous message and we decided not to handle it, | 
| // we must send an error reply, or else the renderer will be stuck |