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 6a7b78d5ad8a1d57318d0a219e390e5554370582..128ff2498302c555c3ec257fe0a3d5168b51b16f 100644 |
--- a/content/browser/frame_host/navigator_impl.cc |
+++ b/content/browser/frame_host/navigator_impl.cc |
@@ -776,10 +776,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(common_params); |
} |
// PlzNavigate |
@@ -820,6 +822,9 @@ void NavigatorImpl::CancelNavigation(FrameTreeNode* frame_tree_node) { |
CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)); |
navigation_request_map_.erase(frame_tree_node->frame_tree_node_id()); |
+ // TODO(carlosk): move this cleanup into the NavigationRequest destructor once |
+ // we properly cancel ongoing navigations. |
+ frame_tree_node->render_manager()->CleanUpNavigation(); |
} |
// PlzNavigate |