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

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

Issue 105523006: Revert 241151 "Make RenderFrameHostManager swap RenderFrameHosts..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years 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: trunk/src/content/browser/renderer_host/render_view_host_impl.cc
===================================================================
--- trunk/src/content/browser/renderer_host/render_view_host_impl.cc (revision 241158)
+++ trunk/src/content/browser/renderer_host/render_view_host_impl.cc (working copy)
@@ -27,6 +27,7 @@
#include "content/browser/cross_site_request_manager.h"
#include "content/browser/dom_storage/session_storage_namespace_impl.h"
#include "content/browser/frame_host/frame_tree.h"
+#include "content/browser/frame_host/render_frame_host_factory.h"
#include "content/browser/gpu/compositor_util.h"
#include "content/browser/gpu/gpu_data_manager_impl.h"
#include "content/browser/gpu/gpu_process_host.h"
@@ -158,6 +159,7 @@
RenderViewHostImpl::RenderViewHostImpl(
SiteInstance* instance,
RenderViewHostDelegate* delegate,
+ RenderFrameHostDelegate* frame_delegate,
RenderWidgetHostDelegate* widget_delegate,
int routing_id,
int main_frame_routing_id,
@@ -176,7 +178,6 @@
is_swapped_out_(swapped_out),
is_subframe_(false),
main_frame_id_(-1),
- main_frame_routing_id_(main_frame_routing_id),
run_modal_reply_msg_(NULL),
run_modal_opener_id_(MSG_ROUTING_NONE),
is_waiting_for_beforeunload_ack_(false),
@@ -189,6 +190,16 @@
DCHECK(instance_.get());
CHECK(delegate_); // http://crbug.com/82827
+ if (main_frame_routing_id == MSG_ROUTING_NONE)
+ main_frame_routing_id = GetProcess()->GetNextRoutingID();
+
+ main_render_frame_host_ = RenderFrameHostFactory::Create(
+ this, frame_delegate, delegate_->GetFrameTree(),
+ delegate_->GetFrameTree()->root(),
+ main_frame_routing_id, is_swapped_out_);
+ delegate_->GetFrameTree()->root()->set_render_frame_host(
+ main_render_frame_host_.get(), false);
+
GetProcess()->EnableSendQueue();
if (!swapped_out)
@@ -268,7 +279,7 @@
delegate_->GetRendererPrefs(GetProcess()->GetBrowserContext());
params.web_preferences = delegate_->GetWebkitPrefs();
params.view_id = GetRoutingID();
- params.main_frame_routing_id = main_frame_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();
@@ -1279,6 +1290,7 @@
void RenderViewHostImpl::Init() {
RenderWidgetHostImpl::Init();
+ main_render_frame_host()->Init();
}
void RenderViewHostImpl::Shutdown() {
@@ -1392,7 +1404,7 @@
// TODO(creis): Once subframes can be in different processes, we'll need to
// clear just the FrameTreeNodes affected by the crash (and their subtrees).
main_frame_id_ = -1;
- delegate_->GetFrameTree()->ResetForMainFrameSwap();
+ delegate_->GetFrameTree()->SwapMainFrame(main_render_frame_host_.get());
// Our base class RenderWidgetHost needs to reset some stuff.
RendererExited(render_view_termination_status_, exit_code);
@@ -2287,7 +2299,7 @@
void RenderViewHostImpl::AttachToFrameTree() {
FrameTree* frame_tree = delegate_->GetFrameTree();
- frame_tree->ResetForMainFrameSwap();
+ frame_tree->SwapMainFrame(main_render_frame_host_.get());
if (main_frame_id() != FrameTreeNode::kInvalidFrameId) {
frame_tree->OnFirstNavigationAfterSwap(main_frame_id());
}

Powered by Google App Engine
This is Rietveld 408576698