Bug 1406161 - Part 5: Move LoadType convertion functions to nsDocShellLoadTypes.h. r?smaug
MozReview-Commit-ID: Ccw7cDE20m3
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -277,67 +277,16 @@ FavorPerformanceHint(bool aPerfOverStarv
if (appShell) {
appShell->FavorPerformanceHint(
aPerfOverStarvation,
Preferences::GetUint("docshell.event_starvation_delay_hint",
NS_EVENT_STARVATION_DELAY_HINT));
}
}
-static nsDOMNavigationTiming::Type
-ConvertLoadTypeToNavigationType(uint32_t aLoadType)
-{
- // Not initialized, assume it's normal load.
- if (aLoadType == 0) {
- aLoadType = LOAD_NORMAL;
- }
-
- auto result = nsDOMNavigationTiming::TYPE_RESERVED;
- switch (aLoadType) {
- case LOAD_NORMAL:
- case LOAD_NORMAL_EXTERNAL:
- case LOAD_NORMAL_BYPASS_CACHE:
- case LOAD_NORMAL_BYPASS_PROXY:
- case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
- case LOAD_NORMAL_REPLACE:
- case LOAD_NORMAL_ALLOW_MIXED_CONTENT:
- case LOAD_LINK:
- case LOAD_STOP_CONTENT:
- case LOAD_REPLACE_BYPASS_CACHE:
- result = nsDOMNavigationTiming::TYPE_NAVIGATE;
- break;
- case LOAD_HISTORY:
- result = nsDOMNavigationTiming::TYPE_BACK_FORWARD;
- break;
- case LOAD_RELOAD_NORMAL:
- case LOAD_RELOAD_CHARSET_CHANGE:
- case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE:
- case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE:
- case LOAD_RELOAD_BYPASS_CACHE:
- case LOAD_RELOAD_BYPASS_PROXY:
- case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
- case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
- result = nsDOMNavigationTiming::TYPE_RELOAD;
- break;
- case LOAD_STOP_CONTENT_AND_REPLACE:
- case LOAD_REFRESH:
- case LOAD_BYPASS_HISTORY:
- case LOAD_ERROR_PAGE:
- case LOAD_PUSHSTATE:
- result = nsDOMNavigationTiming::TYPE_RESERVED;
- break;
- default:
- // NS_NOTREACHED("Unexpected load type value");
- result = nsDOMNavigationTiming::TYPE_RESERVED;
- break;
- }
-
- return result;
-}
-
static nsISHEntry* GetRootSHEntry(nsISHEntry* aEntry);
static void
IncreasePrivateDocShellCount()
{
gNumberOfPrivateDocShells++;
if (gNumberOfPrivateDocShells > 1 ||
!XRE_IsContentProcess()) {
@@ -705,181 +654,16 @@ nsDocShell::GetInterface(const nsIID& aI
} else {
return nsDocLoader::GetInterface(aIID, aSink);
}
NS_IF_ADDREF(((nsISupports*)*aSink));
return *aSink ? NS_OK : NS_NOINTERFACE;
}
-uint32_t
-nsDocShell::ConvertDocShellLoadInfoToLoadType(
- nsDocShellInfoLoadType aDocShellLoadType)
-{
- uint32_t loadType = LOAD_NORMAL;
-
- switch (aDocShellLoadType) {
- case nsIDocShellLoadInfo::loadNormal:
- loadType = LOAD_NORMAL;
- break;
- case nsIDocShellLoadInfo::loadNormalReplace:
- loadType = LOAD_NORMAL_REPLACE;
- break;
- case nsIDocShellLoadInfo::loadNormalExternal:
- loadType = LOAD_NORMAL_EXTERNAL;
- break;
- case nsIDocShellLoadInfo::loadHistory:
- loadType = LOAD_HISTORY;
- break;
- case nsIDocShellLoadInfo::loadNormalBypassCache:
- loadType = LOAD_NORMAL_BYPASS_CACHE;
- break;
- case nsIDocShellLoadInfo::loadNormalBypassProxy:
- loadType = LOAD_NORMAL_BYPASS_PROXY;
- break;
- case nsIDocShellLoadInfo::loadNormalBypassProxyAndCache:
- loadType = LOAD_NORMAL_BYPASS_PROXY_AND_CACHE;
- break;
- case nsIDocShellLoadInfo::loadNormalAllowMixedContent:
- loadType = LOAD_NORMAL_ALLOW_MIXED_CONTENT;
- break;
- case nsIDocShellLoadInfo::loadReloadNormal:
- loadType = LOAD_RELOAD_NORMAL;
- break;
- case nsIDocShellLoadInfo::loadReloadCharsetChange:
- loadType = LOAD_RELOAD_CHARSET_CHANGE;
- break;
- case nsIDocShellLoadInfo::loadReloadCharsetChangeBypassCache:
- loadType = LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE;
- break;
- case nsIDocShellLoadInfo::loadReloadCharsetChangeBypassProxyAndCache:
- loadType = LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE;
- break;
- case nsIDocShellLoadInfo::loadReloadBypassCache:
- loadType = LOAD_RELOAD_BYPASS_CACHE;
- break;
- case nsIDocShellLoadInfo::loadReloadBypassProxy:
- loadType = LOAD_RELOAD_BYPASS_PROXY;
- break;
- case nsIDocShellLoadInfo::loadReloadBypassProxyAndCache:
- loadType = LOAD_RELOAD_BYPASS_PROXY_AND_CACHE;
- break;
- case nsIDocShellLoadInfo::loadLink:
- loadType = LOAD_LINK;
- break;
- case nsIDocShellLoadInfo::loadRefresh:
- loadType = LOAD_REFRESH;
- break;
- case nsIDocShellLoadInfo::loadBypassHistory:
- loadType = LOAD_BYPASS_HISTORY;
- break;
- case nsIDocShellLoadInfo::loadStopContent:
- loadType = LOAD_STOP_CONTENT;
- break;
- case nsIDocShellLoadInfo::loadStopContentAndReplace:
- loadType = LOAD_STOP_CONTENT_AND_REPLACE;
- break;
- case nsIDocShellLoadInfo::loadPushState:
- loadType = LOAD_PUSHSTATE;
- break;
- case nsIDocShellLoadInfo::loadReplaceBypassCache:
- loadType = LOAD_REPLACE_BYPASS_CACHE;
- break;
- case nsIDocShellLoadInfo::loadReloadMixedContent:
- loadType = LOAD_RELOAD_ALLOW_MIXED_CONTENT;
- break;
- default:
- NS_NOTREACHED("Unexpected nsDocShellInfoLoadType value");
- }
-
- return loadType;
-}
-
-nsDocShellInfoLoadType
-nsDocShell::ConvertLoadTypeToDocShellLoadInfo(uint32_t aLoadType)
-{
- nsDocShellInfoLoadType docShellLoadType = nsIDocShellLoadInfo::loadNormal;
- switch (aLoadType) {
- case LOAD_NORMAL:
- docShellLoadType = nsIDocShellLoadInfo::loadNormal;
- break;
- case LOAD_NORMAL_REPLACE:
- docShellLoadType = nsIDocShellLoadInfo::loadNormalReplace;
- break;
- case LOAD_NORMAL_EXTERNAL:
- docShellLoadType = nsIDocShellLoadInfo::loadNormalExternal;
- break;
- case LOAD_NORMAL_BYPASS_CACHE:
- docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassCache;
- break;
- case LOAD_NORMAL_BYPASS_PROXY:
- docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassProxy;
- break;
- case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
- docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassProxyAndCache;
- break;
- case LOAD_NORMAL_ALLOW_MIXED_CONTENT:
- docShellLoadType = nsIDocShellLoadInfo::loadNormalAllowMixedContent;
- break;
- case LOAD_HISTORY:
- docShellLoadType = nsIDocShellLoadInfo::loadHistory;
- break;
- case LOAD_RELOAD_NORMAL:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadNormal;
- break;
- case LOAD_RELOAD_CHARSET_CHANGE:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadCharsetChange;
- break;
- case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadCharsetChangeBypassCache;
- break;
- case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadCharsetChangeBypassProxyAndCache;
- break;
- case LOAD_RELOAD_BYPASS_CACHE:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadBypassCache;
- break;
- case LOAD_RELOAD_BYPASS_PROXY:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadBypassProxy;
- break;
- case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadBypassProxyAndCache;
- break;
- case LOAD_LINK:
- docShellLoadType = nsIDocShellLoadInfo::loadLink;
- break;
- case LOAD_REFRESH:
- docShellLoadType = nsIDocShellLoadInfo::loadRefresh;
- break;
- case LOAD_BYPASS_HISTORY:
- case LOAD_ERROR_PAGE:
- docShellLoadType = nsIDocShellLoadInfo::loadBypassHistory;
- break;
- case LOAD_STOP_CONTENT:
- docShellLoadType = nsIDocShellLoadInfo::loadStopContent;
- break;
- case LOAD_STOP_CONTENT_AND_REPLACE:
- docShellLoadType = nsIDocShellLoadInfo::loadStopContentAndReplace;
- break;
- case LOAD_PUSHSTATE:
- docShellLoadType = nsIDocShellLoadInfo::loadPushState;
- break;
- case LOAD_REPLACE_BYPASS_CACHE:
- docShellLoadType = nsIDocShellLoadInfo::loadReplaceBypassCache;
- break;
- case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
- docShellLoadType = nsIDocShellLoadInfo::loadReloadMixedContent;
- break;
- default:
- NS_NOTREACHED("Unexpected load type value");
- }
-
- return docShellLoadType;
-}
-
NS_IMETHODIMP
nsDocShell::LoadURI(nsIURI* aURI,
nsIDocShellLoadInfo* aLoadInfo,
uint32_t aLoadFlags,
bool aFirstParty)
{
NS_PRECONDITION(aLoadInfo || (aLoadFlags & EXTRA_LOAD_FLAGS) == 0,
"Unexpected flags");
@@ -927,17 +711,17 @@ nsDocShell::LoadURI(nsIURI* aURI,
if (aLoadInfo) {
aLoadInfo->GetReferrer(getter_AddRefs(referrer));
aLoadInfo->GetOriginalURI(getter_AddRefs(originalURI));
GetMaybeResultPrincipalURI(aLoadInfo, resultPrincipalURI);
aLoadInfo->GetLoadReplace(&loadReplace);
nsDocShellInfoLoadType lt = nsIDocShellLoadInfo::loadNormal;
aLoadInfo->GetLoadType(<);
// Get the appropriate loadType from nsIDocShellLoadInfo type
- loadType = ConvertDocShellLoadInfoToLoadType(lt);
+ loadType = ConvertDocShellInfoLoadTypeToLoadType(lt);
aLoadInfo->GetTriggeringPrincipal(getter_AddRefs(triggeringPrincipal));
aLoadInfo->GetInheritPrincipal(&inheritPrincipal);
aLoadInfo->GetPrincipalIsExplicit(&principalIsExplicit);
aLoadInfo->GetSHEntry(getter_AddRefs(shEntry));
aLoadInfo->GetTarget(getter_Copies(target));
aLoadInfo->GetPostDataStream(getter_AddRefs(postStream));
aLoadInfo->GetHeadersStream(getter_AddRefs(headersStream));
@@ -1271,17 +1055,17 @@ nsDocShell::LoadStream(nsIInputStream* a
}
uint32_t loadType = LOAD_NORMAL;
nsCOMPtr<nsIPrincipal> triggeringPrincipal;
if (aLoadInfo) {
nsDocShellInfoLoadType lt = nsIDocShellLoadInfo::loadNormal;
(void)aLoadInfo->GetLoadType(<);
// Get the appropriate LoadType from nsIDocShellLoadInfo type
- loadType = ConvertDocShellLoadInfoToLoadType(lt);
+ loadType = ConvertDocShellInfoLoadTypeToLoadType(lt);
aLoadInfo->GetTriggeringPrincipal(getter_AddRefs(triggeringPrincipal));
}
NS_ENSURE_SUCCESS(Stop(nsIWebNavigation::STOP_NETWORK), NS_ERROR_FAILURE);
mLoadType = loadType;
if (!triggeringPrincipal) {
@@ -4626,17 +4410,17 @@ nsDocShell::LoadURIWithOptions(const cha
popupState = openOverridden;
}
nsAutoPopupStatePusher statePusher(popupState);
bool forceAllowDataURI =
aLoadFlags & LOAD_FLAGS_FORCE_ALLOW_DATA_URI;
// Don't pass certain flags that aren't needed and end up confusing
- // ConvertLoadTypeToDocShellLoadInfo. We do need to ensure that they are
+ // ConvertLoadTypeToDocShellInfoLoadType. We do need to ensure that they are
// passed to LoadURI though, since it uses them.
uint32_t extraFlags = (aLoadFlags & EXTRA_LOAD_FLAGS);
aLoadFlags &= ~EXTRA_LOAD_FLAGS;
nsCOMPtr<nsIDocShellLoadInfo> loadInfo;
rv = CreateLoadInfo(getter_AddRefs(loadInfo));
if (NS_FAILED(rv)) {
return rv;
@@ -4648,17 +4432,17 @@ nsDocShell::LoadURIWithOptions(const cha
*/
uint32_t loadType;
if (aLoadFlags & LOAD_FLAGS_ALLOW_MIXED_CONTENT) {
loadType = MAKE_LOAD_TYPE(LOAD_NORMAL_ALLOW_MIXED_CONTENT, aLoadFlags);
} else {
loadType = MAKE_LOAD_TYPE(LOAD_NORMAL, aLoadFlags);
}
- loadInfo->SetLoadType(ConvertLoadTypeToDocShellLoadInfo(loadType));
+ loadInfo->SetLoadType(ConvertLoadTypeToDocShellInfoLoadType(loadType));
loadInfo->SetPostDataStream(postStream);
loadInfo->SetReferrer(aReferringURI);
loadInfo->SetReferrerPolicy(aReferrerPolicy);
loadInfo->SetHeadersStream(aHeaderStream);
loadInfo->SetBaseURI(aBaseURI);
loadInfo->SetTriggeringPrincipal(aTriggeringPrincipal);
loadInfo->SetForceAllowDataURI(forceAllowDataURI);
@@ -9924,17 +9708,17 @@ nsDocShell::InternalLoad(nsIURI* aURI,
SetMaybeResultPrincipalURI(loadInfo, aResultPrincipalURI);
loadInfo->SetLoadReplace(aLoadReplace);
loadInfo->SetTriggeringPrincipal(aTriggeringPrincipal);
loadInfo->SetInheritPrincipal(
aFlags & INTERNAL_LOAD_FLAGS_INHERIT_PRINCIPAL);
// Explicit principal because we do not want any guesses as to what the
// principal to inherit is: it should be aTriggeringPrincipal.
loadInfo->SetPrincipalIsExplicit(true);
- loadInfo->SetLoadType(ConvertLoadTypeToDocShellLoadInfo(LOAD_LINK));
+ loadInfo->SetLoadType(ConvertLoadTypeToDocShellInfoLoadType(LOAD_LINK));
loadInfo->SetForceAllowDataURI(aFlags & INTERNAL_LOAD_FLAGS_FORCE_ALLOW_DATA_URI);
rv = win->Open(NS_ConvertUTF8toUTF16(spec),
aWindowTarget, // window name
EmptyString(), // Features
loadInfo,
true, // aForceNoOpener
getter_AddRefs(newWin));
--- a/docshell/base/nsDocShell.h
+++ b/docshell/base/nsDocShell.h
@@ -229,20 +229,16 @@ public:
nsIDocShell** aDocShell = 0,
nsIRequest** aRequest = 0,
nsIPrincipal* aTriggeringPrincipal = nullptr) override;
NS_IMETHOD OnOverLink(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec) override;
NS_IMETHOD OnLeaveLink() override;
- nsDocShellInfoLoadType ConvertLoadTypeToDocShellLoadInfo(uint32_t aLoadType);
- uint32_t ConvertDocShellLoadInfoToLoadType(
- nsDocShellInfoLoadType aDocShellLoadType);
-
// Don't use NS_DECL_NSILOADCONTEXT because some of nsILoadContext's methods
// are shared with nsIDocShell (appID, etc.) and can't be declared twice.
NS_IMETHOD GetAssociatedWindow(mozIDOMWindowProxy**) override;
NS_IMETHOD GetTopWindow(mozIDOMWindowProxy**) override;
NS_IMETHOD GetTopFrameElement(nsIDOMElement**) override;
NS_IMETHOD GetNestedFrameId(uint64_t*) override;
NS_IMETHOD GetIsContent(bool*) override;
NS_IMETHOD GetUsePrivateBrowsing(bool*) override;
--- a/docshell/base/nsDocShellLoadTypes.h
+++ b/docshell/base/nsDocShellLoadTypes.h
@@ -4,17 +4,19 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsDocShellLoadTypes_h_
#define nsDocShellLoadTypes_h_
#ifdef MOZILLA_INTERNAL_API
+#include "nsDOMNavigationTiming.h"
#include "nsIDocShell.h"
+#include "nsIDocShellLoadInfo.h"
#include "nsIWebNavigation.h"
/**
* Load flag for error pages. This uses one of the reserved flag
* values from nsIWebNavigation.
*/
#define LOAD_FLAGS_ERROR_PAGE 0x0001U
@@ -67,16 +69,17 @@ enum LoadType
* Docshell. Instead, Docshell triggers the load itself when a
* consumer-triggered load failed.
*/
LOAD_ERROR_PAGE = MAKE_LOAD_TYPE(nsIDocShell::LOAD_CMD_NORMAL,
LOAD_FLAGS_ERROR_PAGE)
// NOTE: Adding a new value? Remember to update IsValidLoadType!
};
+
static inline bool
IsValidLoadType(uint32_t aLoadType)
{
switch (aLoadType) {
case LOAD_NORMAL:
case LOAD_NORMAL_REPLACE:
case LOAD_NORMAL_EXTERNAL:
case LOAD_NORMAL_BYPASS_CACHE:
@@ -112,10 +115,224 @@ IsForceReloadType(uint32_t aLoadType) {
case LOAD_RELOAD_BYPASS_PROXY:
case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
return true;
}
return false;
}
+static inline nsDocShellInfoLoadType
+ConvertLoadTypeToDocShellInfoLoadType(uint32_t aLoadType)
+{
+ nsDocShellInfoLoadType docShellLoadType = nsIDocShellLoadInfo::loadNormal;
+ switch (aLoadType) {
+ case LOAD_NORMAL:
+ docShellLoadType = nsIDocShellLoadInfo::loadNormal;
+ break;
+ case LOAD_NORMAL_REPLACE:
+ docShellLoadType = nsIDocShellLoadInfo::loadNormalReplace;
+ break;
+ case LOAD_NORMAL_EXTERNAL:
+ docShellLoadType = nsIDocShellLoadInfo::loadNormalExternal;
+ break;
+ case LOAD_NORMAL_BYPASS_CACHE:
+ docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassCache;
+ break;
+ case LOAD_NORMAL_BYPASS_PROXY:
+ docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassProxy;
+ break;
+ case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
+ docShellLoadType = nsIDocShellLoadInfo::loadNormalBypassProxyAndCache;
+ break;
+ case LOAD_NORMAL_ALLOW_MIXED_CONTENT:
+ docShellLoadType = nsIDocShellLoadInfo::loadNormalAllowMixedContent;
+ break;
+ case LOAD_HISTORY:
+ docShellLoadType = nsIDocShellLoadInfo::loadHistory;
+ break;
+ case LOAD_RELOAD_NORMAL:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadNormal;
+ break;
+ case LOAD_RELOAD_CHARSET_CHANGE:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadCharsetChange;
+ break;
+ case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadCharsetChangeBypassCache;
+ break;
+ case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadCharsetChangeBypassProxyAndCache;
+ break;
+ case LOAD_RELOAD_BYPASS_CACHE:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadBypassCache;
+ break;
+ case LOAD_RELOAD_BYPASS_PROXY:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadBypassProxy;
+ break;
+ case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadBypassProxyAndCache;
+ break;
+ case LOAD_LINK:
+ docShellLoadType = nsIDocShellLoadInfo::loadLink;
+ break;
+ case LOAD_REFRESH:
+ docShellLoadType = nsIDocShellLoadInfo::loadRefresh;
+ break;
+ case LOAD_BYPASS_HISTORY:
+ case LOAD_ERROR_PAGE:
+ docShellLoadType = nsIDocShellLoadInfo::loadBypassHistory;
+ break;
+ case LOAD_STOP_CONTENT:
+ docShellLoadType = nsIDocShellLoadInfo::loadStopContent;
+ break;
+ case LOAD_STOP_CONTENT_AND_REPLACE:
+ docShellLoadType = nsIDocShellLoadInfo::loadStopContentAndReplace;
+ break;
+ case LOAD_PUSHSTATE:
+ docShellLoadType = nsIDocShellLoadInfo::loadPushState;
+ break;
+ case LOAD_REPLACE_BYPASS_CACHE:
+ docShellLoadType = nsIDocShellLoadInfo::loadReplaceBypassCache;
+ break;
+ case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
+ docShellLoadType = nsIDocShellLoadInfo::loadReloadMixedContent;
+ break;
+ default:
+ NS_NOTREACHED("Unexpected load type value");
+ }
+
+ return docShellLoadType;
+}
+
+static inline uint32_t
+ConvertDocShellInfoLoadTypeToLoadType(nsDocShellInfoLoadType aDocShellLoadType)
+{
+ uint32_t loadType = LOAD_NORMAL;
+
+ switch (aDocShellLoadType) {
+ case nsIDocShellLoadInfo::loadNormal:
+ loadType = LOAD_NORMAL;
+ break;
+ case nsIDocShellLoadInfo::loadNormalReplace:
+ loadType = LOAD_NORMAL_REPLACE;
+ break;
+ case nsIDocShellLoadInfo::loadNormalExternal:
+ loadType = LOAD_NORMAL_EXTERNAL;
+ break;
+ case nsIDocShellLoadInfo::loadHistory:
+ loadType = LOAD_HISTORY;
+ break;
+ case nsIDocShellLoadInfo::loadNormalBypassCache:
+ loadType = LOAD_NORMAL_BYPASS_CACHE;
+ break;
+ case nsIDocShellLoadInfo::loadNormalBypassProxy:
+ loadType = LOAD_NORMAL_BYPASS_PROXY;
+ break;
+ case nsIDocShellLoadInfo::loadNormalBypassProxyAndCache:
+ loadType = LOAD_NORMAL_BYPASS_PROXY_AND_CACHE;
+ break;
+ case nsIDocShellLoadInfo::loadNormalAllowMixedContent:
+ loadType = LOAD_NORMAL_ALLOW_MIXED_CONTENT;
+ break;
+ case nsIDocShellLoadInfo::loadReloadNormal:
+ loadType = LOAD_RELOAD_NORMAL;
+ break;
+ case nsIDocShellLoadInfo::loadReloadCharsetChange:
+ loadType = LOAD_RELOAD_CHARSET_CHANGE;
+ break;
+ case nsIDocShellLoadInfo::loadReloadCharsetChangeBypassCache:
+ loadType = LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE;
+ break;
+ case nsIDocShellLoadInfo::loadReloadCharsetChangeBypassProxyAndCache:
+ loadType = LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE;
+ break;
+ case nsIDocShellLoadInfo::loadReloadBypassCache:
+ loadType = LOAD_RELOAD_BYPASS_CACHE;
+ break;
+ case nsIDocShellLoadInfo::loadReloadBypassProxy:
+ loadType = LOAD_RELOAD_BYPASS_PROXY;
+ break;
+ case nsIDocShellLoadInfo::loadReloadBypassProxyAndCache:
+ loadType = LOAD_RELOAD_BYPASS_PROXY_AND_CACHE;
+ break;
+ case nsIDocShellLoadInfo::loadLink:
+ loadType = LOAD_LINK;
+ break;
+ case nsIDocShellLoadInfo::loadRefresh:
+ loadType = LOAD_REFRESH;
+ break;
+ case nsIDocShellLoadInfo::loadBypassHistory:
+ loadType = LOAD_BYPASS_HISTORY;
+ break;
+ case nsIDocShellLoadInfo::loadStopContent:
+ loadType = LOAD_STOP_CONTENT;
+ break;
+ case nsIDocShellLoadInfo::loadStopContentAndReplace:
+ loadType = LOAD_STOP_CONTENT_AND_REPLACE;
+ break;
+ case nsIDocShellLoadInfo::loadPushState:
+ loadType = LOAD_PUSHSTATE;
+ break;
+ case nsIDocShellLoadInfo::loadReplaceBypassCache:
+ loadType = LOAD_REPLACE_BYPASS_CACHE;
+ break;
+ case nsIDocShellLoadInfo::loadReloadMixedContent:
+ loadType = LOAD_RELOAD_ALLOW_MIXED_CONTENT;
+ break;
+ default:
+ NS_NOTREACHED("Unexpected nsDocShellInfoLoadType value");
+ }
+
+ return loadType;
+}
+
+static inline nsDOMNavigationTiming::Type
+ConvertLoadTypeToNavigationType(uint32_t aLoadType)
+{
+ // Not initialized, assume it's normal load.
+ if (aLoadType == 0) {
+ aLoadType = LOAD_NORMAL;
+ }
+
+ auto result = nsDOMNavigationTiming::TYPE_RESERVED;
+ switch (aLoadType) {
+ case LOAD_NORMAL:
+ case LOAD_NORMAL_EXTERNAL:
+ case LOAD_NORMAL_BYPASS_CACHE:
+ case LOAD_NORMAL_BYPASS_PROXY:
+ case LOAD_NORMAL_BYPASS_PROXY_AND_CACHE:
+ case LOAD_NORMAL_REPLACE:
+ case LOAD_NORMAL_ALLOW_MIXED_CONTENT:
+ case LOAD_LINK:
+ case LOAD_STOP_CONTENT:
+ case LOAD_REPLACE_BYPASS_CACHE:
+ result = nsDOMNavigationTiming::TYPE_NAVIGATE;
+ break;
+ case LOAD_HISTORY:
+ result = nsDOMNavigationTiming::TYPE_BACK_FORWARD;
+ break;
+ case LOAD_RELOAD_NORMAL:
+ case LOAD_RELOAD_CHARSET_CHANGE:
+ case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_PROXY_AND_CACHE:
+ case LOAD_RELOAD_CHARSET_CHANGE_BYPASS_CACHE:
+ case LOAD_RELOAD_BYPASS_CACHE:
+ case LOAD_RELOAD_BYPASS_PROXY:
+ case LOAD_RELOAD_BYPASS_PROXY_AND_CACHE:
+ case LOAD_RELOAD_ALLOW_MIXED_CONTENT:
+ result = nsDOMNavigationTiming::TYPE_RELOAD;
+ break;
+ case LOAD_STOP_CONTENT_AND_REPLACE:
+ case LOAD_REFRESH:
+ case LOAD_BYPASS_HISTORY:
+ case LOAD_ERROR_PAGE:
+ case LOAD_PUSHSTATE:
+ result = nsDOMNavigationTiming::TYPE_RESERVED;
+ break;
+ default:
+ result = nsDOMNavigationTiming::TYPE_RESERVED;
+ break;
+ }
+
+ return result;
+}
+
#endif // MOZILLA_INTERNAL_API
#endif