| Index: content/browser/frame_host/render_frame_host_manager.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
|
| index 18890339a74b76ed4f2293c1bc742e6372f42fb6..a9e3021b2696e02b0cb0cf5db5758da1b84b855c 100644
|
| --- a/content/browser/frame_host/render_frame_host_manager.cc
|
| +++ b/content/browser/frame_host/render_frame_host_manager.cc
|
| @@ -263,17 +263,13 @@ RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const {
|
| }
|
|
|
| bool RenderFrameHostManager::ForInnerDelegate() {
|
| - // TODO(lazyboy): Subframes inside inner WebContents needs to be tested and
|
| - // we have to make sure that IsMainFrame() check below is appropriate. See
|
| - // http://crbug.com/500957.
|
| - return frame_tree_node_->IsMainFrame() &&
|
| - delegate_->GetOuterDelegateFrameTreeNodeID() !=
|
| - FrameTreeNode::kFrameTreeNodeInvalidID;
|
| + return delegate_->GetOuterDelegateFrameTreeNodeID() !=
|
| + FrameTreeNode::kFrameTreeNodeInvalidID;
|
| }
|
|
|
| RenderWidgetHostImpl*
|
| RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() {
|
| - if (!ForInnerDelegate())
|
| + if (!ForInnerDelegate() || !frame_tree_node_->IsMainFrame())
|
| return nullptr;
|
|
|
| FrameTreeNode* outer_contents_frame_tree_node =
|
| @@ -1787,6 +1783,11 @@ int RenderFrameHostManager::CreateRenderFrameProxy(SiteInstance* instance) {
|
|
|
| void RenderFrameHostManager::CreateProxiesForChildFrame(FrameTreeNode* child) {
|
| for (const auto& pair : *proxy_hosts_) {
|
| + // Do not create proxies for subframes in the outer delegate's process,
|
| + // since the outer delegate does not need to interact with them.
|
| + if (ForInnerDelegate() && pair.second == GetProxyToOuterDelegate())
|
| + continue;
|
| +
|
| child->render_manager()->CreateRenderFrameProxy(
|
| pair.second->GetSiteInstance());
|
| }
|
| @@ -1838,7 +1839,7 @@ void RenderFrameHostManager::CreateOuterDelegateProxy(
|
|
|
| void RenderFrameHostManager::SetRWHViewForInnerContents(
|
| RenderWidgetHostView* child_rwhv) {
|
| - DCHECK(ForInnerDelegate());
|
| + DCHECK(ForInnerDelegate() && frame_tree_node_->IsMainFrame());
|
| GetProxyToOuterDelegate()->SetChildRWHView(child_rwhv);
|
| }
|
|
|
|
|