| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/tab_contents/navigation_controller.h" | 5 #include "content/browser/tab_contents/navigation_controller.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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 url_canon::Replacements<char> replacements; | 96 url_canon::Replacements<char> replacements; |
| 97 replacements.ClearRef(); | 97 replacements.ClearRef(); |
| 98 return existing_url.ReplaceComponents(replacements) == | 98 return existing_url.ReplaceComponents(replacements) == |
| 99 new_url.ReplaceComponents(replacements); | 99 new_url.ReplaceComponents(replacements); |
| 100 } | 100 } |
| 101 | 101 |
| 102 } // namespace | 102 } // namespace |
| 103 | 103 |
| 104 // NavigationController --------------------------------------------------- | 104 // NavigationController --------------------------------------------------- |
| 105 | 105 |
| 106 const size_t kMaxEntryCountForTestingNotSet = -1; |
| 107 |
| 106 // static | 108 // static |
| 107 size_t NavigationController::max_entry_count_ = | 109 size_t NavigationController::max_entry_count_for_testing_ = |
| 108 content::kMaxSessionHistoryEntries; | 110 kMaxEntryCountForTestingNotSet; |
| 109 | 111 |
| 110 // static | 112 // static |
| 111 bool NavigationController::check_for_repost_ = true; | 113 bool NavigationController::check_for_repost_ = true; |
| 112 | 114 |
| 113 NavigationController::NavigationController( | 115 NavigationController::NavigationController( |
| 114 TabContents* contents, | 116 TabContents* contents, |
| 115 content::BrowserContext* browser_context, | 117 content::BrowserContext* browser_context, |
| 116 SessionStorageNamespace* session_storage_namespace) | 118 SessionStorageNamespace* session_storage_namespace) |
| 117 : browser_context_(browser_context), | 119 : browser_context_(browser_context), |
| 118 pending_entry_(NULL), | 120 pending_entry_(NULL), |
| (...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1118 int num_pruned = 0; | 1120 int num_pruned = 0; |
| 1119 while (last_committed_entry_index_ < (current_size - 1)) { | 1121 while (last_committed_entry_index_ < (current_size - 1)) { |
| 1120 num_pruned++; | 1122 num_pruned++; |
| 1121 entries_.pop_back(); | 1123 entries_.pop_back(); |
| 1122 current_size--; | 1124 current_size--; |
| 1123 } | 1125 } |
| 1124 if (num_pruned > 0) // Only notify if we did prune something. | 1126 if (num_pruned > 0) // Only notify if we did prune something. |
| 1125 NotifyPrunedEntries(this, false, num_pruned); | 1127 NotifyPrunedEntries(this, false, num_pruned); |
| 1126 } | 1128 } |
| 1127 | 1129 |
| 1128 if (entries_.size() >= max_entry_count_) { | 1130 if (entries_.size() >= max_entry_count()) { |
| 1129 RemoveEntryAtIndex(0, GURL()); | 1131 RemoveEntryAtIndex(0, GURL()); |
| 1130 NotifyPrunedEntries(this, true, 1); | 1132 NotifyPrunedEntries(this, true, 1); |
| 1131 } | 1133 } |
| 1132 | 1134 |
| 1133 entries_.push_back(linked_ptr<NavigationEntry>(entry)); | 1135 entries_.push_back(linked_ptr<NavigationEntry>(entry)); |
| 1134 last_committed_entry_index_ = static_cast<int>(entries_.size()) - 1; | 1136 last_committed_entry_index_ = static_cast<int>(entries_.size()) - 1; |
| 1135 | 1137 |
| 1136 // This is a new page ID, so we need everybody to know about it. | 1138 // This is a new page ID, so we need everybody to know about it. |
| 1137 tab_contents_->UpdateMaxPageID(entry->page_id()); | 1139 tab_contents_->UpdateMaxPageID(entry->page_id()); |
| 1138 } | 1140 } |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1197 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 1199 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 1198 content::Source<NavigationController>(this), | 1200 content::Source<NavigationController>(this), |
| 1199 notification_details); | 1201 notification_details); |
| 1200 } | 1202 } |
| 1201 | 1203 |
| 1202 // static | 1204 // static |
| 1203 void NavigationController::DisablePromptOnRepost() { | 1205 void NavigationController::DisablePromptOnRepost() { |
| 1204 check_for_repost_ = false; | 1206 check_for_repost_ = false; |
| 1205 } | 1207 } |
| 1206 | 1208 |
| 1209 // static |
| 1210 size_t NavigationController::max_entry_count() { |
| 1211 if (max_entry_count_for_testing_ != kMaxEntryCountForTestingNotSet) |
| 1212 return max_entry_count_for_testing_; |
| 1213 return content::kMaxSessionHistoryEntries; |
| 1214 } |
| 1215 |
| 1207 void NavigationController::SetActive(bool is_active) { | 1216 void NavigationController::SetActive(bool is_active) { |
| 1208 if (is_active && needs_reload_) | 1217 if (is_active && needs_reload_) |
| 1209 LoadIfNecessary(); | 1218 LoadIfNecessary(); |
| 1210 } | 1219 } |
| 1211 | 1220 |
| 1212 void NavigationController::LoadIfNecessary() { | 1221 void NavigationController::LoadIfNecessary() { |
| 1213 if (!needs_reload_) | 1222 if (!needs_reload_) |
| 1214 return; | 1223 return; |
| 1215 | 1224 |
| 1216 // Calling Reload() results in ignoring state, and not loading. | 1225 // Calling Reload() results in ignoring state, and not loading. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1283 for (int i = 0; i < max_index; i++) { | 1292 for (int i = 0; i < max_index; i++) { |
| 1284 // When cloning a tab, copy all entries except interstitial pages | 1293 // When cloning a tab, copy all entries except interstitial pages |
| 1285 if (source.entries_[i].get()->page_type() != | 1294 if (source.entries_[i].get()->page_type() != |
| 1286 content::PAGE_TYPE_INTERSTITIAL) { | 1295 content::PAGE_TYPE_INTERSTITIAL) { |
| 1287 entries_.insert(entries_.begin() + insert_index++, | 1296 entries_.insert(entries_.begin() + insert_index++, |
| 1288 linked_ptr<NavigationEntry>( | 1297 linked_ptr<NavigationEntry>( |
| 1289 new NavigationEntry(*source.entries_[i]))); | 1298 new NavigationEntry(*source.entries_[i]))); |
| 1290 } | 1299 } |
| 1291 } | 1300 } |
| 1292 } | 1301 } |
| OLD | NEW |