| 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
|
|
|