| Index: content/renderer/render_frame_impl.cc
 | 
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
 | 
| index 27feea5a9232767a03c03e19dab6867bbb138bef..88c8dd1e6658a8b2ebbfe8b7090b8cc3587ac699 100644
 | 
| --- a/content/renderer/render_frame_impl.cc
 | 
| +++ b/content/renderer/render_frame_impl.cc
 | 
| @@ -3314,11 +3314,6 @@ void RenderFrameImpl::willSendSubmitEvent(const blink::WebFormElement& form) {
 | 
|  }
 | 
|  
 | 
|  void RenderFrameImpl::willSubmitForm(const blink::WebFormElement& form) {
 | 
| -  // With PlzNavigate-enabled, this will be called before a DataSource has been
 | 
| -  // set-up.
 | 
| -  // TODO(clamy): make sure the internal state is properly updated at some
 | 
| -  // point in the navigation.
 | 
| -  if (!IsBrowserSideNavigationEnabled() && !!frame_->provisionalDataSource()) {
 | 
|      DocumentState* document_state =
 | 
|          DocumentState::FromDataSource(frame_->provisionalDataSource());
 | 
|      NavigationStateImpl* navigation_state =
 | 
| @@ -3336,7 +3331,6 @@ void RenderFrameImpl::willSubmitForm(const blink::WebFormElement& form) {
 | 
|      internal_data->set_searchable_form_url(web_searchable_form_data.url());
 | 
|      internal_data->set_searchable_form_encoding(
 | 
|          web_searchable_form_data.encoding().utf8());
 | 
| -  }
 | 
|  
 | 
|    for (auto& observer : observers_)
 | 
|      observer.WillSubmitForm(form);
 | 
| @@ -5234,9 +5228,21 @@ void RenderFrameImpl::OnFailedNavigation(
 | 
|  
 | 
|    // 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());
 | 
| +  bool had_provisional_data_source = frame_->provisionalDataSource();
 | 
| +  if (request_params.nav_entry_id == 0) {
 | 
| +    didFailProvisionalLoad(
 | 
| +        frame_, error,
 | 
| +        replace ? blink::WebHistoryInertCommit : blink::WebStandardCommit);
 | 
| +  }
 | 
| +
 | 
| +  // If we didn't call didFailProvisionalLoad or there wasn't a
 | 
| +  // provisionalDataSource(), LoadNavigationErrorPage wasn't called, so do it
 | 
| +  // now.
 | 
| +  if (request_params.nav_entry_id != 0 || !had_provisional_data_source) {
 | 
| +    LoadNavigationErrorPage(failed_request, error, replace,
 | 
| +                            history_entry.get());
 | 
| +  }
 | 
| +
 | 
|    browser_side_navigation_pending_ = false;
 | 
|  }
 | 
|  
 | 
| @@ -5321,7 +5327,7 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation(
 | 
|                  GetWebURLRequestHeaders(info.urlRequest), referrer,
 | 
|                  info.defaultPolicy, info.replacesCurrentHistoryItem, true);
 | 
|          // Suppress the load in Blink but mark the frame as loading.
 | 
| -        return blink::WebNavigationPolicyHandledByClient;
 | 
| +        return blink::WebNavigationPolicyHandledByClientForInitialHistory;
 | 
|        } else {
 | 
|          // Client redirects during an initial history load should attempt to
 | 
|          // cancel the history navigation.  They will create a provisional
 | 
| 
 |