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

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

Issue 2889703002: Ensure that all code paths which call FrameTreeNode::ResetNavigationRequest set NavigationHandle::G… (Closed)
Patch Set: review comments 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 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/render_frame_host_impl.h" 5 #include "content/browser/frame_host/render_frame_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 render_view_host_->GetWidget()->GetView()); 954 render_view_host_->GetWidget()->GetView());
955 if (view) 955 if (view)
956 return view->AccessibilityGetNativeViewAccessible(); 956 return view->AccessibilityGetNativeViewAccessible();
957 return NULL; 957 return NULL;
958 } 958 }
959 959
960 void RenderFrameHostImpl::RenderProcessGone(SiteInstanceImpl* site_instance) { 960 void RenderFrameHostImpl::RenderProcessGone(SiteInstanceImpl* site_instance) {
961 DCHECK_EQ(site_instance_.get(), site_instance); 961 DCHECK_EQ(site_instance_.get(), site_instance);
962 962
963 // The renderer process is gone, so this frame can no longer be loading. 963 // The renderer process is gone, so this frame can no longer be loading.
964 if (navigation_handle_)
965 navigation_handle_->set_net_error_code(net::ERR_ABORTED);
964 ResetLoadingState(); 966 ResetLoadingState();
965 967
966 // Any future UpdateState or UpdateTitle messages from this or a recreated 968 // Any future UpdateState or UpdateTitle messages from this or a recreated
967 // process should be ignored until the next commit. 969 // process should be ignored until the next commit.
968 set_nav_entry_id(0); 970 set_nav_entry_id(0);
969 } 971 }
970 972
971 void RenderFrameHostImpl::ReportContentSecurityPolicyViolation( 973 void RenderFrameHostImpl::ReportContentSecurityPolicyViolation(
972 const CSPViolationParams& violation_params) { 974 const CSPViolationParams& violation_params) {
973 Send(new FrameMsg_ReportContentSecurityPolicyViolation(routing_id_, 975 Send(new FrameMsg_ReportContentSecurityPolicyViolation(routing_id_,
(...skipping 1913 matching lines...) Expand 10 before | Expand all | Expand 10 after
2887 Send(new FrameMsg_Stop(routing_id_)); 2889 Send(new FrameMsg_Stop(routing_id_));
2888 } 2890 }
2889 2891
2890 void RenderFrameHostImpl::DispatchBeforeUnload(bool for_navigation, 2892 void RenderFrameHostImpl::DispatchBeforeUnload(bool for_navigation,
2891 bool is_reload) { 2893 bool is_reload) {
2892 DCHECK(for_navigation || !is_reload); 2894 DCHECK(for_navigation || !is_reload);
2893 2895
2894 if (IsBrowserSideNavigationEnabled() && !for_navigation) { 2896 if (IsBrowserSideNavigationEnabled() && !for_navigation) {
2895 // Cancel any pending navigations, to avoid their navigation commit/fail 2897 // Cancel any pending navigations, to avoid their navigation commit/fail
2896 // event from wiping out the is_waiting_for_beforeunload_ack_ state. 2898 // event from wiping out the is_waiting_for_beforeunload_ack_ state.
2899 if (frame_tree_node_->navigation_request() &&
2900 frame_tree_node_->navigation_request()->navigation_handle()) {
2901 frame_tree_node_->navigation_request()
2902 ->navigation_handle()
2903 ->set_net_error_code(net::ERR_ABORTED);
2904 }
2897 frame_tree_node_->ResetNavigationRequest(false, true); 2905 frame_tree_node_->ResetNavigationRequest(false, true);
2898 } 2906 }
2899 2907
2900 // TODO(creis): Support beforeunload on subframes. For now just pretend that 2908 // TODO(creis): Support beforeunload on subframes. For now just pretend that
2901 // the handler ran and allowed the navigation to proceed. 2909 // the handler ran and allowed the navigation to proceed.
2902 if (!ShouldDispatchBeforeUnload()) { 2910 if (!ShouldDispatchBeforeUnload()) {
2903 DCHECK(!(IsBrowserSideNavigationEnabled() && for_navigation)); 2911 DCHECK(!(IsBrowserSideNavigationEnabled() && for_navigation));
2904 frame_tree_node_->render_manager()->OnBeforeUnloadACK( 2912 frame_tree_node_->render_manager()->OnBeforeUnloadACK(
2905 for_navigation, true, base::TimeTicks::Now()); 2913 for_navigation, true, base::TimeTicks::Now());
2906 return; 2914 return;
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
3117 ResetWaitingState(); 3125 ResetWaitingState();
3118 3126
3119 Send(new FrameMsg_FailedNavigation(routing_id_, common_params, request_params, 3127 Send(new FrameMsg_FailedNavigation(routing_id_, common_params, request_params,
3120 has_stale_copy_in_cache, error_code)); 3128 has_stale_copy_in_cache, error_code));
3121 3129
3122 RenderFrameDevToolsAgentHost::OnFailedNavigation( 3130 RenderFrameDevToolsAgentHost::OnFailedNavigation(
3123 this, common_params, begin_params, static_cast<net::Error>(error_code)); 3131 this, common_params, begin_params, static_cast<net::Error>(error_code));
3124 3132
3125 // An error page is expected to commit, hence why is_loading_ is set to true. 3133 // An error page is expected to commit, hence why is_loading_ is set to true.
3126 is_loading_ = true; 3134 is_loading_ = true;
3135 if (navigation_handle_)
3136 DCHECK_NE(net::OK, navigation_handle_->GetNetErrorCode());
3127 frame_tree_node_->ResetNavigationRequest(true, true); 3137 frame_tree_node_->ResetNavigationRequest(true, true);
3128 } 3138 }
3129 3139
3130 void RenderFrameHostImpl::SetUpMojoIfNeeded() { 3140 void RenderFrameHostImpl::SetUpMojoIfNeeded() {
3131 if (interface_registry_.get()) 3141 if (interface_registry_.get())
3132 return; 3142 return;
3133 3143
3134 associated_registry_ = base::MakeUnique<AssociatedInterfaceRegistryImpl>(); 3144 associated_registry_ = base::MakeUnique<AssociatedInterfaceRegistryImpl>();
3135 interface_registry_ = base::MakeUnique<service_manager::BinderRegistry>(); 3145 interface_registry_ = base::MakeUnique<service_manager::BinderRegistry>();
3136 3146
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after
3934 } 3944 }
3935 3945
3936 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( 3946 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame(
3937 const std::string& interface_name, 3947 const std::string& interface_name,
3938 mojo::ScopedMessagePipeHandle pipe) { 3948 mojo::ScopedMessagePipeHandle pipe) {
3939 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); 3949 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe));
3940 } 3950 }
3941 #endif 3951 #endif
3942 3952
3943 } // namespace content 3953 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigator_impl.cc ('k') | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698