Chromium Code Reviews| 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/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/debug/trace_event.h" | 8 #include "base/debug/trace_event.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/string_number_conversions.h" // Temporary | 10 #include "base/strings/string_number_conversions.h" // Temporary |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 261 } | 261 } |
| 262 void NavigationControllerImpl::ReloadOriginalRequestURL(bool check_for_repost) { | 262 void NavigationControllerImpl::ReloadOriginalRequestURL(bool check_for_repost) { |
| 263 ReloadInternal(check_for_repost, RELOAD_ORIGINAL_REQUEST_URL); | 263 ReloadInternal(check_for_repost, RELOAD_ORIGINAL_REQUEST_URL); |
| 264 } | 264 } |
| 265 | 265 |
| 266 void NavigationControllerImpl::ReloadInternal(bool check_for_repost, | 266 void NavigationControllerImpl::ReloadInternal(bool check_for_repost, |
| 267 ReloadType reload_type) { | 267 ReloadType reload_type) { |
| 268 if (transient_entry_index_ != -1) { | 268 if (transient_entry_index_ != -1) { |
| 269 // If an interstitial is showing, treat a reload as a navigation to the | 269 // If an interstitial is showing, treat a reload as a navigation to the |
| 270 // transient entry's URL. | 270 // transient entry's URL. |
| 271 NavigationEntryImpl* active_entry = | 271 NavigationEntryImpl* active_entry = |
|
Charlie Reis
2013/08/16 22:10:14
nit: visible_entry
Actually, should we just make
nasko
2013/09/12 17:56:31
Done.
| |
| 272 NavigationEntryImpl::FromNavigationEntry(GetActiveEntry()); | 272 NavigationEntryImpl::FromNavigationEntry(GetVisibleEntry()); |
| 273 if (!active_entry) | 273 if (!active_entry) |
| 274 return; | 274 return; |
| 275 LoadURL(active_entry->GetURL(), | 275 LoadURL(active_entry->GetURL(), |
| 276 Referrer(), | 276 Referrer(), |
| 277 PAGE_TRANSITION_RELOAD, | 277 PAGE_TRANSITION_RELOAD, |
| 278 active_entry->extra_headers()); | 278 active_entry->extra_headers()); |
| 279 return; | 279 return; |
| 280 } | 280 } |
| 281 | 281 |
| 282 NavigationEntryImpl* entry = NULL; | 282 NavigationEntryImpl* entry = NULL; |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 455 NavigationEntry* NavigationControllerImpl::GetLastCommittedEntry() const { | 455 NavigationEntry* NavigationControllerImpl::GetLastCommittedEntry() const { |
| 456 if (last_committed_entry_index_ == -1) | 456 if (last_committed_entry_index_ == -1) |
| 457 return NULL; | 457 return NULL; |
| 458 return entries_[last_committed_entry_index_].get(); | 458 return entries_[last_committed_entry_index_].get(); |
| 459 } | 459 } |
| 460 | 460 |
| 461 bool NavigationControllerImpl::CanViewSource() const { | 461 bool NavigationControllerImpl::CanViewSource() const { |
| 462 const std::string& mime_type = web_contents_->GetContentsMimeType(); | 462 const std::string& mime_type = web_contents_->GetContentsMimeType(); |
| 463 bool is_viewable_mime_type = net::IsSupportedNonImageMimeType(mime_type) && | 463 bool is_viewable_mime_type = net::IsSupportedNonImageMimeType(mime_type) && |
| 464 !net::IsSupportedMediaMimeType(mime_type); | 464 !net::IsSupportedMediaMimeType(mime_type); |
| 465 NavigationEntry* active_entry = GetActiveEntry(); | 465 NavigationEntry* active_entry = GetVisibleEntry(); |
|
Charlie Reis
2013/08/16 22:10:14
nit: visible_entry
nasko
2013/09/12 17:56:31
Done.
| |
| 466 return active_entry && !active_entry->IsViewSourceMode() && | 466 return active_entry && !active_entry->IsViewSourceMode() && |
| 467 is_viewable_mime_type && !web_contents_->GetInterstitialPage(); | 467 is_viewable_mime_type && !web_contents_->GetInterstitialPage(); |
| 468 } | 468 } |
| 469 | 469 |
| 470 int NavigationControllerImpl::GetLastCommittedEntryIndex() const { | 470 int NavigationControllerImpl::GetLastCommittedEntryIndex() const { |
| 471 return last_committed_entry_index_; | 471 return last_committed_entry_index_; |
| 472 } | 472 } |
| 473 | 473 |
| 474 int NavigationControllerImpl::GetEntryCount() const { | 474 int NavigationControllerImpl::GetEntryCount() const { |
| 475 DCHECK(entries_.size() <= max_entry_count()); | 475 DCHECK(entries_.size() <= max_entry_count()); |
| (...skipping 835 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1311 return true; | 1311 return true; |
| 1312 } | 1312 } |
| 1313 | 1313 |
| 1314 void NavigationControllerImpl::PruneAllButVisible() { | 1314 void NavigationControllerImpl::PruneAllButVisible() { |
| 1315 PruneAllButVisibleInternal(); | 1315 PruneAllButVisibleInternal(); |
| 1316 | 1316 |
| 1317 // We should still have a last committed entry. | 1317 // We should still have a last committed entry. |
| 1318 DCHECK_NE(-1, last_committed_entry_index_); | 1318 DCHECK_NE(-1, last_committed_entry_index_); |
| 1319 | 1319 |
| 1320 NavigationEntryImpl* entry = | 1320 NavigationEntryImpl* entry = |
| 1321 NavigationEntryImpl::FromNavigationEntry(GetActiveEntry()); | 1321 NavigationEntryImpl::FromNavigationEntry(GetVisibleEntry()); |
|
Charlie Reis
2013/08/16 22:10:14
This scares me. We may have to come back to this
| |
| 1322 // We pass 0 instead of GetEntryCount() for the history_length parameter of | 1322 // We pass 0 instead of GetEntryCount() for the history_length parameter of |
| 1323 // SetHistoryLengthAndPrune, because it will create history_length additional | 1323 // SetHistoryLengthAndPrune, because it will create history_length additional |
| 1324 // history entries. | 1324 // history entries. |
| 1325 // TODO(jochen): This API is confusing and we should clean it up. | 1325 // TODO(jochen): This API is confusing and we should clean it up. |
| 1326 // http://crbug.com/178491 | 1326 // http://crbug.com/178491 |
| 1327 web_contents_->SetHistoryLengthAndPrune( | 1327 web_contents_->SetHistoryLengthAndPrune( |
| 1328 entry->site_instance(), 0, entry->GetPageID()); | 1328 entry->site_instance(), 0, entry->GetPageID()); |
| 1329 } | 1329 } |
| 1330 | 1330 |
| 1331 void NavigationControllerImpl::PruneAllButVisibleInternal() { | 1331 void NavigationControllerImpl::PruneAllButVisibleInternal() { |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1549 if (pending_entry_ && !pending_entry_->site_instance() && | 1549 if (pending_entry_ && !pending_entry_->site_instance() && |
| 1550 pending_entry_->restore_type() != NavigationEntryImpl::RESTORE_NONE) { | 1550 pending_entry_->restore_type() != NavigationEntryImpl::RESTORE_NONE) { |
| 1551 pending_entry_->set_site_instance(static_cast<SiteInstanceImpl*>( | 1551 pending_entry_->set_site_instance(static_cast<SiteInstanceImpl*>( |
| 1552 web_contents_->GetPendingSiteInstance())); | 1552 web_contents_->GetPendingSiteInstance())); |
| 1553 pending_entry_->set_restore_type(NavigationEntryImpl::RESTORE_NONE); | 1553 pending_entry_->set_restore_type(NavigationEntryImpl::RESTORE_NONE); |
| 1554 } | 1554 } |
| 1555 } | 1555 } |
| 1556 | 1556 |
| 1557 void NavigationControllerImpl::NotifyNavigationEntryCommitted( | 1557 void NavigationControllerImpl::NotifyNavigationEntryCommitted( |
| 1558 LoadCommittedDetails* details) { | 1558 LoadCommittedDetails* details) { |
| 1559 details->entry = GetActiveEntry(); | 1559 details->entry = GetVisibleEntry(); |
|
Charlie Reis
2013/08/16 22:10:14
GetLastCommittedEntry, perhaps? How would we have
nasko
2013/09/12 17:56:31
I'm not sure we can have a transient entry at the
| |
| 1560 NotificationDetails notification_details = | 1560 NotificationDetails notification_details = |
| 1561 Details<LoadCommittedDetails>(details); | 1561 Details<LoadCommittedDetails>(details); |
| 1562 | 1562 |
| 1563 // We need to notify the ssl_manager_ before the web_contents_ so the | 1563 // We need to notify the ssl_manager_ before the web_contents_ so the |
| 1564 // location bar will have up-to-date information about the security style | 1564 // location bar will have up-to-date information about the security style |
| 1565 // when it wants to draw. See http://crbug.com/11157 | 1565 // when it wants to draw. See http://crbug.com/11157 |
| 1566 ssl_manager_.DidCommitProvisionalLoad(notification_details); | 1566 ssl_manager_.DidCommitProvisionalLoad(notification_details); |
| 1567 | 1567 |
| 1568 // TODO(pkasting): http://b/1113079 Probably these explicit notification paths | 1568 // TODO(pkasting): http://b/1113079 Probably these explicit notification paths |
| 1569 // should be removed, and interested parties should just listen for the | 1569 // should be removed, and interested parties should just listen for the |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1684 } | 1684 } |
| 1685 } | 1685 } |
| 1686 } | 1686 } |
| 1687 | 1687 |
| 1688 void NavigationControllerImpl::SetGetTimestampCallbackForTest( | 1688 void NavigationControllerImpl::SetGetTimestampCallbackForTest( |
| 1689 const base::Callback<base::Time()>& get_timestamp_callback) { | 1689 const base::Callback<base::Time()>& get_timestamp_callback) { |
| 1690 get_timestamp_callback_ = get_timestamp_callback; | 1690 get_timestamp_callback_ = get_timestamp_callback; |
| 1691 } | 1691 } |
| 1692 | 1692 |
| 1693 } // namespace content | 1693 } // namespace content |
| OLD | NEW |