Chromium Code Reviews| 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 | 266 return delegate_->GetOuterDelegateFrameTreeNodeID() != |
| 267 // we have to make sure that IsMainFrame() check below is appropriate. See | 267 FrameTreeNode::kFrameTreeNodeInvalidID; |
| 268 // http://crbug.com/500957. | |
| 269 return frame_tree_node_->IsMainFrame() && | |
| 270 delegate_->GetOuterDelegateFrameTreeNodeID() != | |
| 271 FrameTreeNode::kFrameTreeNodeInvalidID; | |
| 272 } | 268 } |
| 273 | 269 |
| 274 RenderWidgetHostImpl* | 270 RenderWidgetHostImpl* |
| 275 RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() { | 271 RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() { |
| 276 if (!ForInnerDelegate()) | 272 if (!ForInnerDelegate() || !frame_tree_node_->IsMainFrame()) |
| 277 return nullptr; | 273 return nullptr; |
| 278 | 274 |
| 279 FrameTreeNode* outer_contents_frame_tree_node = | 275 FrameTreeNode* outer_contents_frame_tree_node = |
| 280 FrameTreeNode::GloballyFindByID( | 276 FrameTreeNode::GloballyFindByID( |
| 281 delegate_->GetOuterDelegateFrameTreeNodeID()); | 277 delegate_->GetOuterDelegateFrameTreeNodeID()); |
| 282 return outer_contents_frame_tree_node->parent() | 278 return outer_contents_frame_tree_node->parent() |
| 283 ->current_frame_host() | 279 ->current_frame_host() |
| 284 ->render_view_host(); | 280 ->render_view_host(); |
| 285 } | 281 } |
| 286 | 282 |
| (...skipping 1493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1780 proxy->set_render_frame_proxy_created(true); | 1776 proxy->set_render_frame_proxy_created(true); |
| 1781 } else { | 1777 } else { |
| 1782 proxy->InitRenderFrameProxy(); | 1778 proxy->InitRenderFrameProxy(); |
| 1783 } | 1779 } |
| 1784 | 1780 |
| 1785 return proxy->GetRoutingID(); | 1781 return proxy->GetRoutingID(); |
| 1786 } | 1782 } |
| 1787 | 1783 |
| 1788 void RenderFrameHostManager::CreateProxiesForChildFrame(FrameTreeNode* child) { | 1784 void RenderFrameHostManager::CreateProxiesForChildFrame(FrameTreeNode* child) { |
| 1789 for (const auto& pair : *proxy_hosts_) { | 1785 for (const auto& pair : *proxy_hosts_) { |
| 1786 // Do not create proxies for subframes in the outer delegate's process, | |
| 1787 // since the outer delegate does not need to interact with them. | |
| 1788 if (ForInnerDelegate() && GetProxyToOuterDelegate() == pair.second) | |
|
lazyboy
2015/07/30 19:46:32
FYI, for
A
/
B
/
C
When C is added we w
Charlie Reis
2015/07/31 18:44:08
Thanks.
nit: pair.second == GetProxyToOuterDelega
lazyboy
2015/07/31 19:21:41
Done.
| |
| 1789 continue; | |
| 1790 | |
| 1790 child->render_manager()->CreateRenderFrameProxy( | 1791 child->render_manager()->CreateRenderFrameProxy( |
| 1791 pair.second->GetSiteInstance()); | 1792 pair.second->GetSiteInstance()); |
| 1792 } | 1793 } |
| 1793 } | 1794 } |
| 1794 | 1795 |
| 1795 void RenderFrameHostManager::EnsureRenderViewInitialized( | 1796 void RenderFrameHostManager::EnsureRenderViewInitialized( |
| 1796 RenderViewHostImpl* render_view_host, | 1797 RenderViewHostImpl* render_view_host, |
| 1797 SiteInstance* instance) { | 1798 SiteInstance* instance) { |
| 1798 DCHECK(frame_tree_node_->IsMainFrame()); | 1799 DCHECK(frame_tree_node_->IsMainFrame()); |
| 1799 | 1800 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1831 // TODO(lazyboy): This |is_loading| behavior might not be what we want, | 1832 // TODO(lazyboy): This |is_loading| behavior might not be what we want, |
| 1832 // investigate and fix. | 1833 // investigate and fix. |
| 1833 render_frame_host->Send(new FrameMsg_SwapOut( | 1834 render_frame_host->Send(new FrameMsg_SwapOut( |
| 1834 render_frame_host->GetRoutingID(), proxy->GetRoutingID(), | 1835 render_frame_host->GetRoutingID(), proxy->GetRoutingID(), |
| 1835 false /* is_loading */, FrameReplicationState())); | 1836 false /* is_loading */, FrameReplicationState())); |
| 1836 proxy->set_render_frame_proxy_created(true); | 1837 proxy->set_render_frame_proxy_created(true); |
| 1837 } | 1838 } |
| 1838 | 1839 |
| 1839 void RenderFrameHostManager::SetRWHViewForInnerContents( | 1840 void RenderFrameHostManager::SetRWHViewForInnerContents( |
| 1840 RenderWidgetHostView* child_rwhv) { | 1841 RenderWidgetHostView* child_rwhv) { |
| 1841 DCHECK(ForInnerDelegate()); | 1842 DCHECK(ForInnerDelegate() && frame_tree_node_->IsMainFrame()); |
| 1842 GetProxyToOuterDelegate()->SetChildRWHView(child_rwhv); | 1843 GetProxyToOuterDelegate()->SetChildRWHView(child_rwhv); |
| 1843 } | 1844 } |
| 1844 | 1845 |
| 1845 bool RenderFrameHostManager::InitRenderView( | 1846 bool RenderFrameHostManager::InitRenderView( |
| 1846 RenderViewHostImpl* render_view_host, | 1847 RenderViewHostImpl* render_view_host, |
| 1847 int proxy_routing_id, | 1848 int proxy_routing_id, |
| 1848 bool for_main_frame_navigation) { | 1849 bool for_main_frame_navigation) { |
| 1849 // Ensure the renderer process is initialized before creating the | 1850 // Ensure the renderer process is initialized before creating the |
| 1850 // RenderView. | 1851 // RenderView. |
| 1851 if (!render_view_host->GetProcess()->Init()) | 1852 if (!render_view_host->GetProcess()->Init()) |
| (...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2436 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2437 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { |
| 2437 if (!frame_tree_node_->opener()) | 2438 if (!frame_tree_node_->opener()) |
| 2438 return MSG_ROUTING_NONE; | 2439 return MSG_ROUTING_NONE; |
| 2439 | 2440 |
| 2440 return frame_tree_node_->opener() | 2441 return frame_tree_node_->opener() |
| 2441 ->render_manager() | 2442 ->render_manager() |
| 2442 ->GetRoutingIdForSiteInstance(instance); | 2443 ->GetRoutingIdForSiteInstance(instance); |
| 2443 } | 2444 } |
| 2444 | 2445 |
| 2445 } // namespace content | 2446 } // namespace content |
| OLD | NEW |