| Index: content/browser/web_contents/navigation_controller_impl.cc
|
| ===================================================================
|
| --- content/browser/web_contents/navigation_controller_impl.cc (revision 163514)
|
| +++ content/browser/web_contents/navigation_controller_impl.cc (working copy)
|
| @@ -39,20 +39,7 @@
|
| #include "net/base/net_util.h"
|
| #include "webkit/glue/glue_serialize.h"
|
|
|
| -using content::BrowserContext;
|
| -using content::DOMStorageContext;
|
| -using content::GetContentClient;
|
| -using content::GlobalRequestID;
|
| -using content::NavigationController;
|
| -using content::NavigationEntry;
|
| -using content::NavigationEntryImpl;
|
| -using content::RenderViewHostImpl;
|
| -using content::SessionStorageNamespace;
|
| -using content::SessionStorageNamespaceMap;
|
| -using content::SiteInstance;
|
| -using content::UserMetricsAction;
|
| -using content::WebContents;
|
| -
|
| +namespace content {
|
| namespace {
|
|
|
| const int kInvalidateAll = 0xFFFFFFFF;
|
| @@ -63,13 +50,13 @@
|
| void NotifyPrunedEntries(NavigationControllerImpl* nav_controller,
|
| bool from_front,
|
| int count) {
|
| - content::PrunedDetails details;
|
| + PrunedDetails details;
|
| details.from_front = from_front;
|
| details.count = count;
|
| - content::NotificationService::current()->Notify(
|
| - content::NOTIFICATION_NAV_LIST_PRUNED,
|
| - content::Source<NavigationController>(nav_controller),
|
| - content::Details<content::PrunedDetails>(&details));
|
| + NotificationService::current()->Notify(
|
| + NOTIFICATION_NAV_LIST_PRUNED,
|
| + Source<NavigationController>(nav_controller),
|
| + Details<PrunedDetails>(&details));
|
| }
|
|
|
| // Ensure the given NavigationEntry has a valid state, so that WebKit does not
|
| @@ -108,7 +95,7 @@
|
| 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(content::PAGE_TRANSITION_RELOAD);
|
| + (*entries)[i]->SetTransitionType(PAGE_TRANSITION_RELOAD);
|
| (*entries)[i]->set_restore_type(ControllerRestoreTypeToEntryType(type));
|
| // NOTE(darin): This code is only needed for backwards compat.
|
| SetContentStateIfEmpty((*entries)[i].get());
|
| @@ -140,7 +127,7 @@
|
|
|
| // Determines whether or not we should be carrying over a user agent override
|
| // between two NavigationEntries.
|
| -bool ShouldKeepOverride(const content::NavigationEntry* last_entry) {
|
| +bool ShouldKeepOverride(const NavigationEntry* last_entry) {
|
| return last_entry && last_entry->GetIsOverridingUserAgent();
|
| }
|
|
|
| @@ -158,7 +145,6 @@
|
| // when testing.
|
| static bool g_check_for_repost = true;
|
|
|
| -namespace content {
|
| // static
|
| NavigationEntry* NavigationController::CreateNavigationEntry(
|
| const GURL& url,
|
| @@ -197,8 +183,6 @@
|
| g_check_for_repost = false;
|
| }
|
|
|
| -} // namespace content
|
| -
|
| base::Time NavigationControllerImpl::TimeSmoother::GetSmoothedTime(
|
| base::Time t) {
|
| // If |t| is between the water marks, we're in a run of duplicates
|
| @@ -286,13 +270,13 @@
|
| if (transient_entry_index_ != -1) {
|
| // If an interstitial is showing, treat a reload as a navigation to the
|
| // transient entry's URL.
|
| - content::NavigationEntryImpl* active_entry =
|
| + NavigationEntryImpl* active_entry =
|
| NavigationEntryImpl::FromNavigationEntry(GetActiveEntry());
|
| if (!active_entry)
|
| return;
|
| LoadURL(active_entry->GetURL(),
|
| - content::Referrer(),
|
| - content::PAGE_TRANSITION_RELOAD,
|
| + Referrer(),
|
| + PAGE_TRANSITION_RELOAD,
|
| active_entry->extra_headers());
|
| return;
|
| }
|
| @@ -310,10 +294,10 @@
|
| // The user is asking to reload a page with POST data. Prompt to make sure
|
| // they really want to do this. If they do, the dialog will call us back
|
| // with check_for_repost = false.
|
| - content::NotificationService::current()->Notify(
|
| - content::NOTIFICATION_REPOST_WARNING_SHOWN,
|
| - content::Source<NavigationController>(this),
|
| - content::NotificationService::NoDetails());
|
| + NotificationService::current()->Notify(
|
| + NOTIFICATION_REPOST_WARNING_SHOWN,
|
| + Source<NavigationController>(this),
|
| + NotificationService::NoDetails());
|
|
|
| pending_reload_ = reload_type;
|
| web_contents_->Activate();
|
| @@ -356,8 +340,7 @@
|
| // See Chromium issue 96041.
|
| entries_[pending_entry_index_]->SetTitle(string16());
|
|
|
| - entries_[pending_entry_index_]->SetTransitionType(
|
| - content::PAGE_TRANSITION_RELOAD);
|
| + entries_[pending_entry_index_]->SetTransitionType(PAGE_TRANSITION_RELOAD);
|
| }
|
|
|
| NavigateToPendingEntry(reload_type);
|
| @@ -407,10 +390,10 @@
|
| // result in a download or a 'no content' response (e.g., a mailto: URL).
|
| DiscardNonCommittedEntriesInternal();
|
| pending_entry_ = entry;
|
| - content::NotificationService::current()->Notify(
|
| - content::NOTIFICATION_NAV_ENTRY_PENDING,
|
| - content::Source<NavigationController>(this),
|
| - content::Details<NavigationEntry>(entry));
|
| + NotificationService::current()->Notify(
|
| + NOTIFICATION_NAV_ENTRY_PENDING,
|
| + Source<NavigationController>(this),
|
| + Details<NavigationEntry>(entry));
|
| NavigateToPendingEntry(NO_RELOAD);
|
| }
|
|
|
| @@ -516,9 +499,9 @@
|
|
|
| pending_entry_index_ = current_index - 1;
|
| entries_[pending_entry_index_]->SetTransitionType(
|
| - content::PageTransitionFromInt(
|
| + PageTransitionFromInt(
|
| entries_[pending_entry_index_]->GetTransitionType() |
|
| - content::PAGE_TRANSITION_FORWARD_BACK));
|
| + PAGE_TRANSITION_FORWARD_BACK));
|
| NavigateToPendingEntry(NO_RELOAD);
|
| }
|
|
|
| @@ -542,9 +525,9 @@
|
| pending_entry_index_++;
|
|
|
| entries_[pending_entry_index_]->SetTransitionType(
|
| - content::PageTransitionFromInt(
|
| + PageTransitionFromInt(
|
| entries_[pending_entry_index_]->GetTransitionType() |
|
| - content::PAGE_TRANSITION_FORWARD_BACK));
|
| + PAGE_TRANSITION_FORWARD_BACK));
|
| NavigateToPendingEntry(NO_RELOAD);
|
| }
|
|
|
| @@ -569,9 +552,9 @@
|
|
|
| pending_entry_index_ = index;
|
| entries_[pending_entry_index_]->SetTransitionType(
|
| - content::PageTransitionFromInt(
|
| + PageTransitionFromInt(
|
| entries_[pending_entry_index_]->GetTransitionType() |
|
| - content::PAGE_TRANSITION_FORWARD_BACK));
|
| + PAGE_TRANSITION_FORWARD_BACK));
|
| NavigateToPendingEntry(NO_RELOAD);
|
| }
|
|
|
| @@ -612,8 +595,8 @@
|
|
|
| void NavigationControllerImpl::LoadURL(
|
| const GURL& url,
|
| - const content::Referrer& referrer,
|
| - content::PageTransition transition,
|
| + const Referrer& referrer,
|
| + PageTransition transition,
|
| const std::string& extra_headers) {
|
| LoadURLParams params(url);
|
| params.referrer = referrer;
|
| @@ -623,7 +606,7 @@
|
| }
|
|
|
| void NavigationControllerImpl::LoadURLWithParams(const LoadURLParams& params) {
|
| - if (content::HandleDebugURL(params.url, params.transition_type))
|
| + if (HandleDebugURL(params.url, params.transition_type))
|
| return;
|
|
|
| // Checks based on params.load_type.
|
| @@ -706,7 +689,7 @@
|
|
|
| bool NavigationControllerImpl::RendererDidNavigate(
|
| const ViewHostMsg_FrameNavigate_Params& params,
|
| - content::LoadCommittedDetails* details) {
|
| + LoadCommittedDetails* details) {
|
|
|
| // Save the previous state before we clobber it.
|
| if (GetLastCommittedEntry()) {
|
| @@ -736,34 +719,33 @@
|
| details->type = ClassifyNavigation(params);
|
|
|
| switch (details->type) {
|
| - case content::NAVIGATION_TYPE_NEW_PAGE:
|
| + case NAVIGATION_TYPE_NEW_PAGE:
|
| RendererDidNavigateToNewPage(params, details->did_replace_entry);
|
| break;
|
| - case content::NAVIGATION_TYPE_EXISTING_PAGE:
|
| + case NAVIGATION_TYPE_EXISTING_PAGE:
|
| RendererDidNavigateToExistingPage(params);
|
| break;
|
| - case content::NAVIGATION_TYPE_SAME_PAGE:
|
| + case NAVIGATION_TYPE_SAME_PAGE:
|
| RendererDidNavigateToSamePage(params);
|
| break;
|
| - case content::NAVIGATION_TYPE_IN_PAGE:
|
| + case NAVIGATION_TYPE_IN_PAGE:
|
| RendererDidNavigateInPage(params, &details->did_replace_entry);
|
| break;
|
| - case content::NAVIGATION_TYPE_NEW_SUBFRAME:
|
| + case NAVIGATION_TYPE_NEW_SUBFRAME:
|
| RendererDidNavigateNewSubframe(params);
|
| break;
|
| - case content::NAVIGATION_TYPE_AUTO_SUBFRAME:
|
| + case NAVIGATION_TYPE_AUTO_SUBFRAME:
|
| if (!RendererDidNavigateAutoSubframe(params))
|
| return false;
|
| break;
|
| - case content::NAVIGATION_TYPE_NAV_IGNORE:
|
| + case NAVIGATION_TYPE_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
|
| // the caller that nothing has happened.
|
| if (pending_entry_) {
|
| DiscardNonCommittedEntries();
|
| - web_contents_->NotifyNavigationStateChanged(
|
| - content::INVALIDATE_TYPE_URL);
|
| + web_contents_->NotifyNavigationStateChanged(INVALIDATE_TYPE_URL);
|
| }
|
| return false;
|
| default:
|
| @@ -800,7 +782,7 @@
|
| // Now prep the rest of the details for the notification and broadcast.
|
| details->entry = active_entry;
|
| details->is_main_frame =
|
| - content::PageTransitionIsMainFrame(params.transition);
|
| + PageTransitionIsMainFrame(params.transition);
|
| details->serialized_security_info = params.security_info;
|
| details->http_status_code = params.http_status_code;
|
| NotifyNavigationEntryCommitted(details);
|
| @@ -808,7 +790,7 @@
|
| return true;
|
| }
|
|
|
| -content::NavigationType NavigationControllerImpl::ClassifyNavigation(
|
| +NavigationType NavigationControllerImpl::ClassifyNavigation(
|
| const ViewHostMsg_FrameNavigate_Params& params) const {
|
| if (params.page_id == -1) {
|
| // The renderer generates the page IDs, and so if it gives us the invalid
|
| @@ -829,15 +811,15 @@
|
| // list.
|
| //
|
| // In these cases, there's nothing we can do with them, so ignore.
|
| - return content::NAVIGATION_TYPE_NAV_IGNORE;
|
| + return NAVIGATION_TYPE_NAV_IGNORE;
|
| }
|
|
|
| if (params.page_id > web_contents_->GetMaxPageID()) {
|
| // Greater page IDs than we've ever seen before are new pages. We may or may
|
| // not have a pending entry for the page, and this may or may not be the
|
| // main frame.
|
| - if (content::PageTransitionIsMainFrame(params.transition))
|
| - return content::NAVIGATION_TYPE_NEW_PAGE;
|
| + if (PageTransitionIsMainFrame(params.transition))
|
| + return NAVIGATION_TYPE_NEW_PAGE;
|
|
|
| // When this is a new subframe navigation, we should have a committed page
|
| // for which it's a suframe in. This may not be the case when an iframe is
|
| @@ -845,10 +827,10 @@
|
| // 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 content::NAVIGATION_TYPE_NAV_IGNORE;
|
| + return NAVIGATION_TYPE_NAV_IGNORE;
|
|
|
| // Valid subframe navigation.
|
| - return content::NAVIGATION_TYPE_NEW_SUBFRAME;
|
| + return NAVIGATION_TYPE_NEW_SUBFRAME;
|
| }
|
|
|
| // Now we know that the notification is for an existing page. Find that entry.
|
| @@ -864,7 +846,7 @@
|
| // Because the unknown entry has committed, we risk showing the wrong URL in
|
| // release builds. Instead, we'll kill the renderer process to be safe.
|
| LOG(ERROR) << "terminating renderer for bad navigation: " << params.url;
|
| - content::RecordAction(UserMetricsAction("BadMessageTerminate_NC"));
|
| + RecordAction(UserMetricsAction("BadMessageTerminate_NC"));
|
|
|
| // Temporary code so we can get more information. Format:
|
| // http://url/foo.html#page1#max3#frame1#ids:2_Nx,1_1x,3_2
|
| @@ -895,16 +877,16 @@
|
| static_cast<RenderViewHostImpl*>(
|
| web_contents_->GetRenderViewHost())->Send(
|
| new ViewMsg_TempCrashWithData(url));
|
| - return content::NAVIGATION_TYPE_NAV_IGNORE;
|
| + return NAVIGATION_TYPE_NAV_IGNORE;
|
| }
|
| NavigationEntryImpl* existing_entry = entries_[existing_entry_index].get();
|
|
|
| - if (!content::PageTransitionIsMainFrame(params.transition)) {
|
| + if (!PageTransitionIsMainFrame(params.transition)) {
|
| // All manual subframes would get new IDs and were handled above, so we
|
| // know this is auto. Since the current page was found in the navigation
|
| // entry list, we're guaranteed to have a last committed entry.
|
| DCHECK(GetLastCommittedEntry());
|
| - return content::NAVIGATION_TYPE_AUTO_SUBFRAME;
|
| + return NAVIGATION_TYPE_AUTO_SUBFRAME;
|
| }
|
|
|
| // Anything below here we know is a main frame navigation.
|
| @@ -919,7 +901,7 @@
|
| // (the user doesn't want to have a new back/forward entry when they do
|
| // this). If this matches the last committed entry, we want to just ignore
|
| // the pending entry and go back to where we were (the "existing entry").
|
| - return content::NAVIGATION_TYPE_SAME_PAGE;
|
| + return NAVIGATION_TYPE_SAME_PAGE;
|
| }
|
|
|
| // Any toplevel navigations with the same base (minus the reference fragment)
|
| @@ -929,20 +911,20 @@
|
| // an encoding override (it always sends a navigation request).
|
| if (AreURLsInPageNavigation(existing_entry->GetURL(), params.url,
|
| params.was_within_same_page)) {
|
| - return content::NAVIGATION_TYPE_IN_PAGE;
|
| + return NAVIGATION_TYPE_IN_PAGE;
|
| }
|
|
|
| // Since we weeded out "new" navigations above, we know this is an existing
|
| // (back/forward) navigation.
|
| - return content::NAVIGATION_TYPE_EXISTING_PAGE;
|
| + return NAVIGATION_TYPE_EXISTING_PAGE;
|
| }
|
|
|
| bool NavigationControllerImpl::IsRedirect(
|
| const ViewHostMsg_FrameNavigate_Params& params) {
|
| // For main frame transition, we judge by params.transition.
|
| // Otherwise, by params.redirects.
|
| - if (content::PageTransitionIsMainFrame(params.transition)) {
|
| - return content::PageTransitionIsRedirect(params.transition);
|
| + if (PageTransitionIsMainFrame(params.transition)) {
|
| + return PageTransitionIsRedirect(params.transition);
|
| }
|
| return params.redirects.size() > 1;
|
| }
|
| @@ -960,7 +942,7 @@
|
| // Don't use the page type from the pending entry. Some interstitial page
|
| // may have set the type to interstitial. Once we commit, however, the page
|
| // type must always be normal.
|
| - new_entry->set_page_type(content::PAGE_TYPE_NORMAL);
|
| + new_entry->set_page_type(PAGE_TYPE_NORMAL);
|
| update_virtual_url = new_entry->update_virtual_url_with_url();
|
| } else {
|
| new_entry = new NavigationEntryImpl;
|
| @@ -1000,7 +982,7 @@
|
| void NavigationControllerImpl::RendererDidNavigateToExistingPage(
|
| const ViewHostMsg_FrameNavigate_Params& params) {
|
| // We should only get here for main frame navigations.
|
| - DCHECK(content::PageTransitionIsMainFrame(params.transition));
|
| + DCHECK(PageTransitionIsMainFrame(params.transition));
|
|
|
| // This is a back/forward navigation. The existing page for the ID is
|
| // guaranteed to exist by ClassifyNavigation, and we just need to update it
|
| @@ -1066,7 +1048,7 @@
|
|
|
| void NavigationControllerImpl::RendererDidNavigateInPage(
|
| const ViewHostMsg_FrameNavigate_Params& params, bool* did_replace_entry) {
|
| - DCHECK(content::PageTransitionIsMainFrame(params.transition)) <<
|
| + DCHECK(PageTransitionIsMainFrame(params.transition)) <<
|
| "WebKit should only tell us about in-page navs for the main frame.";
|
| // We're guaranteed to have an entry for this one.
|
| NavigationEntryImpl* existing_entry = GetEntryWithPageID(
|
| @@ -1094,8 +1076,8 @@
|
|
|
| void NavigationControllerImpl::RendererDidNavigateNewSubframe(
|
| const ViewHostMsg_FrameNavigate_Params& params) {
|
| - if (content::PageTransitionStripQualifier(params.transition) ==
|
| - content::PAGE_TRANSITION_AUTO_SUBFRAME) {
|
| + if (PageTransitionStripQualifier(params.transition) ==
|
| + PAGE_TRANSITION_AUTO_SUBFRAME) {
|
| // This is not user-initiated. Ignore.
|
| return;
|
| }
|
| @@ -1298,7 +1280,7 @@
|
|
|
| void NavigationControllerImpl::SetSessionStorageNamespace(
|
| const std::string& partition_id,
|
| - content::SessionStorageNamespace* session_storage_namespace) {
|
| + SessionStorageNamespace* session_storage_namespace) {
|
| if (!session_storage_namespace)
|
| return;
|
|
|
| @@ -1322,8 +1304,7 @@
|
| }
|
|
|
| SessionStorageNamespace*
|
| -NavigationControllerImpl::GetSessionStorageNamespace(
|
| - content::SiteInstance* instance) {
|
| +NavigationControllerImpl::GetSessionStorageNamespace(SiteInstance* instance) {
|
| std::string partition_id;
|
| if (instance) {
|
| // TODO(ajwong): When GetDefaultSessionStorageNamespace() goes away, remove
|
| @@ -1342,7 +1323,7 @@
|
| //
|
| // TODO(ajwong): Should this use the |partition_id| directly rather than
|
| // re-lookup via |instance|? http://crbug.com/142685
|
| - content::StoragePartition* partition =
|
| + StoragePartition* partition =
|
| BrowserContext::GetStoragePartition(browser_context_, instance);
|
| SessionStorageNamespaceImpl* session_storage_namespace =
|
| new SessionStorageNamespaceImpl(
|
| @@ -1400,7 +1381,7 @@
|
|
|
| void NavigationControllerImpl::InsertOrReplaceEntry(NavigationEntryImpl* entry,
|
| bool replace) {
|
| - DCHECK(entry->GetTransitionType() != content::PAGE_TRANSITION_AUTO_SUBFRAME);
|
| + DCHECK(entry->GetTransitionType() != PAGE_TRANSITION_AUTO_SUBFRAME);
|
|
|
| // Copy the pending entry's unique ID to the committed entry.
|
| // I don't know if pending_entry_index_ can be other than -1 here.
|
| @@ -1465,7 +1446,7 @@
|
| (entries_[pending_entry_index_]->restore_type() ==
|
| NavigationEntryImpl::RESTORE_NONE) &&
|
| (entries_[pending_entry_index_]->GetTransitionType() &
|
| - content::PAGE_TRANSITION_FORWARD_BACK)) {
|
| + PAGE_TRANSITION_FORWARD_BACK)) {
|
| web_contents_->Stop();
|
|
|
| // If an interstitial page is showing, we want to close it to get back
|
| @@ -1508,10 +1489,10 @@
|
| }
|
|
|
| void NavigationControllerImpl::NotifyNavigationEntryCommitted(
|
| - content::LoadCommittedDetails* details) {
|
| + LoadCommittedDetails* details) {
|
| details->entry = GetActiveEntry();
|
| - content::NotificationDetails notification_details =
|
| - content::Details<content::LoadCommittedDetails>(details);
|
| + NotificationDetails notification_details =
|
| + Details<LoadCommittedDetails>(details);
|
|
|
| // We need to notify the ssl_manager_ before the web_contents_ so the
|
| // location bar will have up-to-date information about the security style
|
| @@ -1523,9 +1504,9 @@
|
| // notification below instead.
|
| web_contents_->NotifyNavigationStateChanged(kInvalidateAll);
|
|
|
| - content::NotificationService::current()->Notify(
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| - content::Source<NavigationController>(this),
|
| + NotificationService::current()->Notify(
|
| + NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| + Source<NavigationController>(this),
|
| notification_details);
|
| }
|
|
|
| @@ -1533,7 +1514,7 @@
|
| size_t NavigationControllerImpl::max_entry_count() {
|
| if (max_entry_count_for_testing_ != kMaxEntryCountForTestingNotSet)
|
| return max_entry_count_for_testing_;
|
| - return content::kMaxSessionHistoryEntries;
|
| + return kMaxSessionHistoryEntries;
|
| }
|
|
|
| void NavigationControllerImpl::SetActive(bool is_active) {
|
| @@ -1554,13 +1535,13 @@
|
|
|
| void NavigationControllerImpl::NotifyEntryChanged(const NavigationEntry* entry,
|
| int index) {
|
| - content::EntryChangedDetails det;
|
| + EntryChangedDetails det;
|
| det.changed_entry = entry;
|
| det.index = index;
|
| - content::NotificationService::current()->Notify(
|
| - content::NOTIFICATION_NAV_ENTRY_CHANGED,
|
| - content::Source<NavigationController>(this),
|
| - content::Details<content::EntryChangedDetails>(&det));
|
| + NotificationService::current()->Notify(
|
| + NOTIFICATION_NAV_ENTRY_CHANGED,
|
| + Source<NavigationController>(this),
|
| + Details<EntryChangedDetails>(&det));
|
| }
|
|
|
| void NavigationControllerImpl::FinishRestore(int selected_index,
|
| @@ -1615,7 +1596,7 @@
|
| for (int i = 0; i < max_index; i++) {
|
| // When cloning a tab, copy all entries except interstitial pages
|
| if (source.entries_[i].get()->GetPageType() !=
|
| - content::PAGE_TYPE_INTERSTITIAL) {
|
| + PAGE_TYPE_INTERSTITIAL) {
|
| entries_.insert(entries_.begin() + insert_index++,
|
| linked_ptr<NavigationEntryImpl>(
|
| new NavigationEntryImpl(*source.entries_[i])));
|
| @@ -1627,3 +1608,5 @@
|
| const base::Callback<base::Time()>& get_timestamp_callback) {
|
| get_timestamp_callback_ = get_timestamp_callback;
|
| }
|
| +
|
| +} // namespace content
|
|
|