| Index: content/browser/frame_host/render_frame_proxy_host.cc | 
| diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc | 
| index 5406cc86cd4c19128835945ceaaa1cb4e71750f3..a83e96ba5dd31c9d2b575d146b32498ac1886c69 100644 | 
| --- a/content/browser/frame_host/render_frame_proxy_host.cc | 
| +++ b/content/browser/frame_host/render_frame_proxy_host.cc | 
| @@ -58,7 +58,8 @@ RenderFrameProxyHost::RenderFrameProxyHost(SiteInstance* site_instance, | 
| RenderFrameProxyHostID(GetProcess()->GetID(), routing_id_), | 
| this)).second); | 
| CHECK_IMPLIES(!render_view_host, | 
| -                frame_tree_node_->render_manager()->ForInnerDelegate()); | 
| +                frame_tree_node_->render_manager()->ForInnerDelegate() && | 
| +                    frame_tree_node_->IsMainFrame()); | 
| if (render_view_host) | 
| frame_tree_node_->frame_tree()->AddRenderViewHostRef(render_view_host_); | 
|  | 
| @@ -67,12 +68,14 @@ RenderFrameProxyHost::RenderFrameProxyHost(SiteInstance* site_instance, | 
| ->render_manager() | 
| ->current_frame_host() | 
| ->GetSiteInstance() == site_instance; | 
| +  bool is_proxy_to_outer_delegate = | 
| +      frame_tree_node_->IsMainFrame() && | 
| +      frame_tree_node_->render_manager()->ForInnerDelegate(); | 
|  | 
| // If this is a proxy to parent frame or this proxy is for the inner | 
| // WebContents's FrameTreeNode in outer WebContents's SiteInstance, then we | 
| // need a CrossProcessFrameConnector. | 
| -  if (is_proxy_to_parent || | 
| -      frame_tree_node_->render_manager()->ForInnerDelegate()) { | 
| +  if (is_proxy_to_parent || is_proxy_to_outer_delegate) { | 
| // The RenderFrameHost navigating cross-process is destroyed and a proxy for | 
| // it is created in the parent's process. CrossProcessFrameConnector | 
| // initialization only needs to happen on an initial cross-process | 
| @@ -199,6 +202,8 @@ void RenderFrameProxyHost::DisownOpener() { | 
|  | 
| void RenderFrameProxyHost::OnDetach() { | 
| if (frame_tree_node_->render_manager()->ForInnerDelegate()) { | 
| +    // Only main frame proxy can detach for inner WebContents. | 
| +    DCHECK(frame_tree_node_->IsMainFrame()); | 
| frame_tree_node_->render_manager()->RemoveOuterDelegateFrame(); | 
| return; | 
| } | 
|  |