| OLD | NEW |
| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 accessibility_reset_token_(0), | 258 accessibility_reset_token_(0), |
| 259 accessibility_reset_count_(0), | 259 accessibility_reset_count_(0), |
| 260 browser_plugin_embedder_ax_tree_id_(AXTreeIDRegistry::kNoAXTreeID), | 260 browser_plugin_embedder_ax_tree_id_(AXTreeIDRegistry::kNoAXTreeID), |
| 261 no_create_browser_accessibility_manager_for_testing_(false), | 261 no_create_browser_accessibility_manager_for_testing_(false), |
| 262 web_ui_type_(WebUI::kNoWebUI), | 262 web_ui_type_(WebUI::kNoWebUI), |
| 263 pending_web_ui_type_(WebUI::kNoWebUI), | 263 pending_web_ui_type_(WebUI::kNoWebUI), |
| 264 should_reuse_web_ui_(false), | 264 should_reuse_web_ui_(false), |
| 265 last_navigation_lofi_state_(LOFI_UNSPECIFIED), | 265 last_navigation_lofi_state_(LOFI_UNSPECIFIED), |
| 266 frame_host_binding_(this), | 266 frame_host_binding_(this), |
| 267 weak_ptr_factory_(this) { | 267 weak_ptr_factory_(this) { |
| 268 LOG(ERROR) << "RFH[" << this << "]::RFH: " |
| 269 << " routing_id:" << routing_id |
| 270 << " instance:" << site_instance->GetId() << ":" << site_instance->GetSiteUR
L(); |
| 268 frame_tree_->AddRenderViewHostRef(render_view_host_); | 271 frame_tree_->AddRenderViewHostRef(render_view_host_); |
| 269 GetProcess()->AddRoute(routing_id_, this); | 272 GetProcess()->AddRoute(routing_id_, this); |
| 270 g_routing_id_frame_map.Get().insert(std::make_pair( | 273 g_routing_id_frame_map.Get().insert(std::make_pair( |
| 271 RenderFrameHostID(GetProcess()->GetID(), routing_id_), | 274 RenderFrameHostID(GetProcess()->GetID(), routing_id_), |
| 272 this)); | 275 this)); |
| 273 site_instance_->AddObserver(this); | 276 site_instance_->AddObserver(this); |
| 274 GetSiteInstance()->IncrementActiveFrameCount(); | 277 GetSiteInstance()->IncrementActiveFrameCount(); |
| 275 | 278 |
| 276 if (frame_tree_node_->parent()) { | 279 if (frame_tree_node_->parent()) { |
| 277 // Keep track of the parent RenderFrameHost, which shouldn't change even if | 280 // Keep track of the parent RenderFrameHost, which shouldn't change even if |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 | 351 |
| 349 if (render_widget_host_ && | 352 if (render_widget_host_ && |
| 350 render_widget_host_->owned_by_render_frame_host()) { | 353 render_widget_host_->owned_by_render_frame_host()) { |
| 351 // Shutdown causes the RenderWidgetHost to delete itself. | 354 // Shutdown causes the RenderWidgetHost to delete itself. |
| 352 render_widget_host_->ShutdownAndDestroyWidget(true); | 355 render_widget_host_->ShutdownAndDestroyWidget(true); |
| 353 } | 356 } |
| 354 | 357 |
| 355 // Notify the FrameTree that this RFH is going away, allowing it to shut down | 358 // Notify the FrameTree that this RFH is going away, allowing it to shut down |
| 356 // the corresponding RenderViewHost if it is no longer needed. | 359 // the corresponding RenderViewHost if it is no longer needed. |
| 357 frame_tree_->ReleaseRenderViewHostRef(render_view_host_); | 360 frame_tree_->ReleaseRenderViewHostRef(render_view_host_); |
| 361 |
| 362 LOG(ERROR) << "RFH[" << this << "]::~RFH"; |
| 358 } | 363 } |
| 359 | 364 |
| 360 int RenderFrameHostImpl::GetRoutingID() { | 365 int RenderFrameHostImpl::GetRoutingID() { |
| 361 return routing_id_; | 366 return routing_id_; |
| 362 } | 367 } |
| 363 | 368 |
| 364 AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::GetAXTreeID() { | 369 AXTreeIDRegistry::AXTreeID RenderFrameHostImpl::GetAXTreeID() { |
| 365 return AXTreeIDRegistry::GetInstance()->GetOrCreateAXTreeID( | 370 return AXTreeIDRegistry::GetInstance()->GetOrCreateAXTreeID( |
| 366 GetProcess()->GetID(), routing_id_); | 371 GetProcess()->GetID(), routing_id_); |
| 367 } | 372 } |
| (...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 995 base::TimeDelta::FromMinutes(10), 100); | 1000 base::TimeDelta::FromMinutes(10), 100); |
| 996 } | 1001 } |
| 997 // This message is only sent for top-level frames. TODO(avi): when frame tree | 1002 // This message is only sent for top-level frames. TODO(avi): when frame tree |
| 998 // mirroring works correctly, add a check here to enforce it. | 1003 // mirroring works correctly, add a check here to enforce it. |
| 999 delegate_->DocumentOnLoadCompleted(this); | 1004 delegate_->DocumentOnLoadCompleted(this); |
| 1000 } | 1005 } |
| 1001 | 1006 |
| 1002 void RenderFrameHostImpl::OnDidStartProvisionalLoad( | 1007 void RenderFrameHostImpl::OnDidStartProvisionalLoad( |
| 1003 const GURL& url, | 1008 const GURL& url, |
| 1004 const base::TimeTicks& navigation_start) { | 1009 const base::TimeTicks& navigation_start) { |
| 1010 LOG(ERROR) << "RFH[" << this << "]::DidStartProvisionalLoad: " |
| 1011 << " url:" << url.spec().substr(0, 250); |
| 1005 frame_tree_node_->navigator()->DidStartProvisionalLoad(this, url, | 1012 frame_tree_node_->navigator()->DidStartProvisionalLoad(this, url, |
| 1006 navigation_start); | 1013 navigation_start); |
| 1007 } | 1014 } |
| 1008 | 1015 |
| 1009 void RenderFrameHostImpl::OnDidFailProvisionalLoadWithError( | 1016 void RenderFrameHostImpl::OnDidFailProvisionalLoadWithError( |
| 1010 const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) { | 1017 const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) { |
| 1018 LOG(ERROR) << "RFH[" << this << "]::DidFailProvisionalLoadWithError: " |
| 1019 << " error:" << params.error_code; |
| 1020 |
| 1011 // TODO(clamy): Kill the renderer with RFH_FAIL_PROVISIONAL_LOAD_NO_HANDLE and | 1021 // TODO(clamy): Kill the renderer with RFH_FAIL_PROVISIONAL_LOAD_NO_HANDLE and |
| 1012 // return early if navigation_handle_ is null, once we prevent that case from | 1022 // return early if navigation_handle_ is null, once we prevent that case from |
| 1013 // happening in practice. | 1023 // happening in practice. |
| 1014 | 1024 |
| 1015 // Update the error code in the NavigationHandle of the navigation. | 1025 // Update the error code in the NavigationHandle of the navigation. |
| 1016 if (navigation_handle_) { | 1026 if (navigation_handle_) { |
| 1017 navigation_handle_->set_net_error_code( | 1027 navigation_handle_->set_net_error_code( |
| 1018 static_cast<net::Error>(params.error_code)); | 1028 static_cast<net::Error>(params.error_code)); |
| 1019 } | 1029 } |
| 1020 | 1030 |
| 1021 frame_tree_node_->navigator()->DidFailProvisionalLoadWithError(this, params); | 1031 frame_tree_node_->navigator()->DidFailProvisionalLoadWithError(this, params); |
| 1022 } | 1032 } |
| 1023 | 1033 |
| 1024 void RenderFrameHostImpl::OnDidFailLoadWithError( | 1034 void RenderFrameHostImpl::OnDidFailLoadWithError( |
| 1025 const GURL& url, | 1035 const GURL& url, |
| 1026 int error_code, | 1036 int error_code, |
| 1027 const base::string16& error_description, | 1037 const base::string16& error_description, |
| 1028 bool was_ignored_by_handler) { | 1038 bool was_ignored_by_handler) { |
| 1029 GURL validated_url(url); | 1039 GURL validated_url(url); |
| 1040 LOG(ERROR) << "RFH[" << this << "]::DidFailLoadWithError: " |
| 1041 << " url:" << url.spec().substr(0, 250) |
| 1042 << " error:" << error_code; |
| 1043 |
| 1030 GetProcess()->FilterURL(false, &validated_url); | 1044 GetProcess()->FilterURL(false, &validated_url); |
| 1031 | 1045 |
| 1032 frame_tree_node_->navigator()->DidFailLoadWithError( | 1046 frame_tree_node_->navigator()->DidFailLoadWithError( |
| 1033 this, validated_url, error_code, error_description, | 1047 this, validated_url, error_code, error_description, |
| 1034 was_ignored_by_handler); | 1048 was_ignored_by_handler); |
| 1035 } | 1049 } |
| 1036 | 1050 |
| 1037 // Called when the renderer navigates. For every frame loaded, we'll get this | 1051 // Called when the renderer navigates. For every frame loaded, we'll get this |
| 1038 // notification containing parameters identifying the navigation. | 1052 // notification containing parameters identifying the navigation. |
| 1039 // | 1053 // |
| 1040 // Subframes are identified by the page transition type. For subframes loaded | 1054 // Subframes are identified by the page transition type. For subframes loaded |
| 1041 // as part of a wider page load, the page_id will be the same as for the top | 1055 // as part of a wider page load, the page_id will be the same as for the top |
| 1042 // level frame. If the user explicitly requests a subframe navigation, we will | 1056 // level frame. If the user explicitly requests a subframe navigation, we will |
| 1043 // get a new page_id because we need to create a new navigation entry for that | 1057 // get a new page_id because we need to create a new navigation entry for that |
| 1044 // action. | 1058 // action. |
| 1045 void RenderFrameHostImpl::OnDidCommitProvisionalLoad(const IPC::Message& msg) { | 1059 void RenderFrameHostImpl::OnDidCommitProvisionalLoad(const IPC::Message& msg) { |
| 1046 ScopedCommitStateResetter commit_state_resetter(this); | 1060 ScopedCommitStateResetter commit_state_resetter(this); |
| 1047 RenderProcessHost* process = GetProcess(); | 1061 RenderProcessHost* process = GetProcess(); |
| 1048 | 1062 |
| 1049 // Read the parameters out of the IPC message directly to avoid making another | 1063 // Read the parameters out of the IPC message directly to avoid making another |
| 1050 // copy when we filter the URLs. | 1064 // copy when we filter the URLs. |
| 1051 base::PickleIterator iter(msg); | 1065 base::PickleIterator iter(msg); |
| 1052 FrameHostMsg_DidCommitProvisionalLoad_Params validated_params; | 1066 FrameHostMsg_DidCommitProvisionalLoad_Params validated_params; |
| 1053 if (!IPC::ParamTraits<FrameHostMsg_DidCommitProvisionalLoad_Params>:: | 1067 if (!IPC::ParamTraits<FrameHostMsg_DidCommitProvisionalLoad_Params>:: |
| 1054 Read(&msg, &iter, &validated_params)) { | 1068 Read(&msg, &iter, &validated_params)) { |
| 1055 bad_message::ReceivedBadMessage( | 1069 bad_message::ReceivedBadMessage( |
| 1056 process, bad_message::RFH_COMMIT_DESERIALIZATION_FAILED); | 1070 process, bad_message::RFH_COMMIT_DESERIALIZATION_FAILED); |
| 1071 LOG(ERROR) << "RFH[" << this << "]::DidCommitProvisionalLoad: " |
| 1072 << " failed to read IPC, killed renderer"; |
| 1057 return; | 1073 return; |
| 1058 } | 1074 } |
| 1059 TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnDidCommitProvisionalLoad", | 1075 TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnDidCommitProvisionalLoad", |
| 1060 "url", validated_params.url.possibly_invalid_spec()); | 1076 "url", validated_params.url.possibly_invalid_spec()); |
| 1061 | 1077 |
| 1078 LOG(ERROR) << "RFH[" << this << "]::DidCommitProvisionalLoad: " |
| 1079 << " url:" << validated_params.url.spec().substr(0, 250); |
| 1080 |
| 1062 // Sanity-check the page transition for frame type. | 1081 // Sanity-check the page transition for frame type. |
| 1063 DCHECK_EQ(ui::PageTransitionIsMainFrame(validated_params.transition), | 1082 DCHECK_EQ(ui::PageTransitionIsMainFrame(validated_params.transition), |
| 1064 !GetParent()); | 1083 !GetParent()); |
| 1065 | 1084 |
| 1066 // If we're waiting for a cross-site beforeunload ack from this renderer and | 1085 // If we're waiting for a cross-site beforeunload ack from this renderer and |
| 1067 // we receive a Navigate message from the main frame, then the renderer was | 1086 // we receive a Navigate message from the main frame, then the renderer was |
| 1068 // navigating already and sent it before hearing the FrameMsg_Stop message. | 1087 // navigating already and sent it before hearing the FrameMsg_Stop message. |
| 1069 // Treat this as an implicit beforeunload ack to allow the pending navigation | 1088 // Treat this as an implicit beforeunload ack to allow the pending navigation |
| 1070 // to continue. | 1089 // to continue. |
| 1071 if (is_waiting_for_beforeunload_ack_ && | 1090 if (is_waiting_for_beforeunload_ack_ && |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1290 } | 1309 } |
| 1291 | 1310 |
| 1292 void RenderFrameHostImpl::SwapOut( | 1311 void RenderFrameHostImpl::SwapOut( |
| 1293 RenderFrameProxyHost* proxy, | 1312 RenderFrameProxyHost* proxy, |
| 1294 bool is_loading) { | 1313 bool is_loading) { |
| 1295 // The end of this event is in OnSwapOutACK when the RenderFrame has completed | 1314 // The end of this event is in OnSwapOutACK when the RenderFrame has completed |
| 1296 // the operation and sends back an IPC message. | 1315 // the operation and sends back an IPC message. |
| 1297 // The trace event may not end properly if the ACK times out. We expect this | 1316 // The trace event may not end properly if the ACK times out. We expect this |
| 1298 // to be fixed when RenderViewHostImpl::OnSwapOut moves to RenderFrameHost. | 1317 // to be fixed when RenderViewHostImpl::OnSwapOut moves to RenderFrameHost. |
| 1299 TRACE_EVENT_ASYNC_BEGIN0("navigation", "RenderFrameHostImpl::SwapOut", this); | 1318 TRACE_EVENT_ASYNC_BEGIN0("navigation", "RenderFrameHostImpl::SwapOut", this); |
| 1319 LOG(ERROR) << "RFH[" << this << "]::SwapOut"; |
| 1300 | 1320 |
| 1301 // If this RenderFrameHost is already pending deletion, it must have already | 1321 // If this RenderFrameHost is already pending deletion, it must have already |
| 1302 // gone through this, therefore just return. | 1322 // gone through this, therefore just return. |
| 1303 if (!is_active()) { | 1323 if (!is_active()) { |
| 1304 NOTREACHED() << "RFH should be in default state when calling SwapOut."; | 1324 NOTREACHED() << "RFH should be in default state when calling SwapOut."; |
| 1305 return; | 1325 return; |
| 1306 } | 1326 } |
| 1307 | 1327 |
| 1308 if (swapout_event_monitor_timeout_) { | 1328 if (swapout_event_monitor_timeout_) { |
| 1309 swapout_event_monitor_timeout_->Start(base::TimeDelta::FromMilliseconds( | 1329 swapout_event_monitor_timeout_->Start(base::TimeDelta::FromMilliseconds( |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1429 if (!proceed) | 1449 if (!proceed) |
| 1430 render_view_host_->GetDelegate()->DidCancelLoading(); | 1450 render_view_host_->GetDelegate()->DidCancelLoading(); |
| 1431 } | 1451 } |
| 1432 | 1452 |
| 1433 bool RenderFrameHostImpl::IsWaitingForUnloadACK() const { | 1453 bool RenderFrameHostImpl::IsWaitingForUnloadACK() const { |
| 1434 return render_view_host_->is_waiting_for_close_ack_ || | 1454 return render_view_host_->is_waiting_for_close_ack_ || |
| 1435 is_waiting_for_swapout_ack_; | 1455 is_waiting_for_swapout_ack_; |
| 1436 } | 1456 } |
| 1437 | 1457 |
| 1438 void RenderFrameHostImpl::OnSwapOutACK() { | 1458 void RenderFrameHostImpl::OnSwapOutACK() { |
| 1459 LOG(ERROR) << "RFH[" << this << "]::SwapOutACK"; |
| 1439 OnSwappedOut(); | 1460 OnSwappedOut(); |
| 1440 } | 1461 } |
| 1441 | 1462 |
| 1442 void RenderFrameHostImpl::OnRenderProcessGone(int status, int exit_code) { | 1463 void RenderFrameHostImpl::OnRenderProcessGone(int status, int exit_code) { |
| 1443 if (frame_tree_node_->IsMainFrame()) { | 1464 if (frame_tree_node_->IsMainFrame()) { |
| 1444 // Keep the termination status so we can get at it later when we | 1465 // Keep the termination status so we can get at it later when we |
| 1445 // need to know why it died. | 1466 // need to know why it died. |
| 1446 render_view_host_->render_view_termination_status_ = | 1467 render_view_host_->render_view_termination_status_ = |
| 1447 static_cast<base::TerminationStatus>(status); | 1468 static_cast<base::TerminationStatus>(status); |
| 1448 } | 1469 } |
| (...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2220 return CanCommitURL(origin_url); | 2241 return CanCommitURL(origin_url); |
| 2221 } | 2242 } |
| 2222 | 2243 |
| 2223 void RenderFrameHostImpl::Navigate( | 2244 void RenderFrameHostImpl::Navigate( |
| 2224 const CommonNavigationParams& common_params, | 2245 const CommonNavigationParams& common_params, |
| 2225 const StartNavigationParams& start_params, | 2246 const StartNavigationParams& start_params, |
| 2226 const RequestNavigationParams& request_params) { | 2247 const RequestNavigationParams& request_params) { |
| 2227 TRACE_EVENT0("navigation", "RenderFrameHostImpl::Navigate"); | 2248 TRACE_EVENT0("navigation", "RenderFrameHostImpl::Navigate"); |
| 2228 DCHECK(!IsBrowserSideNavigationEnabled()); | 2249 DCHECK(!IsBrowserSideNavigationEnabled()); |
| 2229 | 2250 |
| 2251 LOG(ERROR) << "RFH[" << this << "]::Navigate: " |
| 2252 << " url:" << common_params.url.spec().substr(0, 250); |
| 2253 |
| 2230 UpdatePermissionsForNavigation(common_params, request_params); | 2254 UpdatePermissionsForNavigation(common_params, request_params); |
| 2231 | 2255 |
| 2232 // Only send the message if we aren't suspended at the start of a cross-site | 2256 // Only send the message if we aren't suspended at the start of a cross-site |
| 2233 // request. | 2257 // request. |
| 2234 if (navigations_suspended_) { | 2258 if (navigations_suspended_) { |
| 2235 // This may replace an existing set of params, if this is a pending RFH that | 2259 // This may replace an existing set of params, if this is a pending RFH that |
| 2236 // is navigated twice consecutively. | 2260 // is navigated twice consecutively. |
| 2237 suspended_nav_params_.reset( | 2261 suspended_nav_params_.reset( |
| 2238 new NavigationParams(common_params, start_params, request_params)); | 2262 new NavigationParams(common_params, start_params, request_params)); |
| 2239 } else { | 2263 } else { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2269 CommitNavigation(nullptr, nullptr, common_params, RequestNavigationParams(), | 2293 CommitNavigation(nullptr, nullptr, common_params, RequestNavigationParams(), |
| 2270 false); | 2294 false); |
| 2271 } else { | 2295 } else { |
| 2272 Navigate(common_params, StartNavigationParams(), RequestNavigationParams()); | 2296 Navigate(common_params, StartNavigationParams(), RequestNavigationParams()); |
| 2273 } | 2297 } |
| 2274 } | 2298 } |
| 2275 | 2299 |
| 2276 void RenderFrameHostImpl::OpenURL(const FrameHostMsg_OpenURL_Params& params, | 2300 void RenderFrameHostImpl::OpenURL(const FrameHostMsg_OpenURL_Params& params, |
| 2277 SiteInstance* source_site_instance) { | 2301 SiteInstance* source_site_instance) { |
| 2278 GURL validated_url(params.url); | 2302 GURL validated_url(params.url); |
| 2303 |
| 2304 LOG(ERROR) << "RFH[" << this << "]::OpenURL: " |
| 2305 << " url:" << validated_url.spec().substr(0, 250); |
| 2279 GetProcess()->FilterURL(false, &validated_url); | 2306 GetProcess()->FilterURL(false, &validated_url); |
| 2280 | 2307 |
| 2281 TRACE_EVENT1("navigation", "RenderFrameHostImpl::OpenURL", "url", | 2308 TRACE_EVENT1("navigation", "RenderFrameHostImpl::OpenURL", "url", |
| 2282 validated_url.possibly_invalid_spec()); | 2309 validated_url.possibly_invalid_spec()); |
| 2283 frame_tree_node_->navigator()->RequestOpenURL( | 2310 frame_tree_node_->navigator()->RequestOpenURL( |
| 2284 this, validated_url, params.uses_post, params.resource_request_body, | 2311 this, validated_url, params.uses_post, params.resource_request_body, |
| 2285 source_site_instance, params.referrer, params.disposition, | 2312 source_site_instance, params.referrer, params.disposition, |
| 2286 params.should_replace_current_entry, params.user_gesture); | 2313 params.should_replace_current_entry, params.user_gesture); |
| 2287 } | 2314 } |
| 2288 | 2315 |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2415 } | 2442 } |
| 2416 } | 2443 } |
| 2417 | 2444 |
| 2418 // PlzNavigate | 2445 // PlzNavigate |
| 2419 void RenderFrameHostImpl::CommitNavigation( | 2446 void RenderFrameHostImpl::CommitNavigation( |
| 2420 ResourceResponse* response, | 2447 ResourceResponse* response, |
| 2421 std::unique_ptr<StreamHandle> body, | 2448 std::unique_ptr<StreamHandle> body, |
| 2422 const CommonNavigationParams& common_params, | 2449 const CommonNavigationParams& common_params, |
| 2423 const RequestNavigationParams& request_params, | 2450 const RequestNavigationParams& request_params, |
| 2424 bool is_view_source) { | 2451 bool is_view_source) { |
| 2452 LOG(ERROR) << "RFH[" << this << "]::CommitNavigation: " |
| 2453 << " url:" << common_params.url.spec().substr(0, 250); |
| 2454 |
| 2425 DCHECK((response && body.get()) || | 2455 DCHECK((response && body.get()) || |
| 2426 !ShouldMakeNetworkRequestForURL(common_params.url)); | 2456 !ShouldMakeNetworkRequestForURL(common_params.url)); |
| 2427 UpdatePermissionsForNavigation(common_params, request_params); | 2457 UpdatePermissionsForNavigation(common_params, request_params); |
| 2428 | 2458 |
| 2429 // Get back to a clean state, in case we start a new navigation without | 2459 // Get back to a clean state, in case we start a new navigation without |
| 2430 // completing an unload handler. | 2460 // completing an unload handler. |
| 2431 ResetWaitingState(); | 2461 ResetWaitingState(); |
| 2432 | 2462 |
| 2433 // The renderer can exit view source mode when any error or cancellation | 2463 // The renderer can exit view source mode when any error or cancellation |
| 2434 // happen. When reusing the same renderer, overwrite to recover the mode. | 2464 // happen. When reusing the same renderer, overwrite to recover the mode. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2460 pending_commit_ = true; | 2490 pending_commit_ = true; |
| 2461 is_loading_ = true; | 2491 is_loading_ = true; |
| 2462 } | 2492 } |
| 2463 } | 2493 } |
| 2464 | 2494 |
| 2465 void RenderFrameHostImpl::FailedNavigation( | 2495 void RenderFrameHostImpl::FailedNavigation( |
| 2466 const CommonNavigationParams& common_params, | 2496 const CommonNavigationParams& common_params, |
| 2467 const RequestNavigationParams& request_params, | 2497 const RequestNavigationParams& request_params, |
| 2468 bool has_stale_copy_in_cache, | 2498 bool has_stale_copy_in_cache, |
| 2469 int error_code) { | 2499 int error_code) { |
| 2500 LOG(ERROR) << "RFH[" << this << "]::FailedNavigation: " |
| 2501 << " url:" << common_params.url.spec().substr(0, 250); |
| 2470 // Get back to a clean state, in case a new navigation started without | 2502 // Get back to a clean state, in case a new navigation started without |
| 2471 // completing an unload handler. | 2503 // completing an unload handler. |
| 2472 ResetWaitingState(); | 2504 ResetWaitingState(); |
| 2473 | 2505 |
| 2474 Send(new FrameMsg_FailedNavigation(routing_id_, common_params, request_params, | 2506 Send(new FrameMsg_FailedNavigation(routing_id_, common_params, request_params, |
| 2475 has_stale_copy_in_cache, error_code)); | 2507 has_stale_copy_in_cache, error_code)); |
| 2476 | 2508 |
| 2477 // An error page is expected to commit, hence why is_loading_ is set to true. | 2509 // An error page is expected to commit, hence why is_loading_ is set to true. |
| 2478 is_loading_ = true; | 2510 is_loading_ = true; |
| 2479 frame_tree_node_->ResetNavigationRequest(true); | 2511 frame_tree_node_->ResetNavigationRequest(true); |
| (...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3055 web_bluetooth_service_->SetClientConnectionErrorHandler(base::Bind( | 3087 web_bluetooth_service_->SetClientConnectionErrorHandler(base::Bind( |
| 3056 &RenderFrameHostImpl::DeleteWebBluetoothService, base::Unretained(this))); | 3088 &RenderFrameHostImpl::DeleteWebBluetoothService, base::Unretained(this))); |
| 3057 return web_bluetooth_service_.get(); | 3089 return web_bluetooth_service_.get(); |
| 3058 } | 3090 } |
| 3059 | 3091 |
| 3060 void RenderFrameHostImpl::DeleteWebBluetoothService() { | 3092 void RenderFrameHostImpl::DeleteWebBluetoothService() { |
| 3061 web_bluetooth_service_.reset(); | 3093 web_bluetooth_service_.reset(); |
| 3062 } | 3094 } |
| 3063 | 3095 |
| 3064 } // namespace content | 3096 } // namespace content |
| OLD | NEW |