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

Side by Side Diff: content/browser/frame_host/navigator_impl.cc

Issue 1222203004: PlzNavigate: Do not send synchronous navigations from the renderer to the browser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment refactoring Created 5 years, 5 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/navigator_impl.h" 5 #include "content/browser/frame_host/navigator_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "content/browser/frame_host/frame_tree.h" 10 #include "content/browser/frame_host/frame_tree.h"
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 // PlzNavigate 666 // PlzNavigate
667 void NavigatorImpl::CommitNavigation(FrameTreeNode* frame_tree_node, 667 void NavigatorImpl::CommitNavigation(FrameTreeNode* frame_tree_node,
668 ResourceResponse* response, 668 ResourceResponse* response,
669 scoped_ptr<StreamHandle> body) { 669 scoped_ptr<StreamHandle> body) {
670 CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( 670 CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
671 switches::kEnableBrowserSideNavigation)); 671 switches::kEnableBrowserSideNavigation));
672 672
673 NavigationRequest* navigation_request = frame_tree_node->navigation_request(); 673 NavigationRequest* navigation_request = frame_tree_node->navigation_request();
674 DCHECK(navigation_request); 674 DCHECK(navigation_request);
675 DCHECK(response || 675 DCHECK(response ||
676 !NavigationRequest::ShouldMakeNetworkRequest( 676 !ShouldMakeNetworkRequestForURL(
677 navigation_request->common_params().url)); 677 navigation_request->common_params().url));
678 678
679 // HTTP 204 (No Content) and HTTP 205 (Reset Content) responses should not 679 // HTTP 204 (No Content) and HTTP 205 (Reset Content) responses should not
680 // commit; they leave the frame showing the previous page. 680 // commit; they leave the frame showing the previous page.
681 if (response && response->head.headers.get() && 681 if (response && response->head.headers.get() &&
682 (response->head.headers->response_code() == 204 || 682 (response->head.headers->response_code() == 204 ||
683 response->head.headers->response_code() == 205)) { 683 response->head.headers->response_code() == 205)) {
684 CancelNavigation(frame_tree_node); 684 CancelNavigation(frame_tree_node);
685 return; 685 return;
686 } 686 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 NavigationRequest::CreateBrowserInitiated( 807 NavigationRequest::CreateBrowserInitiated(
808 frame_tree_node, frame_entry, entry, navigation_type, 808 frame_tree_node, frame_entry, entry, navigation_type,
809 is_same_document_history_load, navigation_start, controller_)); 809 is_same_document_history_load, navigation_start, controller_));
810 NavigationRequest* navigation_request = frame_tree_node->navigation_request(); 810 NavigationRequest* navigation_request = frame_tree_node->navigation_request();
811 811
812 // Have the current renderer execute its beforeunload event if needed. If it 812 // Have the current renderer execute its beforeunload event if needed. If it
813 // is not needed (when beforeunload dispatch is not needed or this navigation 813 // is not needed (when beforeunload dispatch is not needed or this navigation
814 // is synchronous and same-site) then NavigationRequest::BeginNavigation 814 // is synchronous and same-site) then NavigationRequest::BeginNavigation
815 // should be directly called instead. 815 // should be directly called instead.
816 if (should_dispatch_beforeunload && 816 if (should_dispatch_beforeunload &&
817 NavigationRequest::ShouldMakeNetworkRequest( 817 ShouldMakeNetworkRequestForURL(
818 navigation_request->common_params().url)) { 818 navigation_request->common_params().url)) {
819 navigation_request->SetWaitingForRendererResponse(); 819 navigation_request->SetWaitingForRendererResponse();
820 frame_tree_node->current_frame_host()->DispatchBeforeUnload(true); 820 frame_tree_node->current_frame_host()->DispatchBeforeUnload(true);
821 } else { 821 } else {
822 navigation_request->BeginNavigation(); 822 navigation_request->BeginNavigation();
823 } 823 }
824 } 824 }
825 825
826 void NavigatorImpl::RecordNavigationMetrics( 826 void NavigatorImpl::RecordNavigationMetrics(
827 const LoadCommittedDetails& details, 827 const LoadCommittedDetails& details,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 entry->set_should_replace_entry(pending_entry->should_replace_entry()); 904 entry->set_should_replace_entry(pending_entry->should_replace_entry());
905 entry->SetRedirectChain(pending_entry->GetRedirectChain()); 905 entry->SetRedirectChain(pending_entry->GetRedirectChain());
906 } 906 }
907 controller_->SetPendingEntry(entry.Pass()); 907 controller_->SetPendingEntry(entry.Pass());
908 if (delegate_) 908 if (delegate_)
909 delegate_->NotifyChangedNavigationState(content::INVALIDATE_TYPE_URL); 909 delegate_->NotifyChangedNavigationState(content::INVALIDATE_TYPE_URL);
910 } 910 }
911 } 911 }
912 912
913 } // namespace content 913 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_request.cc ('k') | content/browser/frame_host/render_frame_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698