Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index c8f5973c138046440da9c4804c466ee3776330f9..178e4090d2bd990a97981dd3cdf4440a83970019 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -1885,6 +1885,12 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
DocumentState* document_state = |
DocumentState::FromDataSource(frame->dataSource()); |
NavigationState* navigation_state = document_state->navigation_state(); |
+ |
+ // When we perform a new navigation, we need to update the last committed |
+ // session history entry with state for the page we are leaving. Do this |
+ // before updating the HistoryController state. |
+ render_view_->UpdateSessionHistory(frame); |
+ |
render_view_->history_controller()->UpdateForCommit(this, item, commit_type, |
navigation_state->was_within_same_page()); |
@@ -1902,10 +1908,6 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
bool is_new_navigation = commit_type == blink::WebStandardCommit; |
if (is_new_navigation) { |
- // When we perform a new navigation, we need to update the last committed |
- // session history entry with state for the page we are leaving. |
- render_view_->UpdateSessionHistory(frame); |
- |
// We bump our Page ID to correspond with the new session history entry. |
render_view_->page_id_ = render_view_->next_page_id_++; |
@@ -1943,7 +1945,6 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
navigation_state->pending_page_id() != render_view_->page_id_ && |
!navigation_state->request_committed()) { |
// This is a successful session history navigation! |
- render_view_->UpdateSessionHistory(frame); |
render_view_->page_id_ = navigation_state->pending_page_id(); |
render_view_->history_list_offset_ = |