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 |