| OLD | NEW |
| 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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 // And finish the restore. | 236 // And finish the restore. |
| 237 FinishRestore(selected_navigation, from_last_session); | 237 FinishRestore(selected_navigation, from_last_session); |
| 238 } | 238 } |
| 239 | 239 |
| 240 void NavigationControllerImpl::Reload(bool check_for_repost) { | 240 void NavigationControllerImpl::Reload(bool check_for_repost) { |
| 241 ReloadInternal(check_for_repost, RELOAD); | 241 ReloadInternal(check_for_repost, RELOAD); |
| 242 } | 242 } |
| 243 void NavigationControllerImpl::ReloadIgnoringCache(bool check_for_repost) { | 243 void NavigationControllerImpl::ReloadIgnoringCache(bool check_for_repost) { |
| 244 ReloadInternal(check_for_repost, RELOAD_IGNORING_CACHE); | 244 ReloadInternal(check_for_repost, RELOAD_IGNORING_CACHE); |
| 245 } | 245 } |
| 246 void NavigationControllerImpl::ReloadOriginalRequestURL(bool check_for_repost) { |
| 247 ReloadInternal(check_for_repost, RELOAD_ORIGINAL_REQUEST_URL); |
| 248 } |
| 246 | 249 |
| 247 void NavigationControllerImpl::ReloadInternal(bool check_for_repost, | 250 void NavigationControllerImpl::ReloadInternal(bool check_for_repost, |
| 248 ReloadType reload_type) { | 251 ReloadType reload_type) { |
| 249 // Reloading a transient entry does nothing. | 252 // Reloading a transient entry does nothing. |
| 250 if (transient_entry_index_ != -1) | 253 if (transient_entry_index_ != -1) |
| 251 return; | 254 return; |
| 252 | 255 |
| 253 DiscardNonCommittedEntriesInternal(); | 256 DiscardNonCommittedEntriesInternal(); |
| 254 int current_index = GetCurrentEntryIndex(); | 257 int current_index = GetCurrentEntryIndex(); |
| 255 // If we are no where, then we can't reload. TODO(darin): We should add a | 258 // If we are no where, then we can't reload. TODO(darin): We should add a |
| (...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 new_entry->SetURL(params.url); | 947 new_entry->SetURL(params.url); |
| 945 if (update_virtual_url) | 948 if (update_virtual_url) |
| 946 UpdateVirtualURLToURL(new_entry, params.url); | 949 UpdateVirtualURLToURL(new_entry, params.url); |
| 947 new_entry->SetReferrer(params.referrer); | 950 new_entry->SetReferrer(params.referrer); |
| 948 new_entry->SetPageID(params.page_id); | 951 new_entry->SetPageID(params.page_id); |
| 949 new_entry->SetTransitionType(params.transition); | 952 new_entry->SetTransitionType(params.transition); |
| 950 new_entry->set_site_instance( | 953 new_entry->set_site_instance( |
| 951 static_cast<SiteInstanceImpl*>(web_contents_->GetSiteInstance())); | 954 static_cast<SiteInstanceImpl*>(web_contents_->GetSiteInstance())); |
| 952 new_entry->SetHasPostData(params.is_post); | 955 new_entry->SetHasPostData(params.is_post); |
| 953 new_entry->SetPostID(params.post_id); | 956 new_entry->SetPostID(params.post_id); |
| 957 new_entry->SetOriginalRequestURL(params.original_request_url); |
| 954 new_entry->SetIsOverridingUserAgent(params.is_overriding_user_agent); | 958 new_entry->SetIsOverridingUserAgent(params.is_overriding_user_agent); |
| 955 | 959 |
| 956 if (params.redirects.size() > 0) | |
| 957 new_entry->SetOriginalRequestURL(params.redirects[0]); | |
| 958 else | |
| 959 new_entry->SetOriginalRequestURL(params.url); | |
| 960 | |
| 961 InsertOrReplaceEntry(new_entry, *did_replace_entry); | 960 InsertOrReplaceEntry(new_entry, *did_replace_entry); |
| 962 } | 961 } |
| 963 | 962 |
| 964 void NavigationControllerImpl::RendererDidNavigateToExistingPage( | 963 void NavigationControllerImpl::RendererDidNavigateToExistingPage( |
| 965 const ViewHostMsg_FrameNavigate_Params& params) { | 964 const ViewHostMsg_FrameNavigate_Params& params) { |
| 966 // We should only get here for main frame navigations. | 965 // We should only get here for main frame navigations. |
| 967 DCHECK(content::PageTransitionIsMainFrame(params.transition)); | 966 DCHECK(content::PageTransitionIsMainFrame(params.transition)); |
| 968 | 967 |
| 969 // This is a back/forward navigation. The existing page for the ID is | 968 // This is a back/forward navigation. The existing page for the ID is |
| 970 // guaranteed to exist by ClassifyNavigation, and we just need to update it | 969 // guaranteed to exist by ClassifyNavigation, and we just need to update it |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1516 for (int i = 0; i < max_index; i++) { | 1515 for (int i = 0; i < max_index; i++) { |
| 1517 // When cloning a tab, copy all entries except interstitial pages | 1516 // When cloning a tab, copy all entries except interstitial pages |
| 1518 if (source.entries_[i].get()->GetPageType() != | 1517 if (source.entries_[i].get()->GetPageType() != |
| 1519 content::PAGE_TYPE_INTERSTITIAL) { | 1518 content::PAGE_TYPE_INTERSTITIAL) { |
| 1520 entries_.insert(entries_.begin() + insert_index++, | 1519 entries_.insert(entries_.begin() + insert_index++, |
| 1521 linked_ptr<NavigationEntryImpl>( | 1520 linked_ptr<NavigationEntryImpl>( |
| 1522 new NavigationEntryImpl(*source.entries_[i]))); | 1521 new NavigationEntryImpl(*source.entries_[i]))); |
| 1523 } | 1522 } |
| 1524 } | 1523 } |
| 1525 } | 1524 } |
| OLD | NEW |