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

Unified Diff: content/browser/frame_host/navigation_controller_impl.cc

Issue 2225343002: Navigation: move RestoreType and ReloadType into a separate file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase+ Created 4 years, 4 months 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: content/browser/frame_host/navigation_controller_impl.cc
diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
index 2b21fd9296ce3828ee0b2417a9174fc788e022e6..d43de0405319b8dec45d27e93b263c0c5cca2d94 100644
--- a/content/browser/frame_host/navigation_controller_impl.cc
+++ b/content/browser/frame_host/navigation_controller_impl.cc
@@ -115,30 +115,16 @@ void SetPageStateIfEmpty(NavigationEntryImpl* entry) {
entry->SetPageState(PageState::CreateFromURL(entry->GetURL()));
}
-NavigationEntryImpl::RestoreType ControllerRestoreTypeToEntryType(
Charlie Reis 2016/08/11 23:58:43 I admit this does seem a bit unnecessary. I think
- NavigationController::RestoreType type) {
- switch (type) {
- case NavigationController::RESTORE_CURRENT_SESSION:
- return NavigationEntryImpl::RESTORE_CURRENT_SESSION;
- case NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY:
- return NavigationEntryImpl::RESTORE_LAST_SESSION_EXITED_CLEANLY;
- case NavigationController::RESTORE_LAST_SESSION_CRASHED:
- return NavigationEntryImpl::RESTORE_LAST_SESSION_CRASHED;
- }
- NOTREACHED();
- return NavigationEntryImpl::RESTORE_CURRENT_SESSION;
-}
-
// 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<std::unique_ptr<NavigationEntryImpl>>* entries,
- NavigationController::RestoreType type) {
+ RestoreType type) {
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]->SetTransitionType(ui::PAGE_TRANSITION_RELOAD);
- (*entries)[i]->set_restore_type(ControllerRestoreTypeToEntryType(type));
+ (*entries)[i]->set_restore_type(type);
// NOTE(darin): This code is only needed for backwards compat.
SetPageStateIfEmpty((*entries)[i].get());
}
@@ -239,7 +225,7 @@ NavigationControllerImpl::NavigationControllerImpl(
needs_reload_(false),
is_initial_navigation_(true),
in_navigate_to_pending_entry_(false),
- pending_reload_(NO_RELOAD),
+ pending_reload_(ReloadType::NONE),
get_timestamp_callback_(base::Bind(&base::Time::Now)),
screenshot_manager_(new NavigationEntryScreenshotManager(this)) {
DCHECK(browser_context_);
@@ -281,29 +267,29 @@ void NavigationControllerImpl::Restore(
}
void NavigationControllerImpl::Reload(bool check_for_repost) {
- ReloadType type = RELOAD;
+ ReloadType type = ReloadType::NORMAL;
if (base::FeatureList::IsEnabled(
features::kNonValidatingReloadOnNormalReload)) {
- type = RELOAD_MAIN_RESOURCE;
+ type = ReloadType::MAIN_RESOURCE;
}
ReloadInternal(check_for_repost, type);
}
void NavigationControllerImpl::ReloadToRefreshContent(bool check_for_repost) {
- ReloadType type = RELOAD;
+ ReloadType type = ReloadType::NORMAL;
if (base::FeatureList::IsEnabled(
features::kNonValidatingReloadOnRefreshContent)) {
- type = RELOAD_MAIN_RESOURCE;
+ type = ReloadType::MAIN_RESOURCE;
}
ReloadInternal(check_for_repost, type);
}
void NavigationControllerImpl::ReloadBypassingCache(bool check_for_repost) {
- ReloadInternal(check_for_repost, RELOAD_BYPASSING_CACHE);
+ ReloadInternal(check_for_repost, ReloadType::BYPASSING_CACHE);
}
void NavigationControllerImpl::ReloadOriginalRequestURL(bool check_for_repost) {
- ReloadInternal(check_for_repost, RELOAD_ORIGINAL_REQUEST_URL);
+ ReloadInternal(check_for_repost, ReloadType::ORIGINAL_REQUEST_URL);
}
void NavigationControllerImpl::ReloadDisableLoFi(bool check_for_repost) {
- ReloadInternal(check_for_repost, RELOAD_DISABLE_LOFI_MODE);
+ ReloadInternal(check_for_repost, ReloadType::DISABLE_LOFI_MODE);
}
void NavigationControllerImpl::ReloadInternal(bool check_for_repost,
@@ -379,7 +365,7 @@ void NavigationControllerImpl::ReloadInternal(bool check_for_repost,
// Mark the reload type as NO_RELOAD, so navigation will not be considered
// a reload in the renderer.
- reload_type = NavigationController::NO_RELOAD;
+ reload_type = ReloadType::NONE;
nav_entry->set_should_replace_entry(true);
pending_entry_ = nav_entry;
@@ -402,16 +388,16 @@ void NavigationControllerImpl::ReloadInternal(bool check_for_repost,
}
void NavigationControllerImpl::CancelPendingReload() {
- DCHECK(pending_reload_ != NO_RELOAD);
- pending_reload_ = NO_RELOAD;
+ DCHECK(pending_reload_ != ReloadType::NONE);
+ pending_reload_ = ReloadType::NONE;
}
void NavigationControllerImpl::ContinuePendingReload() {
- if (pending_reload_ == NO_RELOAD) {
+ if (pending_reload_ == ReloadType::NONE) {
NOTREACHED();
} else {
ReloadInternal(false, pending_reload_);
- pending_reload_ = NO_RELOAD;
+ pending_reload_ = ReloadType::NONE;
}
}
@@ -421,8 +407,8 @@ bool NavigationControllerImpl::IsInitialNavigation() const {
bool NavigationControllerImpl::IsInitialBlankNavigation() const {
// TODO(creis): Once we create a NavigationEntry for the initial blank page,
- // we'll need to check for entry count 1 and restore_type RESTORE_NONE (to
- // exclude the cloned tab case).
+ // we'll need to check for entry count 1 and restore_type NONE (to exclude
+ // the cloned tab case).
return IsInitialNavigation() && GetEntryCount() == 0;
}
@@ -445,7 +431,7 @@ void NavigationControllerImpl::LoadEntry(
// end up leaving the current page. The new page load could for example
// result in a download or a 'no content' response (e.g., a mailto: URL).
SetPendingEntry(std::move(entry));
- NavigateToPendingEntry(NO_RELOAD);
+ NavigateToPendingEntry(ReloadType::NONE);
}
void NavigationControllerImpl::SetPendingEntry(
@@ -608,7 +594,7 @@ void NavigationControllerImpl::GoToIndex(int index) {
ui::PageTransitionFromInt(
entries_[pending_entry_index_]->GetTransitionType() |
ui::PAGE_TRANSITION_FORWARD_BACK));
- NavigateToPendingEntry(NO_RELOAD);
+ NavigateToPendingEntry(ReloadType::NONE);
}
void NavigationControllerImpl::GoToOffset(int offset) {
@@ -801,12 +787,11 @@ bool NavigationControllerImpl::RendererDidNavigate(
// If there is a pending entry at this point, it should have a SiteInstance,
// except for restored entries.
- DCHECK(pending_entry_index_ == -1 ||
- pending_entry_->site_instance() ||
- pending_entry_->restore_type() != NavigationEntryImpl::RESTORE_NONE);
- if (pending_entry_ &&
- pending_entry_->restore_type() != NavigationEntryImpl::RESTORE_NONE)
- pending_entry_->set_restore_type(NavigationEntryImpl::RESTORE_NONE);
+ DCHECK(pending_entry_index_ == -1 || pending_entry_->site_instance() ||
+ pending_entry_->restore_type() != RestoreType::NONE);
+ if (pending_entry_ && pending_entry_->restore_type() != RestoreType::NONE) {
+ pending_entry_->set_restore_type(RestoreType::NONE);
+ }
// The renderer tells us whether the navigation replaces the current entry.
details->did_replace_entry = params.should_replace_current_entry;
@@ -819,26 +804,26 @@ bool NavigationControllerImpl::RendererDidNavigate(
params.was_within_same_page, rfh);
switch (details->type) {
- case NAVIGATION_TYPE_NEW_PAGE:
+ case NavigationType::NEW_PAGE:
Charlie Reis 2016/08/11 23:58:43 What's the motivation for changing this one? I'm
Takashi Toyoshima 2016/09/07 12:07:44 My understanding is "enum class" is encouraged to
RendererDidNavigateToNewPage(rfh, params, details->is_in_page,
details->did_replace_entry);
break;
- case NAVIGATION_TYPE_EXISTING_PAGE:
+ case NavigationType::EXISTING_PAGE:
details->did_replace_entry = details->is_in_page;
RendererDidNavigateToExistingPage(rfh, params);
break;
- case NAVIGATION_TYPE_SAME_PAGE:
+ case NavigationType::SAME_PAGE:
RendererDidNavigateToSamePage(rfh, params);
break;
- case NAVIGATION_TYPE_NEW_SUBFRAME:
+ case NavigationType::NEW_SUBFRAME:
RendererDidNavigateNewSubframe(rfh, params, details->is_in_page,
details->did_replace_entry);
break;
- case NAVIGATION_TYPE_AUTO_SUBFRAME:
+ case NavigationType::AUTO_SUBFRAME:
if (!RendererDidNavigateAutoSubframe(rfh, params))
return false;
break;
- case NAVIGATION_TYPE_NAV_IGNORE:
+ case NavigationType::NAV_IGNORE:
// If a pending navigation was in progress, this canceled it. We should
// discard it and make sure it is removed from the URL bar. After that,
// there is nothing we can do with this navigation, so we just return to
@@ -946,7 +931,7 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
// A new entry. We may or may not have a pending entry for the page, and
// this may or may not be the main frame.
if (!rfh->GetParent()) {
- return NAVIGATION_TYPE_NEW_PAGE;
+ return NavigationType::NEW_PAGE;
}
// When this is a new subframe navigation, we should have a committed page
@@ -955,10 +940,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
// written into the popup by script on the main page). For these cases,
// there isn't any navigation stuff we can do, so just ignore it.
if (!GetLastCommittedEntry())
- return NAVIGATION_TYPE_NAV_IGNORE;
+ return NavigationType::NAV_IGNORE;
// Valid subframe navigation.
- return NAVIGATION_TYPE_NEW_SUBFRAME;
+ return NavigationType::NEW_SUBFRAME;
}
// Cross-process location.replace navigations should be classified as New with
@@ -970,7 +955,7 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
if (!rfh->GetParent() && GetLastCommittedEntry() &&
GetLastCommittedEntry()->site_instance() != rfh->GetSiteInstance() &&
params.should_replace_current_entry) {
- return NAVIGATION_TYPE_NEW_PAGE;
+ return NavigationType::NEW_PAGE;
}
// We only clear the session history when navigating to a new page.
@@ -980,11 +965,11 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
// All manual subframes would be did_create_new_entry and handled above, so
// we know this is auto.
if (GetLastCommittedEntry()) {
- return NAVIGATION_TYPE_AUTO_SUBFRAME;
+ return NavigationType::AUTO_SUBFRAME;
} else {
// We ignore subframes created in non-committed pages; we'd appreciate if
// people stopped doing that.
- return NAVIGATION_TYPE_NAV_IGNORE;
+ return NavigationType::NAV_IGNORE;
}
}
@@ -997,11 +982,11 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
// stuff that we can do, so ignore it here as well.
NavigationEntry* last_committed = GetLastCommittedEntry();
if (!last_committed)
- return NAVIGATION_TYPE_NAV_IGNORE;
+ return NavigationType::NAV_IGNORE;
// This is history.replaceState(), history.reload(), or a client-side
// redirect.
- return NAVIGATION_TYPE_EXISTING_PAGE;
+ return NavigationType::EXISTING_PAGE;
}
if (pending_entry_ && pending_entry_index_ == -1 &&
@@ -1012,7 +997,7 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
// thus set params.did_create_new_entry to false. In that case, we must
// treat it as NEW since the SiteInstance doesn't match the entry.
if (GetLastCommittedEntry()->site_instance() != rfh->GetSiteInstance())
- return NAVIGATION_TYPE_NEW_PAGE;
+ return NavigationType::NEW_PAGE;
// Otherwise, this happens when you press enter in the URL bar to reload. We
// will create a pending entry, but Blink will convert it to a reload since
@@ -1021,14 +1006,14 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
// want to just ignore the pending entry and go back to where we were (the
// "existing entry").
// TODO(creis,avi): Eliminate SAME_PAGE in https://crbug.com/536102.
- return NAVIGATION_TYPE_SAME_PAGE;
+ return NavigationType::SAME_PAGE;
}
if (params.intended_as_new_entry) {
// This was intended to be a navigation to a new entry but the pending entry
// got cleared in the meanwhile. Classify as EXISTING_PAGE because we may or
// may not have a pending entry.
- return NAVIGATION_TYPE_EXISTING_PAGE;
+ return NavigationType::EXISTING_PAGE;
}
if (params.url_is_unreachable && failed_pending_entry_id_ != 0 &&
@@ -1037,7 +1022,7 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
// of an error, this is the case of the user trying to retry a failed load
// by pressing return. Classify as EXISTING_PAGE because we probably don't
// have a pending entry.
- return NAVIGATION_TYPE_EXISTING_PAGE;
+ return NavigationType::EXISTING_PAGE;
}
// Now we know that the notification is for an existing page. Find that entry.
@@ -1045,12 +1030,12 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
if (existing_entry_index == -1) {
// The renderer has committed a navigation to an entry that no longer
// exists. Because the renderer is showing that page, resurrect that entry.
- return NAVIGATION_TYPE_NEW_PAGE;
+ return NavigationType::NEW_PAGE;
}
// Since we weeded out "new" navigations above, we know this is an existing
// (back/forward) navigation.
- return NAVIGATION_TYPE_EXISTING_PAGE;
+ return NavigationType::EXISTING_PAGE;
}
void NavigationControllerImpl::RendererDidNavigateToNewPage(
@@ -1475,7 +1460,8 @@ void NavigationControllerImpl::CopyStateFrom(
session_storage_namespace_map_[it->first] = source_namespace->Clone();
}
- FinishRestore(source.last_committed_entry_index_, RESTORE_CURRENT_SESSION);
+ FinishRestore(source.last_committed_entry_index_,
+ RestoreType::CURRENT_SESSION);
// Copy the max page id map from the old tab to the new tab. This ensures
// that new and existing navigations in the tab's current SiteInstances
@@ -1780,10 +1766,9 @@ void NavigationControllerImpl::NavigateToPendingEntry(ReloadType reload_type) {
// page from loading (which would normally happen during the navigation).
if (pending_entry_index_ != -1 &&
pending_entry_index_ == last_committed_entry_index_ &&
- (entries_[pending_entry_index_]->restore_type() ==
- NavigationEntryImpl::RESTORE_NONE) &&
+ (entries_[pending_entry_index_]->restore_type() == RestoreType::NONE) &&
(entries_[pending_entry_index_]->GetTransitionType() &
- ui::PAGE_TRANSITION_FORWARD_BACK)) {
+ ui::PAGE_TRANSITION_FORWARD_BACK)) {
delegate_->Stop();
// If an interstitial page is showing, we want to close it to get back
@@ -1984,10 +1969,10 @@ void NavigationControllerImpl::LoadIfNecessary() {
// Explicitly use NavigateToPendingEntry so that the renderer uses the
// cached state.
if (pending_entry_) {
- NavigateToPendingEntry(NO_RELOAD);
+ NavigateToPendingEntry(ReloadType::NONE);
} else if (last_committed_entry_index_ != -1) {
pending_entry_index_ = last_committed_entry_index_;
- NavigateToPendingEntry(NO_RELOAD);
+ NavigateToPendingEntry(ReloadType::NONE);
} else {
// If there is something to reload, the successful reload will clear the
// |needs_reload_| flag. Otherwise, just do it here.

Powered by Google App Engine
This is Rietveld 408576698