Chromium Code Reviews| 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 527eda7d6c833688a45331a6b1d1c5ee40d9771b..d7c4de539ca5613d25fbc39f3ede0ff39bba4505 100644 |
| --- a/content/browser/frame_host/navigator_impl.cc |
| +++ b/content/browser/frame_host/navigator_impl.cc |
| @@ -367,8 +367,7 @@ void NavigatorImpl::DidNavigate( |
| // need to care about it anymore. |
| if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| switches::kEnableBrowserSideNavigation)) { |
| - navigation_request_map_.erase( |
| - render_frame_host->frame_tree_node()->frame_tree_node_id()); |
| + render_frame_host->frame_tree_node()->ResetNavigationRequest(true); |
| } |
| FrameHostMsg_DidCommitProvisionalLoad_Params params(input_params); |
| @@ -615,8 +614,7 @@ void NavigatorImpl::OnBeforeUnloadACK(FrameTreeNode* frame_tree_node, |
| switches::kEnableBrowserSideNavigation)); |
| DCHECK(frame_tree_node); |
| - NavigationRequest* navigation_request = |
| - navigation_request_map_.get(frame_tree_node->frame_tree_node_id()); |
| + NavigationRequest* navigation_request = frame_tree_node->navigation_request(); |
| // The NavigationRequest may have been canceled while the renderer was |
| // executing the BeforeUnload event. |
| @@ -644,7 +642,7 @@ void NavigatorImpl::OnBeginNavigation( |
| DCHECK(frame_tree_node); |
| NavigationRequest* ongoing_navigation_request = |
| - navigation_request_map_.get(frame_tree_node->frame_tree_node_id()); |
| + frame_tree_node->navigation_request(); |
| // The renderer-initiated navigation request is ignored iff a) there is an |
| // ongoing request b) which is browser or user-initiated and c) the renderer |
| @@ -657,17 +655,13 @@ void NavigatorImpl::OnBeginNavigation( |
| } |
| // In all other cases the current navigation, if any, is canceled and a new |
| - // NavigationRequest is created and stored in the map. |
| - if (ongoing_navigation_request) |
| - CancelNavigation(frame_tree_node); |
| - |
| + // NavigationRequest is created for the node. |
| scoped_ptr<NavigationRequest> navigation_request = |
| NavigationRequest::CreateRendererInitiated( |
| frame_tree_node, common_params, begin_params, body, |
| controller_->GetLastCommittedEntryIndex(), |
| controller_->GetEntryCount()); |
| - navigation_request_map_.set( |
| - frame_tree_node->frame_tree_node_id(), navigation_request.Pass()); |
| + frame_tree_node->SetNavigationRequest(navigation_request.Pass()); |
| if (frame_tree_node->IsMainFrame()) |
| navigation_data_.reset(); |
| @@ -682,8 +676,7 @@ void NavigatorImpl::CommitNavigation(FrameTreeNode* frame_tree_node, |
| CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
| switches::kEnableBrowserSideNavigation)); |
| - NavigationRequest* navigation_request = |
| - navigation_request_map_.get(frame_tree_node->frame_tree_node_id()); |
| + NavigationRequest* navigation_request = frame_tree_node->navigation_request(); |
| DCHECK(navigation_request); |
| DCHECK(response || |
| !NavigationRequest::ShouldMakeNetworkRequest( |
| @@ -726,26 +719,18 @@ void NavigatorImpl::CommitNavigation(FrameTreeNode* frame_tree_node, |
| 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()); |
| + frame_tree_node->ResetNavigationRequest(false); |
| if (frame_tree_node->IsMainFrame()) |
| navigation_data_.reset(); |
| // TODO(carlosk): move this cleanup into the NavigationRequest destructor once |
| // we properly cancel ongoing navigations. |
|
Fabrice (no longer in Chrome)
2015/04/15 12:44:50
Is this comment still relevant? If yes, I think it
clamy
2015/04/16 12:12:30
Done.
|
| - frame_tree_node->render_manager()->CleanUpNavigation(); |
| -} |
| - |
| -// PlzNavigate |
| -NavigationRequest* NavigatorImpl::GetNavigationRequestForNodeForTesting( |
| - FrameTreeNode* frame_tree_node) { |
| - return navigation_request_map_.get(frame_tree_node->frame_tree_node_id()); |
| } |
| bool NavigatorImpl::IsWaitingForBeforeUnloadACK( |
| FrameTreeNode* frame_tree_node) { |
| CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
| switches::kEnableBrowserSideNavigation)); |
| - NavigationRequest* request = |
| - navigation_request_map_.get(frame_tree_node->frame_tree_node_id()); |
| + NavigationRequest* request = frame_tree_node->navigation_request(); |
| if (!request) |
| return false; |
| return request->state() == NavigationRequest::WAITING_FOR_RENDERER_RESPONSE; |
| @@ -798,7 +783,6 @@ void NavigatorImpl::RequestNavigation( |
| CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
| switches::kEnableBrowserSideNavigation)); |
| DCHECK(frame_tree_node); |
| - int64 frame_tree_node_id = frame_tree_node->frame_tree_node_id(); |
| FrameMsg_Navigate_Type::Value navigation_type = |
| GetNavigationType(controller_->GetBrowserContext(), entry, reload_type); |
| scoped_ptr<NavigationRequest> navigation_request = |
| @@ -808,26 +792,17 @@ void NavigatorImpl::RequestNavigation( |
| // TODO(clamy): Check if navigations are blocked and if so store the |
| // parameters. |
| - // If there is an ongoing request, cancel and replace it. |
| - NavigationRequest* ongoing_request = |
| - navigation_request_map_.get(frame_tree_node->frame_tree_node_id()); |
| - if (ongoing_request) |
| - CancelNavigation(frame_tree_node); |
| - |
| - navigation_request_map_.set(frame_tree_node_id, navigation_request.Pass()); |
| + frame_tree_node->SetNavigationRequest(navigation_request.Pass()); |
|
Fabrice (no longer in Chrome)
2015/04/15 12:44:50
With the TODO line above, this is slightly confusi
clamy
2015/04/16 12:12:30
Done.
|
| // Have the current renderer execute its beforeUnload event if needed. If it |
| // is not needed (eg. the renderer is not live), BeginNavigation should get |
| // called. |
| - NavigationRequest* request_to_send = |
| - navigation_request_map_.get(frame_tree_node_id); |
| - request_to_send->SetWaitingForRendererResponse(); |
| + frame_tree_node->navigation_request()->SetWaitingForRendererResponse(); |
| frame_tree_node->current_frame_host()->DispatchBeforeUnload(true); |
| } |
| void NavigatorImpl::BeginNavigation(FrameTreeNode* frame_tree_node) { |
| - NavigationRequest* navigation_request = |
| - navigation_request_map_.get(frame_tree_node->frame_tree_node_id()); |
| + NavigationRequest* navigation_request = frame_tree_node->navigation_request(); |
| // A browser-initiated navigation could have been cancelled while it was |
| // waiting for the BeforeUnload event to execute. |