Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: content/browser/web_contents/navigation_controller_impl.cc

Issue 11428119: Merge 167856 - Ensure a transient entry is discarded on in-page navigations. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1271/src/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | content/browser/web_contents/navigation_controller_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/navigation_controller_impl.h" 5 #include "content/browser/web_contents/navigation_controller_impl.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/string_number_conversions.h" // Temporary 9 #include "base/string_number_conversions.h" // Temporary
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 976
977 // The entry we found in the list might be pending if the user hit 977 // The entry we found in the list might be pending if the user hit
978 // back/forward/reload. This load should commit it (since it's already in the 978 // back/forward/reload. This load should commit it (since it's already in the
979 // list, we can just discard the pending pointer). We should also discard the 979 // list, we can just discard the pending pointer). We should also discard the
980 // pending entry if it corresponds to a different navigation, since that one 980 // pending entry if it corresponds to a different navigation, since that one
981 // is now likely canceled. If it is not canceled, we will treat it as a new 981 // is now likely canceled. If it is not canceled, we will treat it as a new
982 // navigation when it arrives, which is also ok. 982 // navigation when it arrives, which is also ok.
983 // 983 //
984 // Note that we need to use the "internal" version since we don't want to 984 // Note that we need to use the "internal" version since we don't want to
985 // actually change any other state, just kill the pointer. 985 // actually change any other state, just kill the pointer.
986 if (pending_entry_) 986 DiscardNonCommittedEntriesInternal();
987 DiscardNonCommittedEntriesInternal();
988 987
989 // If a transient entry was removed, the indices might have changed, so we 988 // If a transient entry was removed, the indices might have changed, so we
990 // have to query the entry index again. 989 // have to query the entry index again.
991 last_committed_entry_index_ = 990 last_committed_entry_index_ =
992 GetEntryIndexWithPageID(web_contents_->GetSiteInstance(), params.page_id); 991 GetEntryIndexWithPageID(web_contents_->GetSiteInstance(), params.page_id);
993 } 992 }
994 993
995 void NavigationControllerImpl::RendererDidNavigateToSamePage( 994 void NavigationControllerImpl::RendererDidNavigateToSamePage(
996 const ViewHostMsg_FrameNavigate_Params& params) { 995 const ViewHostMsg_FrameNavigate_Params& params) {
997 // This mode implies we have a pending entry that's the same as an existing 996 // This mode implies we have a pending entry that's the same as an existing
(...skipping 27 matching lines...) Expand all
1025 // entry and it will be the same page as the new navigation (minus the 1024 // entry and it will be the same page as the new navigation (minus the
1026 // reference fragments, of course). We'll update the URL of the existing 1025 // reference fragments, of course). We'll update the URL of the existing
1027 // entry without pruning the forward history. 1026 // entry without pruning the forward history.
1028 existing_entry->SetURL(params.url); 1027 existing_entry->SetURL(params.url);
1029 if (existing_entry->update_virtual_url_with_url()) 1028 if (existing_entry->update_virtual_url_with_url())
1030 UpdateVirtualURLToURL(existing_entry, params.url); 1029 UpdateVirtualURLToURL(existing_entry, params.url);
1031 1030
1032 // This replaces the existing entry since the page ID didn't change. 1031 // This replaces the existing entry since the page ID didn't change.
1033 *did_replace_entry = true; 1032 *did_replace_entry = true;
1034 1033
1035 if (pending_entry_) 1034 DiscardNonCommittedEntriesInternal();
1036 DiscardNonCommittedEntriesInternal();
1037 1035
1038 // If a transient entry was removed, the indices might have changed, so we 1036 // If a transient entry was removed, the indices might have changed, so we
1039 // have to query the entry index again. 1037 // have to query the entry index again.
1040 last_committed_entry_index_ = 1038 last_committed_entry_index_ =
1041 GetEntryIndexWithPageID(web_contents_->GetSiteInstance(), params.page_id); 1039 GetEntryIndexWithPageID(web_contents_->GetSiteInstance(), params.page_id);
1042 } 1040 }
1043 1041
1044 void NavigationControllerImpl::RendererDidNavigateNewSubframe( 1042 void NavigationControllerImpl::RendererDidNavigateNewSubframe(
1045 const ViewHostMsg_FrameNavigate_Params& params) { 1043 const ViewHostMsg_FrameNavigate_Params& params) {
1046 if (content::PageTransitionStripQualifier(params.transition) == 1044 if (content::PageTransitionStripQualifier(params.transition) ==
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
1564 for (int i = 0; i < max_index; i++) { 1562 for (int i = 0; i < max_index; i++) {
1565 // When cloning a tab, copy all entries except interstitial pages 1563 // When cloning a tab, copy all entries except interstitial pages
1566 if (source.entries_[i].get()->GetPageType() != 1564 if (source.entries_[i].get()->GetPageType() !=
1567 content::PAGE_TYPE_INTERSTITIAL) { 1565 content::PAGE_TYPE_INTERSTITIAL) {
1568 entries_.insert(entries_.begin() + insert_index++, 1566 entries_.insert(entries_.begin() + insert_index++,
1569 linked_ptr<NavigationEntryImpl>( 1567 linked_ptr<NavigationEntryImpl>(
1570 new NavigationEntryImpl(*source.entries_[i]))); 1568 new NavigationEntryImpl(*source.entries_[i])));
1571 } 1569 }
1572 } 1570 }
1573 } 1571 }
OLDNEW
« no previous file with comments | « no previous file | content/browser/web_contents/navigation_controller_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698