| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 90e3b774554884375faa7e7cbdf99e268c6a2c61..ccd69208de107fe12b1aaf6232e65eb5bc9d5bbc 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -3505,13 +3505,6 @@ void RenderFrameImpl::didFailProvisionalLoad(
|
| TRACE_EVENT1("navigation,benchmark,rail",
|
| "RenderFrameImpl::didFailProvisionalLoad", "id", routing_id_);
|
| DCHECK_EQ(frame_, frame);
|
| - WebDataSource* ds = frame->provisionalDataSource();
|
| - DCHECK(ds);
|
| -
|
| - const WebURLRequest& failed_request = ds->getRequest();
|
| -
|
| - // Notify the browser that we failed a provisional load with an error.
|
| - //
|
| // Note: It is important this notification occur before DidStopLoading so the
|
| // SSL manager can react to the provisional load failure before being
|
| // notified the load stopped.
|
| @@ -3521,6 +3514,13 @@ void RenderFrameImpl::didFailProvisionalLoad(
|
| for (auto& observer : observers_)
|
| observer.DidFailProvisionalLoad(error);
|
|
|
| + WebDataSource* ds = frame->provisionalDataSource();
|
| + if (!ds)
|
| + return;
|
| +
|
| + const WebURLRequest& failed_request = ds->getRequest();
|
| +
|
| + // Notify the browser that we failed a provisional load with an error.
|
| SendFailedProvisionalLoad(failed_request, error, frame);
|
|
|
| if (!ShouldDisplayErrorPageForFailedLoad(error.reason, error.unreachableURL))
|
| @@ -5223,6 +5223,11 @@ void RenderFrameImpl::OnFailedNavigation(
|
| std::unique_ptr<HistoryEntry> history_entry;
|
| if (request_params.page_state.IsValid())
|
| history_entry = PageStateToHistoryEntry(request_params.page_state);
|
| +
|
| + // For renderer initiated navigations, we send out a didFailProvisionalLoad()
|
| + // notification.
|
| + if (request_params.nav_entry_id == 0)
|
| + didFailProvisionalLoad(frame_, error, blink::WebStandardCommit);
|
| LoadNavigationErrorPage(failed_request, error, replace, history_entry.get());
|
| browser_side_navigation_pending_ = false;
|
| }
|
|
|