| Index: content/browser/frame_host/navigation_controller_impl.cc
|
| diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
|
| index 1f6bee16a09cc040479e81e7ccd598c0c53c5628..168cff09ad88428117cb9c009063ce99aa20366b 100644
|
| --- a/content/browser/frame_host/navigation_controller_impl.cc
|
| +++ b/content/browser/frame_host/navigation_controller_impl.cc
|
| @@ -847,12 +847,19 @@ bool NavigationControllerImpl::RendererDidNavigate(
|
| // If this is an error load, we may have already removed the pending entry
|
| // when we got the notice of the load failure. If so, look at the copy of the
|
| // pending parameters that were saved.
|
| + //
|
| + // TODO(creis): This block should be unnecessary now that we pass
|
| + // params.should_replace_current_entry. Remove it once we verify with the
|
| + // check below.
|
| if (params.url_is_unreachable && failed_pending_entry_id_ != 0) {
|
| details->did_replace_entry = failed_pending_entry_should_replace_;
|
| } else {
|
| - details->did_replace_entry = pending_entry_ &&
|
| - pending_entry_->should_replace_entry();
|
| + details->did_replace_entry = (pending_entry_ &&
|
| + pending_entry_->should_replace_entry());
|
| }
|
| + CHECK(!details->did_replace_entry || params.should_replace_current_entry);
|
| + if (params.should_replace_current_entry)
|
| + details->did_replace_entry = true;
|
|
|
| // Do navigation-type specific actions. These will make and commit an entry.
|
| details->type = ClassifyNavigation(rfh, params);
|
| @@ -873,7 +880,7 @@ bool NavigationControllerImpl::RendererDidNavigate(
|
| RendererDidNavigateToSamePage(rfh, params);
|
| break;
|
| case NAVIGATION_TYPE_NEW_SUBFRAME:
|
| - RendererDidNavigateNewSubframe(rfh, params);
|
| + RendererDidNavigateNewSubframe(rfh, params, details->did_replace_entry);
|
| break;
|
| case NAVIGATION_TYPE_AUTO_SUBFRAME:
|
| if (!RendererDidNavigateAutoSubframe(rfh, params))
|
| @@ -1256,7 +1263,8 @@ void NavigationControllerImpl::RendererDidNavigateToSamePage(
|
|
|
| void NavigationControllerImpl::RendererDidNavigateNewSubframe(
|
| RenderFrameHostImpl* rfh,
|
| - const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
|
| + const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
|
| + bool replace_entry) {
|
| DCHECK(ui::PageTransitionCoreTypeIs(params.transition,
|
| ui::PAGE_TRANSITION_MANUAL_SUBFRAME));
|
|
|
| @@ -1286,7 +1294,7 @@ void NavigationControllerImpl::RendererDidNavigateNewSubframe(
|
| }
|
|
|
| new_entry->SetPageID(params.page_id);
|
| - InsertOrReplaceEntry(std::move(new_entry), false);
|
| + InsertOrReplaceEntry(std::move(new_entry), replace_entry);
|
| }
|
|
|
| bool NavigationControllerImpl::RendererDidNavigateAutoSubframe(
|
|
|