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

Unified Diff: chrome/browser/tab_contents/navigation_controller.cc

Issue 341043: Changes session restore to use a normal load rather than preferring... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/tab_contents/navigation_controller.cc
===================================================================
--- chrome/browser/tab_contents/navigation_controller.cc (revision 30525)
+++ chrome/browser/tab_contents/navigation_controller.cc (working copy)
@@ -67,12 +67,15 @@
// Configure all the NavigationEntries in entries for restore. This resets
// the transition type to reload and makes sure the content state isn't empty.
void ConfigureEntriesForRestore(
- std::vector<linked_ptr<NavigationEntry> >* entries) {
+ std::vector<linked_ptr<NavigationEntry> >* entries,
+ bool from_last_session) {
for (size_t i = 0; i < entries->size(); ++i) {
// Use a transition type of reload so that we don't incorrectly increase
// the typed count.
(*entries)[i]->set_transition_type(PageTransition::RELOAD);
- (*entries)[i]->set_restored(true);
+ (*entries)[i]->set_restore_type(from_last_session ?
+ NavigationEntry::RESTORE_LAST_SESSION :
+ NavigationEntry::RESTORE_CURRENT_SESSION);
// NOTE(darin): This code is only needed for backwards compat.
SetContentStateIfEmpty((*entries)[i].get());
}
@@ -145,7 +148,8 @@
void NavigationController::RestoreFromState(
const std::vector<TabNavigation>& navigations,
- int selected_navigation) {
+ int selected_navigation,
+ bool from_last_session) {
// Verify that this controller is unused and that the input is valid.
DCHECK(entry_count() == 0 && !pending_entry());
DCHECK(selected_navigation >= 0 &&
@@ -156,7 +160,7 @@
CreateNavigationEntriesFromTabNavigations(navigations, &entries_);
// And finish the restore.
- FinishRestore(selected_navigation);
+ FinishRestore(selected_navigation, from_last_session);
}
void NavigationController::Reload(bool check_for_repost) {
@@ -422,8 +426,10 @@
// TODO(brettw) this seems slightly bogus as we don't really know if the
// pending entry is what this navigation is for. There is a similar TODO
// w.r.t. the pending entry in RendererDidNavigateToNewPage.
- if (pending_entry_index_ >= 0)
+ if (pending_entry_index_ >= 0) {
pending_entry_->set_site_instance(tab_contents_->GetSiteInstance());
+ pending_entry_->set_restore_type(NavigationEntry::RESTORE_NONE);
+ }
// Do navigation-type specific actions. These will make and commit an entry.
details->type = ClassifyNavigation(params);
@@ -828,7 +834,7 @@
new NavigationEntry(*source.entries_[i])));
}
- FinishRestore(source.last_committed_entry_index_);
+ FinishRestore(source.last_committed_entry_index_, false);
}
void NavigationController::DiscardNonCommittedEntries() {
@@ -958,9 +964,10 @@
Details<EntryChangedDetails>(&det));
}
-void NavigationController::FinishRestore(int selected_index) {
+void NavigationController::FinishRestore(int selected_index,
+ bool from_last_session) {
DCHECK(selected_index >= 0 && selected_index < entry_count());
- ConfigureEntriesForRestore(&entries_);
+ ConfigureEntriesForRestore(&entries_, from_last_session);
set_max_restored_page_id(entry_count());
« no previous file with comments | « chrome/browser/tab_contents/navigation_controller.h ('k') | chrome/browser/tab_contents/navigation_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698