Chromium Code Reviews| Index: chrome/browser/tab_contents/navigation_controller.cc |
| diff --git a/chrome/browser/tab_contents/navigation_controller.cc b/chrome/browser/tab_contents/navigation_controller.cc |
| index e4c5aaca603406240d25f3e277601798fd94f683..3b41798bc4102f564cedec407c61a7dccc16d3d5 100644 |
| --- a/chrome/browser/tab_contents/navigation_controller.cc |
| +++ b/chrome/browser/tab_contents/navigation_controller.cc |
| @@ -986,30 +986,33 @@ void NavigationController::CopyStateFromAndPrune(NavigationController* source) { |
| } |
| void NavigationController::PruneAllButActive() { |
| - int prune_count = entry_count(); |
| if (transient_entry_index_ != -1) { |
| // There is a transient entry. Prune up to it. |
| DCHECK_EQ(entry_count() - 1, transient_entry_index_); |
| - prune_count = transient_entry_index_; |
| transient_entry_index_ = 0; |
| last_committed_entry_index_ = -1; |
| pending_entry_index_ = -1; |
| + entries_.erase(entries_.begin(), entries_.begin() + transient_entry_index_); |
|
apavlov
2010/12/14 16:44:45
transient_entry_index_ is always 0 (see line 992),
|
| } else if (!pending_entry_) { |
| // There's no pending entry. Leave the last entry (if there is one). |
| - if (!prune_count) |
| + if (!entry_count()) |
| return; |
| - prune_count--; |
| + DCHECK(last_committed_entry_index_ >= 0); |
| + entries_.erase(entries_.begin(), |
| + entries_.begin() + last_committed_entry_index_); |
| + entries_.erase(entries_.begin() + 1, entries_.end()); |
| last_committed_entry_index_ = 0; |
| } else if (pending_entry_index_ != -1) { |
| - DCHECK_EQ(pending_entry_index_, prune_count - 1); |
| + entries_.erase(entries_.begin(), entries_.begin() + pending_entry_index_); |
| + entries_.erase(entries_.begin() + 1, entries_.end()); |
| pending_entry_index_ = 0; |
| last_committed_entry_index_ = 0; |
| - prune_count--; |
| } else { |
| // There is a pending_entry, but it's not in entries_. |
| pending_entry_index_ = -1; |
| last_committed_entry_index_ = -1; |
| + entries_.clear(); |
| } |
| if (tab_contents_->interstitial_page()) { |
| @@ -1018,8 +1021,6 @@ void NavigationController::PruneAllButActive() { |
| // so the interstitial triggers a reload if the user doesn't proceed. |
| tab_contents_->interstitial_page()->set_reload_on_dont_proceed(true); |
| } |
| - |
| - entries_.erase(entries_.begin(), entries_.begin() + prune_count); |
| } |
| void NavigationController::DiscardNonCommittedEntries() { |