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

Unified Diff: content/browser/renderer_host/render_view_host_impl.cc

Issue 23841002: Create a new RenderFrameHost per child frame when --site-per-process is enabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase and add some comments. Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698