Index: content/browser/frame_host/navigator_impl.cc |
diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc |
index 20f9a5159b51136f4a24deba1d2401ebe0028f75..aadd1f6e10439ef0f1809569d261425deb1759c2 100644 |
--- a/content/browser/frame_host/navigator_impl.cc |
+++ b/content/browser/frame_host/navigator_impl.cc |
@@ -764,10 +764,12 @@ void NavigatorImpl::OnBeginNavigation( |
info->parent_is_main_frame = !frame_tree_node->parent() ? |
false : frame_tree_node->parent()->IsMainFrame(); |
- // TODO(clamy): Inform the RenderFrameHostManager that a navigation is about |
- // to begin, so that it can speculatively spawn a new renderer if needed. |
- |
+ // First start the request on the IO thread. |
navigation_request->BeginNavigation(info.Pass(), params.request_body); |
+ |
+ // Then notify the RenderFrameHostManager so it can speculatively create a |
+ // renderer in parallel. |
+ frame_tree_node->render_manager()->BeginNavigation(params, common_params); |
} |
// PlzNavigate |
@@ -808,6 +810,7 @@ void NavigatorImpl::CancelNavigation(FrameTreeNode* frame_tree_node) { |
CHECK(CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)); |
navigation_request_map_.erase(frame_tree_node->frame_tree_node_id()); |
+ frame_tree_node->render_manager()->CleanUpNavigation(); |
} |
// PlzNavigate |