commit fa30ece0dcdd38d07935bd360650ae5e015d3765
Author: Christoph Kerschbaumer <ckerschb(a)christophkerschbaumer.com>
Date: Mon Feb 15 13:57:44 2021 +0100
Bug 1542194: Set original frame src load. r=mattwoodrow, a=RyanVM
---
docshell/base/nsDocShell.cpp | 7 +++++++
ipc/glue/BackgroundUtils.cpp | 2 ++
netwerk/base/LoadInfo.cpp | 4 ++--
netwerk/base/LoadInfo.h | 14 +++++++-------
netwerk/ipc/NeckoChannelParams.ipdlh | 1 +
5 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index fcdbe4918064..43fb261a9f8a 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -9636,6 +9636,13 @@ nsresult nsDocShell::DoURILoad(nsDocShellLoadState* aLoadState,
loadInfo->SetHasValidUserGestureActivation(true);
}
+ // if this is an iframe load then store if it's the inital frame src load
+ if (nsContentUtils::InternalContentPolicyTypeToExternal(contentPolicyType) ==
+ nsIContentPolicy::TYPE_SUBDOCUMENT) {
+ loadInfo->SetOriginalFrameSrcLoad(
+ aLoadState->HasLoadFlags(INTERNAL_LOAD_FLAGS_ORIGINAL_FRAME_SRC));
+ }
+
/* Get the cache Key from SH */
uint32_t cacheKey = 0;
if (mLSHE) {
diff --git a/ipc/glue/BackgroundUtils.cpp b/ipc/glue/BackgroundUtils.cpp
index 1fd0b585f357..ecacef83c500 100644
--- a/ipc/glue/BackgroundUtils.cpp
+++ b/ipc/glue/BackgroundUtils.cpp
@@ -522,6 +522,7 @@ nsresult LoadInfoToLoadInfoArgs(nsILoadInfo* aLoadInfo,
aLoadInfo->GetAllowInsecureRedirectToDataURI(),
aLoadInfo->GetBypassCORSChecks(),
aLoadInfo->GetSkipContentPolicyCheckForWebRequest(),
+ aLoadInfo->GetOriginalFrameSrcLoad(),
aLoadInfo->GetForceInheritPrincipalDropped(),
aLoadInfo->GetInnerWindowID(), aLoadInfo->GetOuterWindowID(),
aLoadInfo->GetParentOuterWindowID(), aLoadInfo->GetTopOuterWindowID(),
@@ -748,6 +749,7 @@ nsresult LoadInfoArgsToLoadInfo(
loadInfoArgs.allowInsecureRedirectToDataURI(),
loadInfoArgs.bypassCORSChecks(),
loadInfoArgs.skipContentPolicyCheckForWebRequest(),
+ loadInfoArgs.originalFrameSrcLoad(),
loadInfoArgs.forceInheritPrincipalDropped(), loadInfoArgs.innerWindowID(),
loadInfoArgs.outerWindowID(), loadInfoArgs.parentOuterWindowID(),
loadInfoArgs.topOuterWindowID(), loadInfoArgs.frameOuterWindowID(),
diff --git a/netwerk/base/LoadInfo.cpp b/netwerk/base/LoadInfo.cpp
index 17468a7d3d0b..3a3d3acd25cb 100644
--- a/netwerk/base/LoadInfo.cpp
+++ b/netwerk/base/LoadInfo.cpp
@@ -826,7 +826,7 @@ LoadInfo::LoadInfo(
bool aBrowserUpgradeInsecureRequests,
bool aBrowserWouldUpgradeInsecureRequests, bool aForceAllowDataURI,
bool aAllowInsecureRedirectToDataURI, bool aBypassCORSChecks,
- bool aSkipContentPolicyCheckForWebRequest,
+ bool aSkipContentPolicyCheckForWebRequest, bool aOriginalFrameSrcLoad,
bool aForceInheritPrincipalDropped, uint64_t aInnerWindowID,
uint64_t aOuterWindowID, uint64_t aParentOuterWindowID,
uint64_t aTopOuterWindowID, uint64_t aFrameOuterWindowID,
@@ -876,7 +876,7 @@ LoadInfo::LoadInfo(
mBypassCORSChecks(aBypassCORSChecks),
mSkipContentPolicyCheckForWebRequest(
aSkipContentPolicyCheckForWebRequest),
- mOriginalFrameSrcLoad(false),
+ mOriginalFrameSrcLoad(aOriginalFrameSrcLoad),
mForceInheritPrincipalDropped(aForceInheritPrincipalDropped),
mInnerWindowID(aInnerWindowID),
mOuterWindowID(aOuterWindowID),
diff --git a/netwerk/base/LoadInfo.h b/netwerk/base/LoadInfo.h
index caf5e7debee8..60b9adbf08e4 100644
--- a/netwerk/base/LoadInfo.h
+++ b/netwerk/base/LoadInfo.h
@@ -152,13 +152,13 @@ class LoadInfo final : public nsILoadInfo {
bool aBrowserWouldUpgradeInsecureRequests, bool aForceAllowDataURI,
bool aAllowInsecureRedirectToDataURI, bool aBypassCORSChecks,
bool aSkipContentPolicyCheckForWebRequest,
- bool aForceInheritPrincipalDropped, uint64_t aInnerWindowID,
- uint64_t aOuterWindowID, uint64_t aParentOuterWindowID,
- uint64_t aTopOuterWindowID, uint64_t aFrameOuterWindowID,
- uint64_t aBrowsingContextID, uint64_t aFrameBrowsingContextID,
- bool aInitialSecurityCheckDone, bool aIsThirdPartyRequest,
- bool aIsThirdPartyContextToTopWindow, bool aIsFormSubmission,
- bool aSendCSPViolationEvents,
+ bool aOriginalFrameSrcLoad, bool aForceInheritPrincipalDropped,
+ uint64_t aInnerWindowID, uint64_t aOuterWindowID,
+ uint64_t aParentOuterWindowID, uint64_t aTopOuterWindowID,
+ uint64_t aFrameOuterWindowID, uint64_t aBrowsingContextID,
+ uint64_t aFrameBrowsingContextID, bool aInitialSecurityCheckDone,
+ bool aIsThirdPartyRequest, bool aIsThirdPartyContextToTopWindow,
+ bool aIsFormSubmission, bool aSendCSPViolationEvents,
const OriginAttributes& aOriginAttributes,
RedirectHistoryArray& aRedirectChainIncludingInternalRedirects,
RedirectHistoryArray& aRedirectChain,
diff --git a/netwerk/ipc/NeckoChannelParams.ipdlh b/netwerk/ipc/NeckoChannelParams.ipdlh
index 69b9af45b0a5..7f4fe332f5a1 100644
--- a/netwerk/ipc/NeckoChannelParams.ipdlh
+++ b/netwerk/ipc/NeckoChannelParams.ipdlh
@@ -93,6 +93,7 @@ struct LoadInfoArgs
bool allowInsecureRedirectToDataURI;
bool bypassCORSChecks;
bool skipContentPolicyCheckForWebRequest;
+ bool originalFrameSrcLoad;
bool forceInheritPrincipalDropped;
uint64_t innerWindowID;
uint64_t outerWindowID;