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

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

Issue 2867833002: NavigationThrottle: allow customization of net::Error when blocking
Patch Set: Rebase Created 3 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/navigation_request.h" 5 #include "content/browser/frame_host/navigation_request.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "content/browser/appcache/appcache_navigation_handle.h" 10 #include "content/browser/appcache/appcache_navigation_handle.h"
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 "navigation", "Navigation timeToNetworkStack", navigation_handle_.get(), 678 "navigation", "Navigation timeToNetworkStack", navigation_handle_.get(),
679 timestamp); 679 timestamp);
680 } 680 }
681 681
682 frame_tree_node_->navigator()->LogResourceRequestTime(timestamp, 682 frame_tree_node_->navigator()->LogResourceRequestTime(timestamp,
683 common_params_.url); 683 common_params_.url);
684 } 684 }
685 685
686 void NavigationRequest::OnStartChecksComplete( 686 void NavigationRequest::OnStartChecksComplete(
687 NavigationThrottle::ThrottleCheckResult result) { 687 NavigationThrottle::ThrottleCheckResult result) {
688 DCHECK(result != NavigationThrottle::DEFER); 688 DCHECK(result.action() != NavigationThrottle::DEFER);
689 DCHECK(result != NavigationThrottle::BLOCK_RESPONSE); 689 DCHECK(result.action() != NavigationThrottle::BLOCK_RESPONSE);
690 690
691 if (on_start_checks_complete_closure_) 691 if (on_start_checks_complete_closure_)
692 on_start_checks_complete_closure_.Run(); 692 on_start_checks_complete_closure_.Run();
693 693
694 // Abort the request if needed. This will destroy the NavigationRequest. 694 // Abort the request if needed. This will destroy the NavigationRequest.
695 if (result == NavigationThrottle::CANCEL_AND_IGNORE || 695 if (result.action() == NavigationThrottle::CANCEL_AND_IGNORE ||
696 result == NavigationThrottle::CANCEL) { 696 result.action() == NavigationThrottle::CANCEL) {
697 // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE. 697 // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE.
698 DCHECK_EQ(net::ERR_ABORTED, result.net_error_code());
698 OnRequestFailed(false, net::ERR_ABORTED); 699 OnRequestFailed(false, net::ERR_ABORTED);
699 700
700 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has 701 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
701 // destroyed the NavigationRequest. 702 // destroyed the NavigationRequest.
702 return; 703 return;
703 } 704 }
704 705
705 if (result == NavigationThrottle::BLOCK_REQUEST) { 706 if (result.action() == NavigationThrottle::BLOCK_REQUEST) {
706 OnRequestFailed(false, net::ERR_BLOCKED_BY_CLIENT); 707 DCHECK_NE(net::OK, result.net_error_code());
708 OnRequestFailed(false, result.net_error_code());
707 709
708 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has 710 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
709 // destroyed the NavigationRequest. 711 // destroyed the NavigationRequest.
710 return; 712 return;
711 } 713 }
712 714
713 // Use the SiteInstance of the navigating RenderFrameHost to get access to 715 // Use the SiteInstance of the navigating RenderFrameHost to get access to
714 // the StoragePartition. Using the url of the navigation will result in a 716 // the StoragePartition. Using the url of the navigation will result in a
715 // wrong StoragePartition being picked when a WebView is navigating. 717 // wrong StoragePartition being picked when a WebView is navigating.
716 DCHECK_NE(AssociatedSiteInstanceType::NONE, associated_site_instance_type_); 718 DCHECK_NE(AssociatedSiteInstanceType::NONE, associated_site_instance_type_);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 IsSecureFrame(frame_tree_node_->parent()), 784 IsSecureFrame(frame_tree_node_->parent()),
783 frame_tree_node_->frame_tree_node_id(), is_for_guests_only, 785 frame_tree_node_->frame_tree_node_id(), is_for_guests_only,
784 report_raw_headers, navigating_frame_host->GetVisibilityState()), 786 report_raw_headers, navigating_frame_host->GetVisibilityState()),
785 std::move(navigation_ui_data), 787 std::move(navigation_ui_data),
786 navigation_handle_->service_worker_handle(), 788 navigation_handle_->service_worker_handle(),
787 navigation_handle_->appcache_handle(), this); 789 navigation_handle_->appcache_handle(), this);
788 } 790 }
789 791
790 void NavigationRequest::OnRedirectChecksComplete( 792 void NavigationRequest::OnRedirectChecksComplete(
791 NavigationThrottle::ThrottleCheckResult result) { 793 NavigationThrottle::ThrottleCheckResult result) {
792 DCHECK(result != NavigationThrottle::DEFER); 794 DCHECK(result.action() != NavigationThrottle::DEFER);
793 DCHECK(result != NavigationThrottle::BLOCK_RESPONSE); 795 DCHECK(result.action() != NavigationThrottle::BLOCK_RESPONSE);
794 796
795 // Abort the request if needed. This will destroy the NavigationRequest. 797 // Abort the request if needed. This will destroy the NavigationRequest.
796 if (result == NavigationThrottle::CANCEL_AND_IGNORE || 798 if (result.action() == NavigationThrottle::CANCEL_AND_IGNORE ||
797 result == NavigationThrottle::CANCEL) { 799 result.action() == NavigationThrottle::CANCEL) {
800 DCHECK_EQ(net::ERR_ABORTED, result.net_error_code());
798 // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE. 801 // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE.
799 OnRequestFailed(false, net::ERR_ABORTED); 802 OnRequestFailed(false, net::ERR_ABORTED);
800 803
801 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has 804 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
802 // destroyed the NavigationRequest. 805 // destroyed the NavigationRequest.
803 return; 806 return;
804 } 807 }
805 808
806 if (result == NavigationThrottle::BLOCK_REQUEST) { 809 if (result.action() == NavigationThrottle::BLOCK_REQUEST) {
807 OnRequestFailed(false, net::ERR_BLOCKED_BY_CLIENT); 810 DCHECK_NE(net::OK, result.net_error_code());
811 OnRequestFailed(false, result.net_error_code());
808 812
809 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has 813 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
810 // destroyed the NavigationRequest. 814 // destroyed the NavigationRequest.
811 return; 815 return;
812 } 816 }
813 817
814 loader_->FollowRedirect(); 818 loader_->FollowRedirect();
815 } 819 }
816 820
817 void NavigationRequest::OnWillProcessResponseChecksComplete( 821 void NavigationRequest::OnWillProcessResponseChecksComplete(
818 NavigationThrottle::ThrottleCheckResult result) { 822 NavigationThrottle::ThrottleCheckResult result) {
819 DCHECK(result != NavigationThrottle::DEFER); 823 DCHECK(result.action() != NavigationThrottle::DEFER);
820 824
821 // If the NavigationThrottles allowed the navigation to continue, have the 825 // If the NavigationThrottles allowed the navigation to continue, have the
822 // processing of the response resume in the network stack. 826 // processing of the response resume in the network stack.
823 if (result == NavigationThrottle::PROCEED) 827
828 if (result.action() == NavigationThrottle::PROCEED)
824 loader_->ProceedWithResponse(); 829 loader_->ProceedWithResponse();
825 830
826 // Abort the request if needed. This includes requests that were blocked by 831 // Abort the request if needed. This includes requests that were blocked by
827 // NavigationThrottles and requests that should not commit (e.g. downloads, 832 // NavigationThrottles and requests that should not commit (e.g. downloads,
828 // 204/205s). This will destroy the NavigationRequest. 833 // 204/205s). This will destroy the NavigationRequest.
829 if (result == NavigationThrottle::CANCEL_AND_IGNORE || 834 if (result == NavigationThrottle::CANCEL_AND_IGNORE ||
830 result == NavigationThrottle::CANCEL || !response_should_be_rendered_) { 835 result == NavigationThrottle::CANCEL || !response_should_be_rendered_) {
831 // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE. 836 // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE.
837 if (response_should_be_rendered_)
838 DCHECK_EQ(net::ERR_ABORTED, result.net_error_code());
832 OnRequestFailed(false, net::ERR_ABORTED); 839 OnRequestFailed(false, net::ERR_ABORTED);
833 840
834 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has 841 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
835 // destroyed the NavigationRequest. 842 // destroyed the NavigationRequest.
836 return; 843 return;
837 } 844 }
838 845
839 if (result == NavigationThrottle::BLOCK_RESPONSE) { 846 if (result.action() == NavigationThrottle::BLOCK_RESPONSE) {
840 OnRequestFailed(false, net::ERR_BLOCKED_BY_RESPONSE); 847 DCHECK_NE(net::OK, result.net_error_code());
848 OnRequestFailed(false, result.net_error_code());
841 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has 849 // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
842 // destroyed the NavigationRequest. 850 // destroyed the NavigationRequest.
843 return; 851 return;
844 } 852 }
845 853
846 CommitNavigation(); 854 CommitNavigation();
847 855
848 // DO NOT ADD CODE after this. The previous call to CommitNavigation caused 856 // DO NOT ADD CODE after this. The previous call to CommitNavigation caused
849 // the destruction of the NavigationRequest. 857 // the destruction of the NavigationRequest.
850 } 858 }
(...skipping 16 matching lines...) Expand all
867 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture); 875 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture);
868 876
869 render_frame_host->CommitNavigation(response_.get(), std::move(body_), 877 render_frame_host->CommitNavigation(response_.get(), std::move(body_),
870 std::move(handle_), common_params_, 878 std::move(handle_), common_params_,
871 request_params_, is_view_source_); 879 request_params_, is_view_source_);
872 880
873 frame_tree_node_->ResetNavigationRequest(true, true); 881 frame_tree_node_->ResetNavigationRequest(true, true);
874 } 882 }
875 883
876 } // namespace content 884 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_handle_impl_unittest.cc ('k') | content/browser/loader/navigation_resource_throttle.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698