| 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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 RenderWidgetHostImpl* | 306 RenderWidgetHostImpl* |
| 307 RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() { | 307 RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() { |
| 308 if (!ForInnerDelegate() || !frame_tree_node_->IsMainFrame()) | 308 if (!ForInnerDelegate() || !frame_tree_node_->IsMainFrame()) |
| 309 return nullptr; | 309 return nullptr; |
| 310 | 310 |
| 311 FrameTreeNode* outer_contents_frame_tree_node = | 311 FrameTreeNode* outer_contents_frame_tree_node = |
| 312 FrameTreeNode::GloballyFindByID( | 312 FrameTreeNode::GloballyFindByID( |
| 313 delegate_->GetOuterDelegateFrameTreeNodeID()); | 313 delegate_->GetOuterDelegateFrameTreeNodeID()); |
| 314 return outer_contents_frame_tree_node->parent() | 314 return outer_contents_frame_tree_node->parent() |
| 315 ->current_frame_host() | 315 ->current_frame_host() |
| 316 ->render_view_host(); | 316 ->render_view_host() |
| 317 ->GetWidget(); |
| 317 } | 318 } |
| 318 | 319 |
| 319 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() { | 320 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() { |
| 320 if (frame_tree_node_->IsMainFrame()) | 321 if (frame_tree_node_->IsMainFrame()) |
| 321 return nullptr; | 322 return nullptr; |
| 322 | 323 |
| 323 return proxy_hosts_->Get(frame_tree_node_->parent() | 324 return proxy_hosts_->Get(frame_tree_node_->parent() |
| 324 ->render_manager() | 325 ->render_manager() |
| 325 ->current_frame_host() | 326 ->current_frame_host() |
| 326 ->GetSiteInstance() | 327 ->GetSiteInstance() |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 // our primary one. Otherwise, we might crash if we try to call Show() | 426 // our primary one. Otherwise, we might crash if we try to call Show() |
| 426 // on it later. | 427 // on it later. |
| 427 if (dest_render_frame_host != render_frame_host_) { | 428 if (dest_render_frame_host != render_frame_host_) { |
| 428 if (dest_render_frame_host->GetView()) | 429 if (dest_render_frame_host->GetView()) |
| 429 dest_render_frame_host->GetView()->Hide(); | 430 dest_render_frame_host->GetView()->Hide(); |
| 430 } else { | 431 } else { |
| 431 // After a renderer crash we'd have marked the host as invisible, so we | 432 // After a renderer crash we'd have marked the host as invisible, so we |
| 432 // need to set the visibility of the new View to the correct value here | 433 // need to set the visibility of the new View to the correct value here |
| 433 // after reload. | 434 // after reload. |
| 434 if (dest_render_frame_host->GetView() && | 435 if (dest_render_frame_host->GetView() && |
| 435 dest_render_frame_host->render_view_host()->is_hidden() != | 436 dest_render_frame_host->render_view_host() |
| 436 delegate_->IsHidden()) { | 437 ->GetWidget() |
| 438 ->is_hidden() != delegate_->IsHidden()) { |
| 437 if (delegate_->IsHidden()) { | 439 if (delegate_->IsHidden()) { |
| 438 dest_render_frame_host->GetView()->Hide(); | 440 dest_render_frame_host->GetView()->Hide(); |
| 439 } else { | 441 } else { |
| 440 dest_render_frame_host->GetView()->Show(); | 442 dest_render_frame_host->GetView()->Show(); |
| 441 } | 443 } |
| 442 } | 444 } |
| 443 | 445 |
| 444 // TODO(nasko): This is a very ugly hack. The Chrome extensions process | 446 // TODO(nasko): This is a very ugly hack. The Chrome extensions process |
| 445 // manager still uses NotificationService and expects to see a | 447 // manager still uses NotificationService and expects to see a |
| 446 // RenderViewHost changed notification after WebContents and | 448 // RenderViewHost changed notification after WebContents and |
| (...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1827 proxy_hosts_->Add(instance->GetId(), make_scoped_ptr(proxy)); | 1829 proxy_hosts_->Add(instance->GetId(), make_scoped_ptr(proxy)); |
| 1828 proxy_routing_id = proxy->GetRoutingID(); | 1830 proxy_routing_id = proxy->GetRoutingID(); |
| 1829 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass()); | 1831 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass()); |
| 1830 } | 1832 } |
| 1831 | 1833 |
| 1832 if (frame_tree_node_->IsMainFrame()) { | 1834 if (frame_tree_node_->IsMainFrame()) { |
| 1833 success = InitRenderView(render_view_host, proxy_routing_id); | 1835 success = InitRenderView(render_view_host, proxy_routing_id); |
| 1834 | 1836 |
| 1835 // If we are reusing the RenderViewHost and it doesn't already have a | 1837 // If we are reusing the RenderViewHost and it doesn't already have a |
| 1836 // RenderWidgetHostView, we need to create one if this is the main frame. | 1838 // RenderWidgetHostView, we need to create one if this is the main frame. |
| 1837 if (!swapped_out && !render_view_host->GetView()) | 1839 if (!swapped_out && !render_view_host->GetWidget()->GetView()) |
| 1838 delegate_->CreateRenderWidgetHostViewForRenderManager(render_view_host); | 1840 delegate_->CreateRenderWidgetHostViewForRenderManager(render_view_host); |
| 1839 } else { | 1841 } else { |
| 1840 DCHECK(render_view_host->IsRenderViewLive()); | 1842 DCHECK(render_view_host->IsRenderViewLive()); |
| 1841 } | 1843 } |
| 1842 | 1844 |
| 1843 if (success) { | 1845 if (success) { |
| 1844 // Remember that InitRenderView also created the RenderFrameProxy. | 1846 // Remember that InitRenderView also created the RenderFrameProxy. |
| 1845 if (swapped_out) | 1847 if (swapped_out) |
| 1846 proxy->set_render_frame_proxy_created(true); | 1848 proxy->set_render_frame_proxy_created(true); |
| 1847 if (frame_tree_node_->IsMainFrame()) { | 1849 if (frame_tree_node_->IsMainFrame()) { |
| 1848 // Don't show the main frame's view until we get a DidNavigate from it. | 1850 // Don't show the main frame's view until we get a DidNavigate from it. |
| 1849 // Only the RenderViewHost for the top-level RenderFrameHost has a | 1851 // Only the RenderViewHost for the top-level RenderFrameHost has a |
| 1850 // RenderWidgetHostView; RenderWidgetHosts for out-of-process iframes | 1852 // RenderWidgetHostView; RenderWidgetHosts for out-of-process iframes |
| 1851 // will be created later and hidden. | 1853 // will be created later and hidden. |
| 1852 if (render_view_host->GetView()) | 1854 if (render_view_host->GetWidget()->GetView()) |
| 1853 render_view_host->GetView()->Hide(); | 1855 render_view_host->GetWidget()->GetView()->Hide(); |
| 1854 } | 1856 } |
| 1855 // RenderViewHost for |instance| might exist prior to calling | 1857 // RenderViewHost for |instance| might exist prior to calling |
| 1856 // CreateRenderFrame. In such a case, InitRenderView will not create the | 1858 // CreateRenderFrame. In such a case, InitRenderView will not create the |
| 1857 // RenderFrame in the renderer process and it needs to be done | 1859 // RenderFrame in the renderer process and it needs to be done |
| 1858 // explicitly. | 1860 // explicitly. |
| 1859 if (swapped_out_forbidden) { | 1861 if (swapped_out_forbidden) { |
| 1860 // Init the RFH, so a RenderFrame is created in the renderer. | 1862 // Init the RFH, so a RenderFrame is created in the renderer. |
| 1861 DCHECK(new_render_frame_host); | 1863 DCHECK(new_render_frame_host); |
| 1862 success = InitRenderFrame(new_render_frame_host.get()); | 1864 success = InitRenderFrame(new_render_frame_host.get()); |
| 1863 } | 1865 } |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2192 // now to make sure the sad tab shows up, etc. | 2194 // now to make sure the sad tab shows up, etc. |
| 2193 DCHECK(!render_frame_host_->IsRenderFrameLive()); | 2195 DCHECK(!render_frame_host_->IsRenderFrameLive()); |
| 2194 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); | 2196 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); |
| 2195 delegate_->RenderProcessGoneFromRenderManager( | 2197 delegate_->RenderProcessGoneFromRenderManager( |
| 2196 render_frame_host_->render_view_host()); | 2198 render_frame_host_->render_view_host()); |
| 2197 } | 2199 } |
| 2198 | 2200 |
| 2199 // For top-level frames, also hide the old RenderViewHost's view. | 2201 // For top-level frames, also hide the old RenderViewHost's view. |
| 2200 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on | 2202 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on |
| 2201 // subframe navigations or we will interfere with the top-level frame. | 2203 // subframe navigations or we will interfere with the top-level frame. |
| 2202 if (is_main_frame && old_render_frame_host->render_view_host()->GetView()) | 2204 if (is_main_frame && |
| 2203 old_render_frame_host->render_view_host()->GetView()->Hide(); | 2205 old_render_frame_host->render_view_host()->GetWidget()->GetView()) { |
| 2206 old_render_frame_host->render_view_host()->GetWidget()->GetView()->Hide(); |
| 2207 } |
| 2204 | 2208 |
| 2205 // Make sure the size is up to date. (Fix for bug 1079768.) | 2209 // Make sure the size is up to date. (Fix for bug 1079768.) |
| 2206 delegate_->UpdateRenderViewSizeForRenderManager(); | 2210 delegate_->UpdateRenderViewSizeForRenderManager(); |
| 2207 | 2211 |
| 2208 if (will_focus_location_bar) { | 2212 if (will_focus_location_bar) { |
| 2209 delegate_->SetFocusToLocationBar(false); | 2213 delegate_->SetFocusToLocationBar(false); |
| 2210 } else if (focus_render_view && render_frame_host_->GetView()) { | 2214 } else if (focus_render_view && render_frame_host_->GetView()) { |
| 2211 render_frame_host_->GetView()->Focus(); | 2215 render_frame_host_->GetView()->Focus(); |
| 2212 } | 2216 } |
| 2213 | 2217 |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2641 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2645 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { |
| 2642 if (!frame_tree_node_->opener()) | 2646 if (!frame_tree_node_->opener()) |
| 2643 return MSG_ROUTING_NONE; | 2647 return MSG_ROUTING_NONE; |
| 2644 | 2648 |
| 2645 return frame_tree_node_->opener() | 2649 return frame_tree_node_->opener() |
| 2646 ->render_manager() | 2650 ->render_manager() |
| 2647 ->GetRoutingIdForSiteInstance(instance); | 2651 ->GetRoutingIdForSiteInstance(instance); |
| 2648 } | 2652 } |
| 2649 | 2653 |
| 2650 } // namespace content | 2654 } // namespace content |
| OLD | NEW |