Commit 2d298bab authored by clamy's avatar clamy Committed by Commit bot

PlzNavigate: Initialize the renderer on commit

This CL makes sure that the renderer is initialized before being used to handle
a navigation that has just committed.

BUG=376082

Review URL: https://codereview.chromium.org/536473002

Cr-Commit-Position: refs/heads/master@{#293191}
parent 9b2a84de
...@@ -618,6 +618,20 @@ void RenderFrameHostManager::CommitNavigation( ...@@ -618,6 +618,20 @@ void RenderFrameHostManager::CommitNavigation(
render_frame_host_->render_view_host()->AttachToFrameTree(); render_frame_host_->render_view_host()->AttachToFrameTree();
} }
// If the renderer that needs to navigate is not live (it was just created or
// it crashed), initialize it.
if (!render_frame_host_->render_view_host()->IsRenderViewLive()) {
// Recreate the opener chain.
int opener_route_id = delegate_->CreateOpenerRenderViewsForRenderManager(
render_frame_host_->GetSiteInstance());
if (!InitRenderView(render_frame_host_->render_view_host(),
opener_route_id,
MSG_ROUTING_NONE,
frame_tree_node_->IsMainFrame())) {
return;
}
}
frame_tree_node_->navigator()->CommitNavigation( frame_tree_node_->navigator()->CommitNavigation(
render_frame_host_.get(), info); render_frame_host_.get(), info);
} }
......
...@@ -1758,8 +1758,10 @@ TEST_F(RenderFrameHostManagerTest, ...@@ -1758,8 +1758,10 @@ TEST_F(RenderFrameHostManagerTest,
render_manager->CommitNavigation(commit_info); render_manager->CommitNavigation(commit_info);
main_request = GetNavigationRequestForRenderFrameManager(render_manager); main_request = GetNavigationRequestForRenderFrameManager(render_manager);
// The main RFH should not have been changed. // The main RFH should not have been changed, and the renderer should have
// been initialized.
EXPECT_EQ(rfh, main_test_rfh()); EXPECT_EQ(rfh, main_test_rfh());
EXPECT_TRUE(main_test_rfh()->render_view_host()->IsRenderViewLive());
} }
// PlzNavigate: Test that a new RenderFrameHost is created when doing a cross // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross
...@@ -1791,6 +1793,7 @@ TEST_F(RenderFrameHostManagerTest, ...@@ -1791,6 +1793,7 @@ TEST_F(RenderFrameHostManagerTest,
render_manager->CommitNavigation(commit_info); render_manager->CommitNavigation(commit_info);
main_request = GetNavigationRequestForRenderFrameManager(render_manager); main_request = GetNavigationRequestForRenderFrameManager(render_manager);
EXPECT_NE(main_test_rfh(), rfh); EXPECT_NE(main_test_rfh(), rfh);
EXPECT_TRUE(main_test_rfh()->render_view_host()->IsRenderViewLive());
} }
} // namespace content } // namespace content
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment