зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1624550 - P2: Extract AddURIVisit internals into a helper. r=mak,farre
For use by both nsDocShell and DocumentLoadListener. Differential Revision: https://phabricator.services.mozilla.com/D72277
This commit is contained in:
Родитель
63cf313ca2
Коммит
e46c2905db
|
@ -11222,17 +11222,21 @@ void nsDocShell::SaveLastVisit(nsIChannel* aChannel, nsIURI* aURI,
|
|||
aChannelRedirectFlags);
|
||||
}
|
||||
|
||||
void nsDocShell::AddURIVisit(nsIURI* aURI, nsIURI* aPreviousURI,
|
||||
uint32_t aChannelRedirectFlags,
|
||||
uint32_t aResponseStatus) {
|
||||
/* static */ void nsDocShell::InternalAddURIVisit(
|
||||
nsIURI* aURI, nsIURI* aPreviousURI, uint32_t aChannelRedirectFlags,
|
||||
uint32_t aResponseStatus, BrowsingContext* aBrowsingContext,
|
||||
nsIWidget* aWidget, uint32_t aLoadType) {
|
||||
MOZ_ASSERT(aURI, "Visited URI is null!");
|
||||
MOZ_ASSERT(mLoadType != LOAD_ERROR_PAGE && mLoadType != LOAD_BYPASS_HISTORY,
|
||||
MOZ_ASSERT(aLoadType != LOAD_ERROR_PAGE && aLoadType != LOAD_BYPASS_HISTORY,
|
||||
"Do not add error or bypass pages to global history");
|
||||
|
||||
bool usePrivateBrowsing = false;
|
||||
aBrowsingContext->GetUsePrivateBrowsing(&usePrivateBrowsing);
|
||||
|
||||
// Only content-type docshells save URI visits. Also don't do
|
||||
// anything here if we're not supposed to use global history.
|
||||
if (mItemType != typeContent || !mBrowsingContext->GetUseGlobalHistory() ||
|
||||
UsePrivateBrowsing()) {
|
||||
if (!aBrowsingContext->IsContent() ||
|
||||
!aBrowsingContext->GetUseGlobalHistory() || usePrivateBrowsing) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -11241,7 +11245,7 @@ void nsDocShell::AddURIVisit(nsIURI* aURI, nsIURI* aPreviousURI,
|
|||
if (history) {
|
||||
uint32_t visitURIFlags = 0;
|
||||
|
||||
if (!IsFrame()) {
|
||||
if (aBrowsingContext->IsTop()) {
|
||||
visitURIFlags |= IHistory::TOP_LEVEL;
|
||||
}
|
||||
|
||||
|
@ -11272,10 +11276,19 @@ void nsDocShell::AddURIVisit(nsIURI* aURI, nsIURI* aPreviousURI,
|
|||
visitURIFlags |= IHistory::UNRECOVERABLE_ERROR;
|
||||
}
|
||||
|
||||
mozilla::Unused << history->VisitURI(aWidget, aURI, aPreviousURI,
|
||||
visitURIFlags);
|
||||
}
|
||||
}
|
||||
|
||||
void nsDocShell::AddURIVisit(nsIURI* aURI, nsIURI* aPreviousURI,
|
||||
uint32_t aChannelRedirectFlags,
|
||||
uint32_t aResponseStatus) {
|
||||
nsPIDOMWindowOuter* outer = GetWindow();
|
||||
nsCOMPtr<nsIWidget> widget = widget::WidgetUtils::DOMWindowToWidget(outer);
|
||||
(void)history->VisitURI(widget, aURI, aPreviousURI, visitURIFlags);
|
||||
}
|
||||
|
||||
InternalAddURIVisit(aURI, aPreviousURI, aChannelRedirectFlags,
|
||||
aResponseStatus, mBrowsingContext, widget, mLoadType);
|
||||
}
|
||||
|
||||
void nsDocShell::SavePreviousRedirectsAndLastVisit(
|
||||
|
|
|
@ -68,6 +68,7 @@ class EventTarget;
|
|||
namespace net {
|
||||
class LoadInfo;
|
||||
class DocumentChannelRedirect;
|
||||
class DocumentLoadListener;
|
||||
} // namespace net
|
||||
} // namespace mozilla
|
||||
|
||||
|
@ -538,6 +539,7 @@ class nsDocShell final : public nsDocLoader,
|
|||
friend class OnLinkClickEvent;
|
||||
friend class nsIDocShell;
|
||||
friend class mozilla::dom::BrowsingContext;
|
||||
friend class mozilla::net::DocumentLoadListener;
|
||||
|
||||
// It is necessary to allow adding a timeline marker wherever a docshell
|
||||
// instance is available. This operation happens frequently and needs to
|
||||
|
@ -792,6 +794,14 @@ class nsDocShell final : public nsDocLoader,
|
|||
uint32_t aChannelRedirectFlags,
|
||||
uint32_t aResponseStatus = 0);
|
||||
|
||||
/**
|
||||
* Internal helper funtion
|
||||
*/
|
||||
static void InternalAddURIVisit(
|
||||
nsIURI* aURI, nsIURI* aPreviousURI, uint32_t aChannelRedirectFlags,
|
||||
uint32_t aResponseStatus, mozilla::dom::BrowsingContext* aBrowsingContext,
|
||||
nsIWidget* aWidget, uint32_t aLoadType);
|
||||
|
||||
/**
|
||||
* Helper function that will add the redirect chain found in aRedirects using
|
||||
* IHistory (see AddURI and SaveLastVisit above for details)
|
||||
|
|
Загрузка…
Ссылка в новой задаче