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 |