 Chromium Code Reviews
 Chromium Code Reviews Issue 1262563003:
  Subframes in inner WebContents should not create proxies in process of outer WebContents.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1262563003:
  Subframes in inner WebContents should not create proxies in process of outer WebContents.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| OLD | NEW | 
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "content/browser/frame_host/render_frame_host_manager.h" | 5 #include "content/browser/frame_host/render_frame_host_manager.h" | 
| 6 | 6 | 
| 7 #include <algorithm> | 7 #include <algorithm> | 
| 8 #include <utility> | 8 #include <utility> | 
| 9 | 9 | 
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" | 
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 256 | 256 | 
| 257 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { | 257 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { | 
| 258 if (interstitial_page_) | 258 if (interstitial_page_) | 
| 259 return interstitial_page_->GetView(); | 259 return interstitial_page_->GetView(); | 
| 260 if (render_frame_host_) | 260 if (render_frame_host_) | 
| 261 return render_frame_host_->GetView(); | 261 return render_frame_host_->GetView(); | 
| 262 return nullptr; | 262 return nullptr; | 
| 263 } | 263 } | 
| 264 | 264 | 
| 265 bool RenderFrameHostManager::ForInnerDelegate() { | 265 bool RenderFrameHostManager::ForInnerDelegate() { | 
| 266 // TODO(lazyboy): Subframes inside inner WebContents needs to be tested and | |
| 267 // we have to make sure that IsMainFrame() check below is appropriate. See | |
| 268 // http://crbug.com/500957. | |
| 269 return frame_tree_node_->IsMainFrame() && | 266 return frame_tree_node_->IsMainFrame() && | 
| 
Charlie Reis
2015/07/28 22:36:02
I still question whether this should return false
 
lazyboy
2015/07/30 19:46:31
I've made the function only care about its inner-n
 | |
| 270 delegate_->GetOuterDelegateFrameTreeNodeID() != | 267 delegate_->GetOuterDelegateFrameTreeNodeID() != | 
| 271 FrameTreeNode::kFrameTreeNodeInvalidID; | 268 FrameTreeNode::kFrameTreeNodeInvalidID; | 
| 272 } | 269 } | 
| 273 | 270 | 
| 274 RenderWidgetHostImpl* | 271 RenderWidgetHostImpl* | 
| 275 RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() { | 272 RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() { | 
| 276 if (!ForInnerDelegate()) | 273 if (!ForInnerDelegate()) | 
| 277 return nullptr; | 274 return nullptr; | 
| 278 | 275 | 
| 279 FrameTreeNode* outer_contents_frame_tree_node = | 276 FrameTreeNode* outer_contents_frame_tree_node = | 
| (...skipping 1500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1780 proxy->set_render_frame_proxy_created(true); | 1777 proxy->set_render_frame_proxy_created(true); | 
| 1781 } else { | 1778 } else { | 
| 1782 proxy->InitRenderFrameProxy(); | 1779 proxy->InitRenderFrameProxy(); | 
| 1783 } | 1780 } | 
| 1784 | 1781 | 
| 1785 return proxy->GetRoutingID(); | 1782 return proxy->GetRoutingID(); | 
| 1786 } | 1783 } | 
| 1787 | 1784 | 
| 1788 void RenderFrameHostManager::CreateProxiesForChildFrame(FrameTreeNode* child) { | 1785 void RenderFrameHostManager::CreateProxiesForChildFrame(FrameTreeNode* child) { | 
| 1789 for (const auto& pair : *proxy_hosts_) { | 1786 for (const auto& pair : *proxy_hosts_) { | 
| 1787 // If this proxy lives in our outer delegate process, then subframe | |
| 
Charlie Reis
2015/07/28 22:36:02
Rephrase:
Do not create proxies for subframes in t
 
lazyboy
2015/07/30 19:46:31
Done.
 | |
| 1788 // FrameTreeNodes should not have proxy to that outer delegate. | |
| 1789 if (ForInnerDelegate() && GetProxyToOuterDelegate() == pair.second) | |
| 1790 continue; | |
| 1791 | |
| 1790 child->render_manager()->CreateRenderFrameProxy( | 1792 child->render_manager()->CreateRenderFrameProxy( | 
| 1791 pair.second->GetSiteInstance()); | 1793 pair.second->GetSiteInstance()); | 
| 1792 } | 1794 } | 
| 1793 } | 1795 } | 
| 1794 | 1796 | 
| 1795 void RenderFrameHostManager::EnsureRenderViewInitialized( | 1797 void RenderFrameHostManager::EnsureRenderViewInitialized( | 
| 1796 RenderViewHostImpl* render_view_host, | 1798 RenderViewHostImpl* render_view_host, | 
| 1797 SiteInstance* instance) { | 1799 SiteInstance* instance) { | 
| 1798 DCHECK(frame_tree_node_->IsMainFrame()); | 1800 DCHECK(frame_tree_node_->IsMainFrame()); | 
| 1799 | 1801 | 
| (...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2436 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2438 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 
| 2437 if (!frame_tree_node_->opener()) | 2439 if (!frame_tree_node_->opener()) | 
| 2438 return MSG_ROUTING_NONE; | 2440 return MSG_ROUTING_NONE; | 
| 2439 | 2441 | 
| 2440 return frame_tree_node_->opener() | 2442 return frame_tree_node_->opener() | 
| 2441 ->render_manager() | 2443 ->render_manager() | 
| 2442 ->GetRoutingIdForSiteInstance(instance); | 2444 ->GetRoutingIdForSiteInstance(instance); | 
| 2443 } | 2445 } | 
| 2444 | 2446 | 
| 2445 } // namespace content | 2447 } // namespace content | 
| OLD | NEW |