Chromium Code Reviews| Index: content/browser/renderer_host/render_view_host_impl.cc |
| diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc |
| index 0d8f0e08de498088b5d9d599eca3e31fa37d6755..2e9e2825bf6a76e175f916518a6225f4d9cb821e 100644 |
| --- a/content/browser/renderer_host/render_view_host_impl.cc |
| +++ b/content/browser/renderer_host/render_view_host_impl.cc |
| @@ -28,6 +28,7 @@ |
| #include "content/browser/gpu/gpu_surface_tracker.h" |
| #include "content/browser/host_zoom_map_impl.h" |
| #include "content/browser/renderer_host/dip_util.h" |
| +#include "content/browser/renderer_host/frame_tree.h" |
| #include "content/browser/renderer_host/render_process_host_impl.h" |
| #include "content/browser/renderer_host/render_view_host_delegate.h" |
| #include "content/common/accessibility_messages.h" |
| @@ -183,7 +184,8 @@ RenderViewHostImpl::RenderViewHostImpl( |
| main_frame_routing_id = GetProcess()->GetNextRoutingID(); |
| main_render_frame_host_.reset( |
| - new RenderFrameHostImpl(this, main_frame_routing_id, is_swapped_out_)); |
| + new RenderFrameHostImpl(GetProcess(), delegate_->GetFrameTree(), |
| + main_frame_routing_id, is_swapped_out_)); |
| GetProcess()->EnableSendQueue(); |
| @@ -254,7 +256,7 @@ bool RenderViewHostImpl::CreateRenderView( |
| delegate_->GetRendererPrefs(GetProcess()->GetBrowserContext()); |
| params.web_preferences = delegate_->GetWebkitPrefs(); |
| params.view_id = GetRoutingID(); |
| - params.main_frame_routing_id = main_render_frame_host_->routing_id(); |
| + params.main_frame_routing_id = main_render_frame_host()->routing_id(); |
| params.surface_id = surface_id(); |
| params.session_storage_namespace_id = |
| delegate_->GetSessionStorageNamespace(instance_)->id(); |
| @@ -2034,8 +2036,12 @@ void RenderViewHostImpl::OnShowPopup( |
| #endif |
| RenderFrameHostImpl* RenderViewHostImpl::main_render_frame_host() const { |
| - DCHECK_EQ(GetProcess(), main_render_frame_host_->GetProcess()); |
| - return main_render_frame_host_.get(); |
| + // TODO(ajwong): Rename this function. |
| + RenderFrameHostImpl* render_frame_host = main_render_frame_host_.get(); |
| + if (!render_frame_host) |
| + render_frame_host = delegate_->GetFrameTree()->GetMainFrame(); |
| + DCHECK_EQ(GetProcess(), render_frame_host->GetProcess()); |
| + return render_frame_host; |
| } |
| void RenderViewHostImpl::SetSwappedOut(bool is_swapped_out) { |
| @@ -2070,4 +2076,19 @@ bool RenderViewHostImpl::CanAccessFilesOfPageState( |
| return true; |
| } |
| +void RenderViewHostImpl::SwapIntoFrameTree( |
| + RenderViewHostImpl* old_render_view_host) { |
| + FrameTree* frame_tree = delegate_->GetFrameTree(); |
| + if (old_render_view_host) { |
| + old_render_view_host->main_render_frame_host_ = |
| + frame_tree->SwapMainFrame(main_render_frame_host_.Pass()); |
| + } else { |
| + frame_tree->SwapMainFrame(main_render_frame_host_.Pass()); |
| + } |
| + |
| + if (main_frame_id() != -1) { |
|
nasko
2013/09/11 22:26:24
Why not use the kInvalidFrameId constant here?
awong
2013/09/21 01:19:56
Done.
|
| + frame_tree->OnFirstNavigation(main_frame_id()); |
| + } |
| +} |
| + |
| } // namespace content |