Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: content/browser/frame_host/render_frame_host_manager.cc

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
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | testing/buildbot/chromium.fyi.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | testing/buildbot/chromium.fyi.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698