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

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

Issue 1413643002: Separate RenderViewHost from RenderWidgetHost, part 2: public implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 2 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
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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/frame_host/interstitial_page_impl.cc ('k') | content/browser/frame_host/render_frame_host_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698