forked from mirrors/gecko-dev
Bug 1528677: Remove nullchecks for loadinfo since we have loadinfo on all channels. r=baku
This commit is contained in:
parent
14c58f6fa7
commit
54df1cb98c
68 changed files with 407 additions and 685 deletions
|
|
@ -253,8 +253,8 @@ static void InheritAndSetCSPOnPrincipalIfNeeded(nsIChannel* aChannel,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo || loadInfo->GetExternalContentPolicyType() !=
|
if (loadInfo->GetExternalContentPolicyType() !=
|
||||||
nsIContentPolicy::TYPE_SUBDOCUMENT) {
|
nsIContentPolicy::TYPE_SUBDOCUMENT) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -302,8 +302,8 @@ nsresult nsScriptSecurityManager::GetChannelResultPrincipal(
|
||||||
MOZ_ASSERT(aChannel, "Must have channel!");
|
MOZ_ASSERT(aChannel, "Must have channel!");
|
||||||
|
|
||||||
// Check whether we have an nsILoadInfo that says what we should do.
|
// Check whether we have an nsILoadInfo that says what we should do.
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo && loadInfo->GetForceInheritPrincipalOverruleOwner()) {
|
if (loadInfo->GetForceInheritPrincipalOverruleOwner()) {
|
||||||
nsCOMPtr<nsIPrincipal> principalToInherit =
|
nsCOMPtr<nsIPrincipal> principalToInherit =
|
||||||
loadInfo->FindPrincipalToInherit(aChannel);
|
loadInfo->FindPrincipalToInherit(aChannel);
|
||||||
principalToInherit.forget(aPrincipal);
|
principalToInherit.forget(aPrincipal);
|
||||||
|
|
@ -319,7 +319,6 @@ nsresult nsScriptSecurityManager::GetChannelResultPrincipal(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loadInfo) {
|
|
||||||
if (!aIgnoreSandboxing && loadInfo->GetLoadingSandboxed()) {
|
if (!aIgnoreSandboxing && loadInfo->GetLoadingSandboxed()) {
|
||||||
nsCOMPtr<nsIPrincipal> sandboxedLoadingPrincipal =
|
nsCOMPtr<nsIPrincipal> sandboxedLoadingPrincipal =
|
||||||
loadInfo->GetSandboxedLoadingPrincipal();
|
loadInfo->GetSandboxedLoadingPrincipal();
|
||||||
|
|
@ -366,7 +365,6 @@ nsresult nsScriptSecurityManager::GetChannelResultPrincipal(
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
nsresult rv = GetChannelURIPrincipal(aChannel, aPrincipal);
|
nsresult rv = GetChannelURIPrincipal(aChannel, aPrincipal);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
InheritAndSetCSPOnPrincipalIfNeeded(aChannel, *aPrincipal);
|
InheritAndSetCSPOnPrincipalIfNeeded(aChannel, *aPrincipal);
|
||||||
|
|
@ -395,20 +393,14 @@ nsScriptSecurityManager::GetChannelURIPrincipal(nsIChannel* aChannel,
|
||||||
nsresult rv = NS_GetFinalChannelURI(aChannel, getter_AddRefs(uri));
|
nsresult rv = NS_GetFinalChannelURI(aChannel, getter_AddRefs(uri));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
aChannel->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
|
|
||||||
// Inherit the origin attributes from loadInfo.
|
// Inherit the origin attributes from loadInfo.
|
||||||
// If this is a top-level document load, the origin attributes of the
|
// If this is a top-level document load, the origin attributes of the
|
||||||
// loadInfo will be set from nsDocShell::DoURILoad.
|
// loadInfo will be set from nsDocShell::DoURILoad.
|
||||||
// For subresource loading, the origin attributes of the loadInfo is from
|
// For subresource loading, the origin attributes of the loadInfo is from
|
||||||
// its loadingPrincipal.
|
// its loadingPrincipal.
|
||||||
OriginAttributes attrs;
|
OriginAttributes attrs = loadInfo->GetOriginAttributes();
|
||||||
|
|
||||||
// For addons loadInfo might be null.
|
|
||||||
if (loadInfo) {
|
|
||||||
attrs = loadInfo->GetOriginAttributes();
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIPrincipal> prin =
|
nsCOMPtr<nsIPrincipal> prin =
|
||||||
BasePrincipal::CreateCodebasePrincipal(uri, attrs);
|
BasePrincipal::CreateCodebasePrincipal(uri, attrs);
|
||||||
|
|
|
||||||
|
|
@ -4576,11 +4576,9 @@ nsDocShell::Reload(uint32_t aReloadFlags) {
|
||||||
httpChan->GetOriginalURI(getter_AddRefs(originalURI));
|
httpChan->GetOriginalURI(getter_AddRefs(originalURI));
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = chan->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = chan->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
loadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI));
|
loadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
MOZ_ASSERT(triggeringPrincipal, "Need a valid triggeringPrincipal");
|
MOZ_ASSERT(triggeringPrincipal, "Need a valid triggeringPrincipal");
|
||||||
if (mUseStrictSecurityChecks && !triggeringPrincipal) {
|
if (mUseStrictSecurityChecks && !triggeringPrincipal) {
|
||||||
|
|
@ -6850,7 +6848,7 @@ nsresult nsDocShell::EndPageLoad(nsIWebProgress* aProgress,
|
||||||
// can increment counts from the search engine
|
// can increment counts from the search engine
|
||||||
MaybeNotifyKeywordSearchLoading(keywordProviderName, keywordAsSent);
|
MaybeNotifyKeywordSearchLoading(keywordProviderName, keywordAsSent);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
MOZ_ASSERT(loadInfo, "loadInfo is required on all channels");
|
MOZ_ASSERT(loadInfo, "loadInfo is required on all channels");
|
||||||
nsCOMPtr<nsIPrincipal> triggeringPrincipal =
|
nsCOMPtr<nsIPrincipal> triggeringPrincipal =
|
||||||
loadInfo->TriggeringPrincipal();
|
loadInfo->TriggeringPrincipal();
|
||||||
|
|
@ -6902,11 +6900,9 @@ nsresult nsDocShell::EndPageLoad(nsIWebProgress* aProgress,
|
||||||
}
|
}
|
||||||
} else if (url && NS_SUCCEEDED(aStatus)) {
|
} else if (url && NS_SUCCEEDED(aStatus)) {
|
||||||
// If we have a host
|
// If we have a host
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
PredictorLearnRedirect(url, aChannel, loadInfo->GetOriginAttributes());
|
PredictorLearnRedirect(url, aChannel, loadInfo->GetOriginAttributes());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
@ -9829,8 +9825,7 @@ nsresult nsDocShell::DoURILoad(nsDocShellLoadState* aLoadState,
|
||||||
GetIsMozBrowser());
|
GetIsMozBrowser());
|
||||||
|
|
||||||
if (isTopLevelDoc && GetDocument() && GetDocument()->GetChannel()) {
|
if (isTopLevelDoc && GetDocument() && GetDocument()->GetChannel()) {
|
||||||
nsCOMPtr<nsILoadInfo> oldLoadInfo =
|
nsCOMPtr<nsILoadInfo> oldLoadInfo = GetDocument()->GetChannel()->LoadInfo();
|
||||||
GetDocument()->GetChannel()->GetLoadInfo();
|
|
||||||
loadInfo->SetOpenerPolicy(oldLoadInfo->GetOpenerPolicy());
|
loadInfo->SetOpenerPolicy(oldLoadInfo->GetOpenerPolicy());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -11293,8 +11288,7 @@ nsresult nsDocShell::AddToSessionHistory(nsIURI* aURI, nsIChannel* aChannel,
|
||||||
discardLayoutState = ShouldDiscardLayoutState(httpChannel);
|
discardLayoutState = ShouldDiscardLayoutState(httpChannel);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
if (!triggeringPrincipal) {
|
if (!triggeringPrincipal) {
|
||||||
triggeringPrincipal = loadInfo->TriggeringPrincipal();
|
triggeringPrincipal = loadInfo->TriggeringPrincipal();
|
||||||
}
|
}
|
||||||
|
|
@ -11318,7 +11312,6 @@ nsresult nsDocShell::AddToSessionHistory(nsIURI* aURI, nsIChannel* aChannel,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Title is set in nsDocShell::SetTitle()
|
// Title is set in nsDocShell::SetTitle()
|
||||||
entry->Create(aURI, // uri
|
entry->Create(aURI, // uri
|
||||||
|
|
|
||||||
|
|
@ -93,10 +93,7 @@ nsresult nsDocShellLoadState::CreateFromPendingChannel(
|
||||||
}
|
}
|
||||||
loadState->SetOriginalURI(originalUri);
|
loadState->SetOriginalURI(originalUri);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (NS_WARN_IF(!loadInfo)) {
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
loadState->SetTriggeringPrincipal(loadInfo->TriggeringPrincipal());
|
loadState->SetTriggeringPrincipal(loadInfo->TriggeringPrincipal());
|
||||||
|
|
||||||
// Return the newly created loadState.
|
// Return the newly created loadState.
|
||||||
|
|
|
||||||
|
|
@ -2419,7 +2419,7 @@ static void WarnIfSandboxIneffective(nsIDocShell* aDocShell,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Document::IsSynthesized() {
|
bool Document::IsSynthesized() {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel ? mChannel->GetLoadInfo() : nullptr;
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel ? mChannel->LoadInfo() : nullptr;
|
||||||
return loadInfo && loadInfo->GetServiceWorkerTaintingSynthesized();
|
return loadInfo && loadInfo->GetServiceWorkerTaintingSynthesized();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2519,8 +2519,8 @@ nsresult Document::StartDocumentLoad(const char* aCommand, nsIChannel* aChannel,
|
||||||
nsCOMPtr<nsIDocShell> docShell = do_QueryInterface(aContainer);
|
nsCOMPtr<nsIDocShell> docShell = do_QueryInterface(aContainer);
|
||||||
|
|
||||||
// If this is an error page, don't inherit sandbox flags from docshell
|
// If this is an error page, don't inherit sandbox flags from docshell
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (docShell && !(loadInfo && loadInfo->GetLoadErrorPage())) {
|
if (docShell && !loadInfo->GetLoadErrorPage()) {
|
||||||
nsresult rv = docShell->GetSandboxFlags(&mSandboxFlags);
|
nsresult rv = docShell->GetSandboxFlags(&mSandboxFlags);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
WarnIfSandboxIneffective(docShell, mSandboxFlags, GetChannel());
|
WarnIfSandboxIneffective(docShell, mSandboxFlags, GetChannel());
|
||||||
|
|
@ -2667,8 +2667,8 @@ nsresult Document::InitCSP(nsIChannel* aChannel) {
|
||||||
|
|
||||||
// Check if this is a signed content to apply default CSP.
|
// Check if this is a signed content to apply default CSP.
|
||||||
bool applySignedContentCSP = false;
|
bool applySignedContentCSP = false;
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo && loadInfo->GetVerifySignedContent()) {
|
if (loadInfo->GetVerifySignedContent()) {
|
||||||
applySignedContentCSP = true;
|
applySignedContentCSP = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7423,15 +7423,12 @@ bool Document::CanSavePresentation(nsIRequest* aNewRequest) {
|
||||||
// Favicon loads don't need to block caching.
|
// Favicon loads don't need to block caching.
|
||||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
nsCOMPtr<nsILoadInfo> li;
|
nsCOMPtr<nsILoadInfo> li = channel->LoadInfo();
|
||||||
channel->GetLoadInfo(getter_AddRefs(li));
|
|
||||||
if (li) {
|
|
||||||
if (li->InternalContentPolicyType() ==
|
if (li->InternalContentPolicyType() ==
|
||||||
nsIContentPolicy::TYPE_INTERNAL_IMAGE_FAVICON) {
|
nsIContentPolicy::TYPE_INTERNAL_IMAGE_FAVICON) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#ifdef DEBUG_PAGE_CACHE
|
#ifdef DEBUG_PAGE_CACHE
|
||||||
nsAutoCString requestName, docSpec;
|
nsAutoCString requestName, docSpec;
|
||||||
request->GetName(requestName);
|
request->GetName(requestName);
|
||||||
|
|
@ -11721,8 +11718,8 @@ void Document::SetUserHasInteracted() {
|
||||||
|
|
||||||
mUserHasInteracted = true;
|
mUserHasInteracted = true;
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel ? mChannel->GetLoadInfo() : nullptr;
|
if (mChannel) {
|
||||||
if (loadInfo) {
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
loadInfo->SetDocumentHasUserInteracted(true);
|
loadInfo->SetDocumentHasUserInteracted(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,7 @@ ThirdPartyUtil::IsThirdPartyChannel(nsIChannel* aChannel, nsIURI* aURI,
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
if (!doForce) {
|
if (!doForce) {
|
||||||
if (nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo()) {
|
if (nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo()) {
|
||||||
parentIsThird = loadInfo->GetIsInThirdPartyContext();
|
parentIsThird = loadInfo->GetIsInThirdPartyContext();
|
||||||
if (!parentIsThird && loadInfo->GetExternalContentPolicyType() !=
|
if (!parentIsThird && loadInfo->GetExternalContentPolicyType() !=
|
||||||
nsIContentPolicy::TYPE_DOCUMENT) {
|
nsIContentPolicy::TYPE_DOCUMENT) {
|
||||||
|
|
|
||||||
|
|
@ -8122,10 +8122,7 @@ bool nsContentUtils::IsNonSubresourceRequest(nsIChannel* aChannel) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
nsContentPolicyType type = loadInfo->InternalContentPolicyType();
|
nsContentPolicyType type = loadInfo->InternalContentPolicyType();
|
||||||
return IsNonSubresourceInternalPolicyType(type);
|
return IsNonSubresourceInternalPolicyType(type);
|
||||||
}
|
}
|
||||||
|
|
@ -9810,10 +9807,7 @@ nsContentUtils::LookupCustomElementDefinition(Document* aDoc, nsAtom* aNameAtom,
|
||||||
rv = aChannel->GetReferrer(getter_AddRefs(referrer));
|
rv = aChannel->GetReferrer(getter_AddRefs(referrer));
|
||||||
NS_ENSURE_SUCCESS(rv, false);
|
NS_ENSURE_SUCCESS(rv, false);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
nsCOMPtr<nsIPrincipal> triggeringPrincipal = loadInfo->TriggeringPrincipal();
|
nsCOMPtr<nsIPrincipal> triggeringPrincipal = loadInfo->TriggeringPrincipal();
|
||||||
|
|
||||||
// Get the channel's load flags, and use them to generate nsIWebNavigation
|
// Get the channel's load flags, and use them to generate nsIWebNavigation
|
||||||
|
|
|
||||||
|
|
@ -1718,7 +1718,7 @@ nsresult nsGlobalWindowInner::EnsureClientSource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ignoreLoadInfo) {
|
if (!ignoreLoadInfo) {
|
||||||
loadInfo = channel->GetLoadInfo();
|
loadInfo = channel->LoadInfo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5516,11 +5516,10 @@ void nsGlobalWindowOuter::NotifyContentBlockingEvent(unsigned aEvent,
|
||||||
// static
|
// static
|
||||||
bool nsGlobalWindowOuter::SameLoadingURI(Document* aDoc, nsIChannel* aChannel) {
|
bool nsGlobalWindowOuter::SameLoadingURI(Document* aDoc, nsIChannel* aChannel) {
|
||||||
nsCOMPtr<nsIURI> docURI = aDoc->GetDocumentURI();
|
nsCOMPtr<nsIURI> docURI = aDoc->GetDocumentURI();
|
||||||
nsCOMPtr<nsILoadInfo> channelLoadInfo = aChannel->GetLoadInfo();
|
if (!docURI) {
|
||||||
if (!channelLoadInfo || !docURI) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
nsCOMPtr<nsILoadInfo> channelLoadInfo = aChannel->LoadInfo();
|
||||||
nsCOMPtr<nsIPrincipal> channelLoadingPrincipal =
|
nsCOMPtr<nsIPrincipal> channelLoadingPrincipal =
|
||||||
channelLoadInfo->LoadingPrincipal();
|
channelLoadInfo->LoadingPrincipal();
|
||||||
if (!channelLoadingPrincipal) {
|
if (!channelLoadingPrincipal) {
|
||||||
|
|
|
||||||
|
|
@ -331,7 +331,7 @@ bool nsNodeInfoManager::InternalSVGEnabled() {
|
||||||
nsCOMPtr<nsIChannel> channel = mDocument->GetChannel();
|
nsCOMPtr<nsIChannel> channel = mDocument->GetChannel();
|
||||||
// We don't have a channel for SVGs constructed inside a SVG script
|
// We don't have a channel for SVGs constructed inside a SVG script
|
||||||
if (channel) {
|
if (channel) {
|
||||||
loadInfo = channel->GetLoadInfo();
|
loadInfo = channel->LoadInfo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool conclusion =
|
bool conclusion =
|
||||||
|
|
|
||||||
|
|
@ -2412,8 +2412,7 @@ nsresult nsObjectLoadingContent::OpenChannel() {
|
||||||
nsIRequest::LOAD_HTML_OBJECT_DATA);
|
nsIRequest::LOAD_HTML_OBJECT_DATA);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
if (inherit) {
|
if (inherit) {
|
||||||
nsCOMPtr<nsILoadInfo> loadinfo = chan->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadinfo = chan->LoadInfo();
|
||||||
NS_ENSURE_STATE(loadinfo);
|
|
||||||
loadinfo->SetPrincipalToInherit(thisContent->NodePrincipal());
|
loadinfo->SetPrincipalToInherit(thisContent->NodePrincipal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,8 +135,7 @@ nsresult nsSyncLoader::LoadDocument(nsIChannel *aChannel, bool aChannelIsSync,
|
||||||
"text/xml,application/xml,application/xhtml+xml,*/*;q=0.1"),
|
"text/xml,application/xml,application/xhtml+xml,*/*;q=0.1"),
|
||||||
false);
|
false);
|
||||||
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
nsCOMPtr<nsIURI> loaderUri;
|
nsCOMPtr<nsIURI> loaderUri;
|
||||||
loadInfo->TriggeringPrincipal()->GetURI(getter_AddRefs(loaderUri));
|
loadInfo->TriggeringPrincipal()->GetURI(getter_AddRefs(loaderUri));
|
||||||
if (loaderUri) {
|
if (loaderUri) {
|
||||||
|
|
@ -144,7 +143,6 @@ nsresult nsSyncLoader::LoadDocument(nsIChannel *aChannel, bool aChannelIsSync,
|
||||||
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Hook us up to listen to redirects and the like.
|
// Hook us up to listen to redirects and the like.
|
||||||
// Do this before setting up the cross-site proxy since
|
// Do this before setting up the cross-site proxy since
|
||||||
|
|
|
||||||
|
|
@ -55,19 +55,14 @@ class ClientChannelHelper final : public nsIInterfaceRequestor,
|
||||||
nsIAsyncVerifyRedirectCallback* aCallback) override {
|
nsIAsyncVerifyRedirectCallback* aCallback) override {
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> oldLoadInfo;
|
nsresult rv = nsContentUtils::CheckSameOrigin(aOldChannel, aNewChannel);
|
||||||
nsresult rv = aOldChannel->GetLoadInfo(getter_AddRefs(oldLoadInfo));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> newLoadInfo;
|
|
||||||
rv = aNewChannel->GetLoadInfo(getter_AddRefs(newLoadInfo));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
rv = nsContentUtils::CheckSameOrigin(aOldChannel, aNewChannel);
|
|
||||||
if (NS_WARN_IF(NS_FAILED(rv) && rv != NS_ERROR_DOM_BAD_URI)) {
|
if (NS_WARN_IF(NS_FAILED(rv) && rv != NS_ERROR_DOM_BAD_URI)) {
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsCOMPtr<nsILoadInfo> oldLoadInfo = aOldChannel->LoadInfo();
|
||||||
|
nsCOMPtr<nsILoadInfo> newLoadInfo = aNewChannel->LoadInfo();
|
||||||
|
|
||||||
UniquePtr<ClientSource> reservedClient =
|
UniquePtr<ClientSource> reservedClient =
|
||||||
oldLoadInfo->TakeReservedClientSource();
|
oldLoadInfo->TakeReservedClientSource();
|
||||||
|
|
||||||
|
|
@ -181,8 +176,7 @@ nsresult AddClientChannelHelper(nsIChannel* aChannel,
|
||||||
MOZ_DIAGNOSTIC_ASSERT(reservedClientInfo.isNothing() ||
|
MOZ_DIAGNOSTIC_ASSERT(reservedClientInfo.isNothing() ||
|
||||||
initialClientInfo.isNothing());
|
initialClientInfo.isNothing());
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
NS_ENSURE_TRUE(loadInfo, NS_ERROR_FAILURE);
|
|
||||||
|
|
||||||
nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager();
|
nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager();
|
||||||
NS_ENSURE_TRUE(ssm, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(ssm, NS_ERROR_FAILURE);
|
||||||
|
|
|
||||||
|
|
@ -531,11 +531,7 @@ nsresult FetchDriver::HttpFetch(
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
if (mCSPEventListener) {
|
if (mCSPEventListener) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = chan->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = chan->LoadInfo();
|
||||||
if (NS_WARN_IF(!loadInfo)) {
|
|
||||||
return NS_ERROR_UNEXPECTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = loadInfo->SetCspEventListener(mCSPEventListener);
|
rv = loadInfo->SetCspEventListener(mCSPEventListener);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
|
|
@ -588,7 +584,7 @@ nsresult FetchDriver::HttpFetch(
|
||||||
// If request’s referrer policy is the empty string,
|
// If request’s referrer policy is the empty string,
|
||||||
// then set request’s referrer policy to the user-set default policy.
|
// then set request’s referrer policy to the user-set default policy.
|
||||||
if (mRequest->ReferrerPolicy_() == ReferrerPolicy::_empty) {
|
if (mRequest->ReferrerPolicy_() == ReferrerPolicy::_empty) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = httpChan->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = httpChan->LoadInfo();
|
||||||
bool isPrivate = loadInfo->GetOriginAttributes().mPrivateBrowsingId > 0;
|
bool isPrivate = loadInfo->GetOriginAttributes().mPrivateBrowsingId > 0;
|
||||||
net::ReferrerPolicy referrerPolicy = static_cast<net::ReferrerPolicy>(
|
net::ReferrerPolicy referrerPolicy = static_cast<net::ReferrerPolicy>(
|
||||||
NS_GetDefaultReferrerPolicy(isPrivate));
|
NS_GetDefaultReferrerPolicy(isPrivate));
|
||||||
|
|
@ -673,11 +669,9 @@ nsresult FetchDriver::HttpFetch(
|
||||||
if (mRequest->Mode() == RequestMode::Cors) {
|
if (mRequest->Mode() == RequestMode::Cors) {
|
||||||
AutoTArray<nsCString, 5> unsafeHeaders;
|
AutoTArray<nsCString, 5> unsafeHeaders;
|
||||||
mRequest->Headers()->GetUnsafeHeaders(unsafeHeaders);
|
mRequest->Headers()->GetUnsafeHeaders(unsafeHeaders);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = chan->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = chan->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
loadInfo->SetCorsPreflightInfo(unsafeHeaders, false);
|
loadInfo->SetCorsPreflightInfo(unsafeHeaders, false);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (mIsTrackingFetch && nsContentUtils::IsTailingEnabled() && cos) {
|
if (mIsTrackingFetch && nsContentUtils::IsTailingEnabled() && cos) {
|
||||||
cos->AddClassFlags(nsIClassOfService::Throttleable |
|
cos->AddClassFlags(nsIClassOfService::Throttleable |
|
||||||
|
|
@ -981,13 +975,7 @@ FetchDriver::OnStartRequest(nsIRequest* aRequest, nsISupports* aContext) {
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
rv = channel->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
||||||
FailWithNetworkError(rv);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Propagate any tainting from the channel back to our response here. This
|
// Propagate any tainting from the channel back to our response here. This
|
||||||
// step is not reflected in the spec because the spec is written such that
|
// step is not reflected in the spec because the spec is written such that
|
||||||
// FetchEvent.respondWith() just passes the already-tainted Response back to
|
// FetchEvent.respondWith() just passes the already-tainted Response back to
|
||||||
|
|
|
||||||
|
|
@ -1293,13 +1293,11 @@ class HTMLMediaElement::ChannelLoader final {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setAttrs) {
|
if (setAttrs) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
// The function simply returns NS_OK, so we ignore the return value.
|
// The function simply returns NS_OK, so we ignore the return value.
|
||||||
Unused << loadInfo->SetOriginAttributes(
|
Unused << loadInfo->SetOriginAttributes(
|
||||||
triggeringPrincipal->OriginAttributesRef());
|
triggeringPrincipal->OriginAttributesRef());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIClassOfService> cos(do_QueryInterface(channel));
|
nsCOMPtr<nsIClassOfService> cos(do_QueryInterface(channel));
|
||||||
if (cos) {
|
if (cos) {
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ ImageListener::OnStartRequest(nsIRequest* request, nsISupports* ctxt) {
|
||||||
nsAutoCString mimeType;
|
nsAutoCString mimeType;
|
||||||
channel->GetContentType(mimeType);
|
channel->GetContentType(mimeType);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
// query the corresponding arguments for the channel loadinfo and pass
|
// query the corresponding arguments for the channel loadinfo and pass
|
||||||
// it on to the temporary loadinfo used for content policy checks.
|
// it on to the temporary loadinfo used for content policy checks.
|
||||||
nsCOMPtr<nsINode> requestingNode = domWindow->GetFrameElementInternal();
|
nsCOMPtr<nsINode> requestingNode = domWindow->GetFrameElementInternal();
|
||||||
|
|
@ -100,8 +100,8 @@ ImageListener::OnStartRequest(nsIRequest* request, nsISupports* ctxt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> secCheckLoadInfo = new net::LoadInfo(
|
nsCOMPtr<nsILoadInfo> secCheckLoadInfo = new net::LoadInfo(
|
||||||
loadingPrincipal, loadInfo ? loadInfo->TriggeringPrincipal() : nullptr,
|
loadingPrincipal, loadInfo->TriggeringPrincipal(), requestingNode,
|
||||||
requestingNode, nsILoadInfo::SEC_ONLY_FOR_EXPLICIT_CONTENTSEC_CHECK,
|
nsILoadInfo::SEC_ONLY_FOR_EXPLICIT_CONTENTSEC_CHECK,
|
||||||
nsIContentPolicy::TYPE_INTERNAL_IMAGE);
|
nsIContentPolicy::TYPE_INTERNAL_IMAGE);
|
||||||
|
|
||||||
int16_t decision = nsIContentPolicy::ACCEPT;
|
int16_t decision = nsIContentPolicy::ACCEPT;
|
||||||
|
|
|
||||||
|
|
@ -1923,8 +1923,7 @@ nsresult nsHTMLDocument::CreateAndAddWyciwygChannel(void) {
|
||||||
nsILoadInfo::SEC_FORCE_INHERIT_PRINCIPAL,
|
nsILoadInfo::SEC_FORCE_INHERIT_PRINCIPAL,
|
||||||
nsIContentPolicy::TYPE_OTHER);
|
nsIContentPolicy::TYPE_OTHER);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
NS_ENSURE_STATE(loadInfo);
|
|
||||||
loadInfo->SetPrincipalToInherit(NodePrincipal());
|
loadInfo->SetPrincipalToInherit(NodePrincipal());
|
||||||
|
|
||||||
mWyciwygChannel = do_QueryInterface(channel);
|
mWyciwygChannel = do_QueryInterface(channel);
|
||||||
|
|
|
||||||
|
|
@ -144,9 +144,8 @@ nsresult nsJSThunk::EvaluateScript(
|
||||||
aChannel->GetOwner(getter_AddRefs(owner));
|
aChannel->GetOwner(getter_AddRefs(owner));
|
||||||
nsCOMPtr<nsIPrincipal> principal = do_QueryInterface(owner);
|
nsCOMPtr<nsIPrincipal> principal = do_QueryInterface(owner);
|
||||||
if (!principal) {
|
if (!principal) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
aChannel->GetLoadInfo(getter_AddRefs(loadInfo));
|
if (loadInfo->GetForceInheritPrincipal()) {
|
||||||
if (loadInfo && loadInfo->GetForceInheritPrincipal()) {
|
|
||||||
principal = loadInfo->FindPrincipalToInherit(aChannel);
|
principal = loadInfo->FindPrincipalToInherit(aChannel);
|
||||||
} else {
|
} else {
|
||||||
// No execution without a principal!
|
// No execution without a principal!
|
||||||
|
|
@ -509,7 +508,7 @@ nsJSChannel::AsyncOpen(nsIStreamListener* aListener) {
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{
|
{
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = nsIChannel::GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = nsIChannel::LoadInfo();
|
||||||
MOZ_ASSERT(!loadInfo || loadInfo->GetSecurityMode() == 0 ||
|
MOZ_ASSERT(!loadInfo || loadInfo->GetSecurityMode() == 0 ||
|
||||||
loadInfo->GetInitialSecurityCheckDone(),
|
loadInfo->GetInitialSecurityCheckDone(),
|
||||||
"security flags in loadInfo but asyncOpen() not called");
|
"security flags in loadInfo but asyncOpen() not called");
|
||||||
|
|
|
||||||
|
|
@ -765,13 +765,11 @@ nsresult ChannelMediaResource::RecreateChannel() {
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
if (setAttrs) {
|
if (setAttrs) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
// The function simply returns NS_OK, so we ignore the return value.
|
// The function simply returns NS_OK, so we ignore the return value.
|
||||||
Unused << loadInfo->SetOriginAttributes(
|
Unused << loadInfo->SetOriginAttributes(
|
||||||
triggeringPrincipal->OriginAttributesRef());
|
triggeringPrincipal->OriginAttributesRef());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIClassOfService> cos(do_QueryInterface(mChannel));
|
nsCOMPtr<nsIClassOfService> cos(do_QueryInterface(mChannel));
|
||||||
if (cos) {
|
if (cos) {
|
||||||
|
|
|
||||||
|
|
@ -267,11 +267,7 @@ bool PerformanceTimingData::CheckAllowedOrigin(nsIHttpChannel* aResourceChannel,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that the current document passes the ckeck.
|
// Check that the current document passes the ckeck.
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = aResourceChannel->LoadInfo();
|
||||||
aResourceChannel->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TYPE_DOCUMENT loads have no loadingPrincipal.
|
// TYPE_DOCUMENT loads have no loadingPrincipal.
|
||||||
if (loadInfo->GetExternalContentPolicyType() ==
|
if (loadInfo->GetExternalContentPolicyType() ==
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ nsPluginStreamListenerPeer::OnStartRequest(nsIRequest* request,
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
// Check ShouldProcess with content policy
|
// Check ShouldProcess with content policy
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
|
|
||||||
int16_t shouldLoad = nsIContentPolicy::ACCEPT;
|
int16_t shouldLoad = nsIContentPolicy::ACCEPT;
|
||||||
rv = NS_CheckContentProcessPolicy(mURL, loadInfo, contentType, &shouldLoad);
|
rv = NS_CheckContentProcessPolicy(mURL, loadInfo, contentType, &shouldLoad);
|
||||||
|
|
|
||||||
|
|
@ -1275,7 +1275,7 @@ nsresult ScriptLoader::StartLoad(ScriptLoadRequest* aRequest) {
|
||||||
if (element && element->IsHTMLElement()) {
|
if (element && element->IsHTMLElement()) {
|
||||||
nsAutoString cspNonce;
|
nsAutoString cspNonce;
|
||||||
element->GetAttribute(NS_LITERAL_STRING("nonce"), cspNonce);
|
element->GetAttribute(NS_LITERAL_STRING("nonce"), cspNonce);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
loadInfo->SetCspNonce(cspNonce);
|
loadInfo->SetCspNonce(cspNonce);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3208,9 +3208,9 @@ nsresult ScriptLoader::VerifySRI(ScriptLoadRequest* aRequest,
|
||||||
rv = NS_ERROR_SRI_CORRUPT;
|
rv = NS_ERROR_SRI_CORRUPT;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
|
|
||||||
if (loadInfo && loadInfo->GetEnforceSRI()) {
|
if (loadInfo->GetEnforceSRI()) {
|
||||||
MOZ_LOG(SRILogHelper::GetSriLog(), mozilla::LogLevel::Debug,
|
MOZ_LOG(SRILogHelper::GetSriLog(), mozilla::LogLevel::Debug,
|
||||||
("ScriptLoader::OnStreamComplete, required SRI not found"));
|
("ScriptLoader::OnStreamComplete, required SRI not found"));
|
||||||
nsCOMPtr<nsIContentSecurityPolicy> csp;
|
nsCOMPtr<nsIContentSecurityPolicy> csp;
|
||||||
|
|
|
||||||
|
|
@ -184,10 +184,9 @@ static bool ShouldIgnoreFrameOptions(nsIChannel* aChannel,
|
||||||
}
|
}
|
||||||
|
|
||||||
// log warning to console that xfo is ignored because of CSP
|
// log warning to console that xfo is ignored because of CSP
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
uint64_t innerWindowID = loadInfo ? loadInfo->GetInnerWindowID() : 0;
|
uint64_t innerWindowID = loadInfo->GetInnerWindowID();
|
||||||
bool privateWindow =
|
bool privateWindow = !!loadInfo->GetOriginAttributes().mPrivateBrowsingId;
|
||||||
loadInfo ? !!loadInfo->GetOriginAttributes().mPrivateBrowsingId : false;
|
|
||||||
const char16_t* params[] = {u"x-frame-options", u"frame-ancestors"};
|
const char16_t* params[] = {u"x-frame-options", u"frame-ancestors"};
|
||||||
CSP_LogLocalizedStr("IgnoringSrcBecauseOfDirective", params,
|
CSP_LogLocalizedStr("IgnoringSrcBecauseOfDirective", params,
|
||||||
ArrayLength(params),
|
ArrayLength(params),
|
||||||
|
|
@ -252,9 +251,7 @@ static bool ShouldIgnoreFrameOptions(nsIChannel* aChannel,
|
||||||
if (aDocShell) {
|
if (aDocShell) {
|
||||||
nsCOMPtr<nsIWebNavigation> webNav(do_QueryObject(aDocShell));
|
nsCOMPtr<nsIWebNavigation> webNav(do_QueryObject(aDocShell));
|
||||||
if (webNav) {
|
if (webNav) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = httpChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = httpChannel->LoadInfo();
|
||||||
MOZ_ASSERT(loadInfo);
|
|
||||||
|
|
||||||
RefPtr<NullPrincipal> principal =
|
RefPtr<NullPrincipal> principal =
|
||||||
NullPrincipal::CreateWithInheritedAttributes(
|
NullPrincipal::CreateWithInheritedAttributes(
|
||||||
loadInfo->TriggeringPrincipal());
|
loadInfo->TriggeringPrincipal());
|
||||||
|
|
|
||||||
|
|
@ -327,8 +327,7 @@ nsresult SRICheckDataVerifier::Verify(const SRIMetadata& aMetadata,
|
||||||
nsresult rv = Finish();
|
nsresult rv = Finish();
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
NS_ENSURE_TRUE(loadInfo, NS_ERROR_FAILURE);
|
|
||||||
LoadTainting tainting = loadInfo->GetTainting();
|
LoadTainting tainting = loadInfo->GetTainting();
|
||||||
|
|
||||||
if (NS_FAILED(IsEligible(aChannel, tainting, aSourceFileURI, aReporter))) {
|
if (NS_FAILED(IsEligible(aChannel, tainting, aSourceFileURI, aReporter))) {
|
||||||
|
|
|
||||||
|
|
@ -260,13 +260,7 @@ CSPService::AsyncOnChannelRedirect(nsIChannel *oldChannel,
|
||||||
nsresult rv = newChannel->GetURI(getter_AddRefs(newUri));
|
nsresult rv = newChannel->GetURI(getter_AddRefs(newUri));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = oldChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = oldChannel->LoadInfo();
|
||||||
|
|
||||||
// if no loadInfo on the channel, nothing for us to do
|
|
||||||
if (!loadInfo) {
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsICSPEventListener> cspEventListener;
|
nsCOMPtr<nsICSPEventListener> cspEventListener;
|
||||||
rv = loadInfo->GetCspEventListener(getter_AddRefs(cspEventListener));
|
rv = loadInfo->GetCspEventListener(getter_AddRefs(cspEventListener));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
|
||||||
|
|
@ -45,10 +45,7 @@ static mozilla::LazyLogModule sCSMLog("CSMLog");
|
||||||
if (!mozilla::net::nsIOService::BlockToplevelDataUriNavigations()) {
|
if (!mozilla::net::nsIOService::BlockToplevelDataUriNavigations()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (loadInfo->GetExternalContentPolicyType() !=
|
if (loadInfo->GetExternalContentPolicyType() !=
|
||||||
nsIContentPolicy::TYPE_DOCUMENT) {
|
nsIContentPolicy::TYPE_DOCUMENT) {
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -115,10 +112,7 @@ static mozilla::LazyLogModule sCSMLog("CSMLog");
|
||||||
|
|
||||||
/* static */ bool nsContentSecurityManager::AllowInsecureRedirectToDataURI(
|
/* static */ bool nsContentSecurityManager::AllowInsecureRedirectToDataURI(
|
||||||
nsIChannel* aNewChannel) {
|
nsIChannel* aNewChannel) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aNewChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aNewChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (loadInfo->GetExternalContentPolicyType() !=
|
if (loadInfo->GetExternalContentPolicyType() !=
|
||||||
nsIContentPolicy::TYPE_SCRIPT) {
|
nsIContentPolicy::TYPE_SCRIPT) {
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -170,11 +164,7 @@ static mozilla::LazyLogModule sCSMLog("CSMLog");
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsContentPolicyType type = loadInfo->GetExternalContentPolicyType();
|
nsContentPolicyType type = loadInfo->GetExternalContentPolicyType();
|
||||||
|
|
||||||
// Allow top-level FTP documents and save-as download of FTP files on
|
// Allow top-level FTP documents and save-as download of FTP files on
|
||||||
|
|
@ -793,14 +783,7 @@ static void DebugDoContentSecurityCheck(nsIChannel* aChannel,
|
||||||
nsresult nsContentSecurityManager::doContentSecurityCheck(
|
nsresult nsContentSecurityManager::doContentSecurityCheck(
|
||||||
nsIChannel* aChannel, nsCOMPtr<nsIStreamListener>& aInAndOutListener) {
|
nsIChannel* aChannel, nsCOMPtr<nsIStreamListener>& aInAndOutListener) {
|
||||||
NS_ENSURE_ARG(aChannel);
|
NS_ENSURE_ARG(aChannel);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
|
|
||||||
if (!loadInfo) {
|
|
||||||
MOZ_ASSERT(false,
|
|
||||||
"channel needs to have loadInfo to perform security checks");
|
|
||||||
return NS_ERROR_UNEXPECTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MOZ_UNLIKELY(MOZ_LOG_TEST(sCSMLog, LogLevel::Debug))) {
|
if (MOZ_UNLIKELY(MOZ_LOG_TEST(sCSMLog, LogLevel::Debug))) {
|
||||||
DebugDoContentSecurityCheck(aChannel, loadInfo);
|
DebugDoContentSecurityCheck(aChannel, loadInfo);
|
||||||
}
|
}
|
||||||
|
|
@ -844,8 +827,7 @@ NS_IMETHODIMP
|
||||||
nsContentSecurityManager::AsyncOnChannelRedirect(
|
nsContentSecurityManager::AsyncOnChannelRedirect(
|
||||||
nsIChannel* aOldChannel, nsIChannel* aNewChannel, uint32_t aRedirFlags,
|
nsIChannel* aOldChannel, nsIChannel* aNewChannel, uint32_t aRedirFlags,
|
||||||
nsIAsyncVerifyRedirectCallback* aCb) {
|
nsIAsyncVerifyRedirectCallback* aCb) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aOldChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aOldChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
nsresult rv = CheckChannel(aNewChannel);
|
nsresult rv = CheckChannel(aNewChannel);
|
||||||
if (NS_SUCCEEDED(rv)) {
|
if (NS_SUCCEEDED(rv)) {
|
||||||
rv = CheckFTPSubresourceLoad(aNewChannel);
|
rv = CheckFTPSubresourceLoad(aNewChannel);
|
||||||
|
|
@ -854,7 +836,6 @@ nsContentSecurityManager::AsyncOnChannelRedirect(
|
||||||
aOldChannel->Cancel(rv);
|
aOldChannel->Cancel(rv);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Also verify that the redirecting server is allowed to redirect to the
|
// Also verify that the redirecting server is allowed to redirect to the
|
||||||
// given URI
|
// given URI
|
||||||
|
|
@ -876,7 +857,7 @@ nsContentSecurityManager::AsyncOnChannelRedirect(
|
||||||
const uint32_t flags =
|
const uint32_t flags =
|
||||||
nsIScriptSecurityManager::LOAD_IS_AUTOMATIC_DOCUMENT_REPLACEMENT |
|
nsIScriptSecurityManager::LOAD_IS_AUTOMATIC_DOCUMENT_REPLACEMENT |
|
||||||
nsIScriptSecurityManager::DISALLOW_SCRIPT;
|
nsIScriptSecurityManager::DISALLOW_SCRIPT;
|
||||||
nsresult rv = nsContentUtils::GetSecurityManager()->CheckLoadURIWithPrincipal(
|
rv = nsContentUtils::GetSecurityManager()->CheckLoadURIWithPrincipal(
|
||||||
oldPrincipal, newURI, flags);
|
oldPrincipal, newURI, flags);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
|
@ -896,9 +877,7 @@ static void AddLoadFlags(nsIRequest* aRequest, nsLoadFlags aNewFlags) {
|
||||||
* if this requesst should not be permitted.
|
* if this requesst should not be permitted.
|
||||||
*/
|
*/
|
||||||
nsresult nsContentSecurityManager::CheckChannel(nsIChannel* aChannel) {
|
nsresult nsContentSecurityManager::CheckChannel(nsIChannel* aChannel) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
MOZ_ASSERT(loadInfo);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIURI> uri;
|
nsCOMPtr<nsIURI> uri;
|
||||||
nsresult rv = NS_GetFinalChannelURI(aChannel, getter_AddRefs(uri));
|
nsresult rv = NS_GetFinalChannelURI(aChannel, getter_AddRefs(uri));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
|
||||||
|
|
@ -301,7 +301,7 @@ nsMixedContentBlocker::AsyncOnChannelRedirect(
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
// Get the loading Info from the old channel
|
// Get the loading Info from the old channel
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aOldChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aOldChannel->LoadInfo();
|
||||||
nsCOMPtr<nsIPrincipal> requestingPrincipal = loadInfo->LoadingPrincipal();
|
nsCOMPtr<nsIPrincipal> requestingPrincipal = loadInfo->LoadingPrincipal();
|
||||||
|
|
||||||
// Since we are calling shouldLoad() directly on redirects, we don't go
|
// Since we are calling shouldLoad() directly on redirects, we don't go
|
||||||
|
|
|
||||||
|
|
@ -272,9 +272,9 @@ class StartResponse final : public Runnable {
|
||||||
nsresult rv = mChannel->GetChannel(getter_AddRefs(underlyingChannel));
|
nsresult rv = mChannel->GetChannel(getter_AddRefs(underlyingChannel));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
NS_ENSURE_TRUE(underlyingChannel, NS_ERROR_UNEXPECTED);
|
NS_ENSURE_TRUE(underlyingChannel, NS_ERROR_UNEXPECTED);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = underlyingChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = underlyingChannel->LoadInfo();
|
||||||
|
|
||||||
if (!loadInfo || !CSPPermitsResponse(loadInfo)) {
|
if (!CSPPermitsResponse(loadInfo)) {
|
||||||
mChannel->CancelInterception(NS_ERROR_CONTENT_BLOCKED);
|
mChannel->CancelInterception(NS_ERROR_CONTENT_BLOCKED);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,10 +22,7 @@ ServiceWorkerInterceptController::ShouldPrepareForIntercept(
|
||||||
nsIURI* aURI, nsIChannel* aChannel, bool* aShouldIntercept) {
|
nsIURI* aURI, nsIChannel* aChannel, bool* aShouldIntercept) {
|
||||||
*aShouldIntercept = false;
|
*aShouldIntercept = false;
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// For subresource requests we base our decision solely on the client's
|
// For subresource requests we base our decision solely on the client's
|
||||||
// controller value. Any settings that would have blocked service worker
|
// controller value. Any settings that would have blocked service worker
|
||||||
|
|
|
||||||
|
|
@ -1873,8 +1873,7 @@ class ContinueDispatchFetchEventRunnable : public Runnable {
|
||||||
|
|
||||||
nsString clientId;
|
nsString clientId;
|
||||||
nsString resultingClientId;
|
nsString resultingClientId;
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
char buf[NSID_LENGTH];
|
char buf[NSID_LENGTH];
|
||||||
Maybe<ClientInfo> clientInfo = loadInfo->GetClientInfo();
|
Maybe<ClientInfo> clientInfo = loadInfo->GetClientInfo();
|
||||||
if (clientInfo.isSome()) {
|
if (clientInfo.isSome()) {
|
||||||
|
|
@ -1905,7 +1904,6 @@ class ContinueDispatchFetchEventRunnable : public Runnable {
|
||||||
|
|
||||||
resultingClientId.Assign(Substring(uuid, 1, NSID_LENGTH - 3));
|
resultingClientId.Assign(Substring(uuid, 1, NSID_LENGTH - 3));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
rv = mServiceWorkerPrivate->SendFetchEvent(mChannel, mLoadGroup, clientId,
|
rv = mServiceWorkerPrivate->SendFetchEvent(mChannel, mLoadGroup, clientId,
|
||||||
resultingClientId, mIsReload);
|
resultingClientId, mIsReload);
|
||||||
|
|
@ -1936,12 +1934,7 @@ void ServiceWorkerManager::DispatchFetchEvent(nsIInterceptedChannel* aChannel,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = internalChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = internalChannel->LoadInfo();
|
||||||
if (NS_WARN_IF(!loadInfo)) {
|
|
||||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<ServiceWorkerInfo> serviceWorker;
|
RefPtr<ServiceWorkerInfo> serviceWorker;
|
||||||
|
|
||||||
if (!nsContentUtils::IsNonSubresourceRequest(internalChannel)) {
|
if (!nsContentUtils::IsNonSubresourceRequest(internalChannel)) {
|
||||||
|
|
|
||||||
|
|
@ -247,11 +247,7 @@ nsresult ChannelFromScriptURL(nsIPrincipal* principal, Document* parentDoc,
|
||||||
NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SECURITY_ERR);
|
NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SECURITY_ERR);
|
||||||
|
|
||||||
if (cspEventListener) {
|
if (cspEventListener) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (NS_WARN_IF(!loadInfo)) {
|
|
||||||
return NS_ERROR_UNEXPECTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = loadInfo->SetCspEventListener(cspEventListener);
|
rv = loadInfo->SetCspEventListener(cspEventListener);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
|
|
@ -1156,8 +1152,8 @@ class ScriptLoaderRunnable final : public nsIRunnable, public nsINamed {
|
||||||
aLoadInfo.mURL.Assign(NS_ConvertUTF8toUTF16(filename));
|
aLoadInfo.mURL.Assign(NS_ConvertUTF8toUTF16(filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> chanLoadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> chanLoadInfo = channel->LoadInfo();
|
||||||
if (chanLoadInfo && chanLoadInfo->GetEnforceSRI()) {
|
if (chanLoadInfo->GetEnforceSRI()) {
|
||||||
// importScripts() and the Worker constructor do not support integrity
|
// importScripts() and the Worker constructor do not support integrity
|
||||||
// metadata
|
// metadata
|
||||||
// (or any fetch options). Until then, we can just block.
|
// (or any fetch options). Until then, we can just block.
|
||||||
|
|
|
||||||
|
|
@ -747,13 +747,7 @@ bool XMLHttpRequestMainThread::IsCrossSiteCORSRequest() const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
MOZ_ASSERT(loadInfo);
|
|
||||||
|
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return loadInfo->GetTainting() == LoadTainting::CORS;
|
return loadInfo->GetTainting() == LoadTainting::CORS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1478,12 +1472,9 @@ void XMLHttpRequestMainThread::SetOriginAttributes(
|
||||||
|
|
||||||
OriginAttributes attrs(aAttrs);
|
OriginAttributes attrs(aAttrs);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
MOZ_ASSERT(loadInfo);
|
|
||||||
if (loadInfo) {
|
|
||||||
loadInfo->SetOriginAttributes(attrs);
|
loadInfo->SetOriginAttributes(attrs);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "Copy" from a stream.
|
* "Copy" from a stream.
|
||||||
|
|
@ -1989,12 +1980,9 @@ XMLHttpRequestMainThread::OnStartRequest(nsIRequest* request,
|
||||||
mResponseXML->ForceEnableXULXBL();
|
mResponseXML->ForceEnableXULXBL();
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
MOZ_ASSERT(loadInfo);
|
|
||||||
bool isCrossSite = false;
|
bool isCrossSite = false;
|
||||||
if (loadInfo) {
|
|
||||||
isCrossSite = loadInfo->GetTainting() != LoadTainting::Basic;
|
isCrossSite = loadInfo->GetTainting() != LoadTainting::Basic;
|
||||||
}
|
|
||||||
|
|
||||||
if (isCrossSite) {
|
if (isCrossSite) {
|
||||||
nsCOMPtr<nsIHTMLDocument> htmlDoc = do_QueryInterface(mResponseXML);
|
nsCOMPtr<nsIHTMLDocument> htmlDoc = do_QueryInterface(mResponseXML);
|
||||||
|
|
@ -2365,11 +2353,7 @@ nsresult XMLHttpRequestMainThread::CreateChannel() {
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
if (mCSPEventListener) {
|
if (mCSPEventListener) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
if (NS_WARN_IF(!loadInfo)) {
|
|
||||||
return NS_ERROR_UNEXPECTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = loadInfo->SetCspEventListener(mCSPEventListener);
|
rv = loadInfo->SetCspEventListener(mCSPEventListener);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
|
|
@ -2525,11 +2509,9 @@ nsresult XMLHttpRequestMainThread::InitiateFetch(
|
||||||
// .withCredentials can be called after open() is called.
|
// .withCredentials can be called after open() is called.
|
||||||
// Not doing this for privileged system XHRs since those don't use CORS.
|
// Not doing this for privileged system XHRs since those don't use CORS.
|
||||||
if (!IsSystemXHR() && !mIsAnon && mFlagACwithCredentials) {
|
if (!IsSystemXHR() && !mIsAnon && mFlagACwithCredentials) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
static_cast<net::LoadInfo*>(loadInfo.get())->SetIncludeCookiesSecFlag();
|
static_cast<net::LoadInfo*>(loadInfo.get())->SetIncludeCookiesSecFlag();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// We never let XHR be blocked by head CSS/JS loads to avoid potential
|
// We never let XHR be blocked by head CSS/JS loads to avoid potential
|
||||||
// deadlock where server generation of CSS/JS requires an XHR signal.
|
// deadlock where server generation of CSS/JS requires an XHR signal.
|
||||||
|
|
@ -2591,12 +2573,10 @@ nsresult XMLHttpRequestMainThread::InitiateFetch(
|
||||||
if (!IsSystemXHR()) {
|
if (!IsSystemXHR()) {
|
||||||
nsTArray<nsCString> CORSUnsafeHeaders;
|
nsTArray<nsCString> CORSUnsafeHeaders;
|
||||||
mAuthorRequestHeaders.GetCORSUnsafeHeaders(CORSUnsafeHeaders);
|
mAuthorRequestHeaders.GetCORSUnsafeHeaders(CORSUnsafeHeaders);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
loadInfo->SetCorsPreflightInfo(CORSUnsafeHeaders,
|
loadInfo->SetCorsPreflightInfo(CORSUnsafeHeaders,
|
||||||
mFlagHadUploadListenersOnSend);
|
mFlagHadUploadListenersOnSend);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Hook us up to listen to redirects and the like. Only do this very late
|
// Hook us up to listen to redirects and the like. Only do this very late
|
||||||
// since this creates a cycle between the channel and us. This cycle has
|
// since this creates a cycle between the channel and us. This cycle has
|
||||||
|
|
|
||||||
|
|
@ -825,12 +825,10 @@ static nsresult NewImageChannel(
|
||||||
// triggeringPrincipal as the channel's originAttributes. This allows the
|
// triggeringPrincipal as the channel's originAttributes. This allows the
|
||||||
// favicon loading from XUL will use the correct originAttributes.
|
// favicon loading from XUL will use the correct originAttributes.
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = (*aResult)->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = (*aResult)->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
rv = loadInfo->SetOriginAttributes(
|
rv = loadInfo->SetOriginAttributes(
|
||||||
aTriggeringPrincipal->OriginAttributesRef());
|
aTriggeringPrincipal->OriginAttributesRef());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// either we are loading something inside a document, in which case
|
// either we are loading something inside a document, in which case
|
||||||
// we should always have a requestingNode, or we are loading something
|
// we should always have a requestingNode, or we are loading something
|
||||||
|
|
@ -858,11 +856,9 @@ static nsresult NewImageChannel(
|
||||||
}
|
}
|
||||||
attrs.mPrivateBrowsingId = aRespectPrivacy ? 1 : 0;
|
attrs.mPrivateBrowsingId = aRespectPrivacy ? 1 : 0;
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = (*aResult)->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = (*aResult)->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
rv = loadInfo->SetOriginAttributes(attrs);
|
rv = loadInfo->SetOriginAttributes(attrs);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
return rv;
|
return rv;
|
||||||
|
|
@ -2374,12 +2370,9 @@ nsresult imgLoader::LoadImageWithChannel(nsIChannel* channel,
|
||||||
nsCOMPtr<Document> doc = do_QueryInterface(aCX);
|
nsCOMPtr<Document> doc = do_QueryInterface(aCX);
|
||||||
|
|
||||||
NS_ENSURE_TRUE(channel, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(channel, NS_ERROR_FAILURE);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
|
|
||||||
OriginAttributes attrs;
|
OriginAttributes attrs = loadInfo->GetOriginAttributes();
|
||||||
if (loadInfo) {
|
|
||||||
attrs = loadInfo->GetOriginAttributes();
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
ImageCacheKey key(uri, attrs, doc, rv);
|
ImageCacheKey key(uri, attrs, doc, rv);
|
||||||
|
|
@ -2420,12 +2413,10 @@ nsresult imgLoader::LoadImageWithChannel(nsIChannel* channel,
|
||||||
// Since aCanMakeNewChannel == false, we don't need to pass content policy
|
// Since aCanMakeNewChannel == false, we don't need to pass content policy
|
||||||
// type/principal/etc
|
// type/principal/etc
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
// if there is a loadInfo, use the right contentType, otherwise
|
// if there is a loadInfo, use the right contentType, otherwise
|
||||||
// default to the internal image type
|
// default to the internal image type
|
||||||
nsContentPolicyType policyType =
|
nsContentPolicyType policyType = loadInfo->InternalContentPolicyType();
|
||||||
loadInfo ? loadInfo->InternalContentPolicyType()
|
|
||||||
: nsIContentPolicy::TYPE_INTERNAL_IMAGE;
|
|
||||||
|
|
||||||
if (ValidateEntry(entry, uri, nullptr, nullptr, RP_Unset, nullptr,
|
if (ValidateEntry(entry, uri, nullptr, nullptr, RP_Unset, nullptr,
|
||||||
aObserver, aCX, doc, requestFlags, policyType, false,
|
aObserver, aCX, doc, requestFlags, policyType, false,
|
||||||
|
|
|
||||||
|
|
@ -1200,7 +1200,7 @@ imgRequest::OnRedirectVerifyCallback(nsresult result) {
|
||||||
// to upgrade all requests from http to https before any data is fetched
|
// to upgrade all requests from http to https before any data is fetched
|
||||||
// from the network. Do not pollute mHadInsecureRedirect in case of such an
|
// from the network. Do not pollute mHadInsecureRedirect in case of such an
|
||||||
// internal redirect.
|
// internal redirect.
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
bool upgradeInsecureRequests =
|
bool upgradeInsecureRequests =
|
||||||
loadInfo ? loadInfo->GetUpgradeInsecureRequests() ||
|
loadInfo ? loadInfo->GetUpgradeInsecureRequests() ||
|
||||||
loadInfo->GetBrowserUpgradeInsecureRequests()
|
loadInfo->GetBrowserUpgradeInsecureRequests()
|
||||||
|
|
|
||||||
|
|
@ -743,8 +743,8 @@ nsresult SheetLoadData::VerifySheetReadyToParse(nsresult aStatus,
|
||||||
SRIMetadata sriMetadata;
|
SRIMetadata sriMetadata;
|
||||||
mSheet->GetIntegrity(sriMetadata);
|
mSheet->GetIntegrity(sriMetadata);
|
||||||
if (sriMetadata.IsEmpty()) {
|
if (sriMetadata.IsEmpty()) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo && loadInfo->GetEnforceSRI()) {
|
if (loadInfo->GetEnforceSRI()) {
|
||||||
LOG((" Load was blocked by SRI"));
|
LOG((" Load was blocked by SRI"));
|
||||||
MOZ_LOG(gSriPRLog, mozilla::LogLevel::Debug,
|
MOZ_LOG(gSriPRLog, mozilla::LogLevel::Debug,
|
||||||
("css::Loader::OnStreamComplete, required SRI not found"));
|
("css::Loader::OnStreamComplete, required SRI not found"));
|
||||||
|
|
@ -1326,7 +1326,7 @@ nsresult Loader::LoadSheet(SheetLoadData* aLoadData,
|
||||||
if (element && element->IsHTMLElement()) {
|
if (element && element->IsHTMLElement()) {
|
||||||
nsAutoString cspNonce;
|
nsAutoString cspNonce;
|
||||||
element->GetAttribute(NS_LITERAL_STRING("nonce"), cspNonce);
|
element->GetAttribute(NS_LITERAL_STRING("nonce"), cspNonce);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
loadInfo->SetCspNonce(cspNonce);
|
loadInfo->SetCspNonce(cspNonce);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1465,7 +1465,7 @@ nsresult Loader::LoadSheet(SheetLoadData* aLoadData,
|
||||||
if (element && element->IsHTMLElement()) {
|
if (element && element->IsHTMLElement()) {
|
||||||
nsAutoString cspNonce;
|
nsAutoString cspNonce;
|
||||||
element->GetAttribute(NS_LITERAL_STRING("nonce"), cspNonce);
|
element->GetAttribute(NS_LITERAL_STRING("nonce"), cspNonce);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
loadInfo->SetCspNonce(cspNonce);
|
loadInfo->SetCspNonce(cspNonce);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -269,12 +269,10 @@ LoadInfo::LoadInfo(
|
||||||
// if owner doc has content signature, we enforce SRI
|
// if owner doc has content signature, we enforce SRI
|
||||||
nsCOMPtr<nsIChannel> channel = aLoadingContext->OwnerDoc()->GetChannel();
|
nsCOMPtr<nsIChannel> channel = aLoadingContext->OwnerDoc()->GetChannel();
|
||||||
if (channel) {
|
if (channel) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
mEnforceSRI = loadInfo->GetVerifySignedContent();
|
mEnforceSRI = loadInfo->GetVerifySignedContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// If CSP requires SRI (require-sri-for), then store that information
|
// If CSP requires SRI (require-sri-for), then store that information
|
||||||
// in the loadInfo so we can enforce SRI before loading the subresource.
|
// in the loadInfo so we can enforce SRI before loading the subresource.
|
||||||
|
|
|
||||||
|
|
@ -1255,10 +1255,8 @@ nsresult Predictor::Prefetch(nsIURI *uri, nsIURI *referrer,
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
rv = loadInfo->SetOriginAttributes(originAttributes);
|
rv = loadInfo->SetOriginAttributes(originAttributes);
|
||||||
}
|
|
||||||
|
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
PREDICTOR_LOG(
|
PREDICTOR_LOG(
|
||||||
|
|
|
||||||
|
|
@ -74,8 +74,8 @@ nsresult nsAsyncRedirectVerifyHelper::Init(
|
||||||
|
|
||||||
if (!(flags & (nsIChannelEventSink::REDIRECT_INTERNAL |
|
if (!(flags & (nsIChannelEventSink::REDIRECT_INTERNAL |
|
||||||
nsIChannelEventSink::REDIRECT_STS_UPGRADE))) {
|
nsIChannelEventSink::REDIRECT_STS_UPGRADE))) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = oldChan->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = oldChan->LoadInfo();
|
||||||
if (loadInfo && loadInfo->GetDontFollowRedirects()) {
|
if (loadInfo->GetDontFollowRedirects()) {
|
||||||
ExplicitCallback(NS_BINDING_ABORTED);
|
ExplicitCallback(NS_BINDING_ABORTED);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,9 +83,8 @@ nsresult nsBaseChannel::Redirect(nsIChannel *newChannel, uint32_t redirectFlags,
|
||||||
|
|
||||||
// make a copy of the loadinfo, append to the redirectchain
|
// make a copy of the loadinfo, append to the redirectchain
|
||||||
// and set it on the new channel
|
// and set it on the new channel
|
||||||
if (mLoadInfo) {
|
nsSecurityFlags secFlags =
|
||||||
nsSecurityFlags secFlags = mLoadInfo->GetSecurityFlags() &
|
mLoadInfo->GetSecurityFlags() & ~nsILoadInfo::SEC_FORCE_INHERIT_PRINCIPAL;
|
||||||
~nsILoadInfo::SEC_FORCE_INHERIT_PRINCIPAL;
|
|
||||||
nsCOMPtr<nsILoadInfo> newLoadInfo =
|
nsCOMPtr<nsILoadInfo> newLoadInfo =
|
||||||
static_cast<mozilla::net::LoadInfo *>(mLoadInfo.get())
|
static_cast<mozilla::net::LoadInfo *>(mLoadInfo.get())
|
||||||
->CloneWithNewSecFlags(secFlags);
|
->CloneWithNewSecFlags(secFlags);
|
||||||
|
|
@ -115,10 +114,9 @@ nsresult nsBaseChannel::Redirect(nsIChannel *newChannel, uint32_t redirectFlags,
|
||||||
// the result principal URI on the load info null.
|
// the result principal URI on the load info null.
|
||||||
nsCOMPtr<nsIURI> resultPrincipalURI;
|
nsCOMPtr<nsIURI> resultPrincipalURI;
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> existingLoadInfo = newChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> existingLoadInfo = newChannel->LoadInfo();
|
||||||
if (existingLoadInfo) {
|
if (existingLoadInfo) {
|
||||||
existingLoadInfo->GetResultPrincipalURI(
|
existingLoadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI));
|
||||||
getter_AddRefs(resultPrincipalURI));
|
|
||||||
}
|
}
|
||||||
if (!resultPrincipalURI) {
|
if (!resultPrincipalURI) {
|
||||||
newChannel->GetOriginalURI(getter_AddRefs(resultPrincipalURI));
|
newChannel->GetOriginalURI(getter_AddRefs(resultPrincipalURI));
|
||||||
|
|
@ -127,11 +125,6 @@ nsresult nsBaseChannel::Redirect(nsIChannel *newChannel, uint32_t redirectFlags,
|
||||||
newLoadInfo->SetResultPrincipalURI(resultPrincipalURI);
|
newLoadInfo->SetResultPrincipalURI(resultPrincipalURI);
|
||||||
|
|
||||||
newChannel->SetLoadInfo(newLoadInfo);
|
newChannel->SetLoadInfo(newLoadInfo);
|
||||||
} else {
|
|
||||||
// the newChannel was created with a dummy loadInfo, we should clear
|
|
||||||
// it in case the original channel does not have a loadInfo
|
|
||||||
newChannel->SetLoadInfo(nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Preserve the privacy bit if it has been overridden
|
// Preserve the privacy bit if it has been overridden
|
||||||
if (mPrivateBrowsingOverriden) {
|
if (mPrivateBrowsingOverriden) {
|
||||||
|
|
|
||||||
|
|
@ -356,11 +356,11 @@ interface nsIChannel : nsIRequest
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline already_AddRefed<nsILoadInfo> GetLoadInfo()
|
inline already_AddRefed<nsILoadInfo> LoadInfo()
|
||||||
{
|
{
|
||||||
nsCOMPtr<nsILoadInfo> result;
|
nsCOMPtr<nsILoadInfo> result;
|
||||||
mozilla::DebugOnly<nsresult> rv = GetLoadInfo(getter_AddRefs(result));
|
mozilla::DebugOnly<nsresult> rv = GetLoadInfo(getter_AddRefs(result));
|
||||||
MOZ_ASSERT(NS_SUCCEEDED(rv) || !result);
|
MOZ_ASSERT(NS_SUCCEEDED(rv) && result);
|
||||||
return result.forget();
|
return result.forget();
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
|
||||||
|
|
@ -192,8 +192,7 @@ interface nsIInterceptedChannel : nsISupports
|
||||||
GetSubresourceTimeStampKey(nsIChannel* aChannel, nsACString& aKey)
|
GetSubresourceTimeStampKey(nsIChannel* aChannel, nsACString& aKey)
|
||||||
{
|
{
|
||||||
if (!nsContentUtils::IsNonSubresourceRequest(aChannel)) {
|
if (!nsContentUtils::IsNonSubresourceRequest(aChannel)) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
switch(loadInfo->InternalContentPolicyType()) {
|
switch(loadInfo->InternalContentPolicyType()) {
|
||||||
case nsIContentPolicy::TYPE_SCRIPT:
|
case nsIContentPolicy::TYPE_SCRIPT:
|
||||||
case nsIContentPolicy::TYPE_INTERNAL_SCRIPT:
|
case nsIContentPolicy::TYPE_INTERNAL_SCRIPT:
|
||||||
|
|
@ -224,7 +223,6 @@ interface nsIInterceptedChannel : nsISupports
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -898,7 +898,7 @@ nsresult nsIOService::NewChannelFromURIWithProxyFlagsInternal(
|
||||||
aLoadingNode, aSecurityFlags, aContentPolicyType,
|
aLoadingNode, aSecurityFlags, aContentPolicyType,
|
||||||
aLoadingClientInfo, aController);
|
aLoadingClientInfo, aController);
|
||||||
}
|
}
|
||||||
NS_ASSERTION(loadInfo, "Please pass security info when creating a channel");
|
MOZ_ASSERT(loadInfo, "Please pass security info when creating a channel");
|
||||||
return NewChannelFromURIWithProxyFlagsInternal(aURI, aProxyURI, aProxyFlags,
|
return NewChannelFromURIWithProxyFlagsInternal(aURI, aProxyURI, aProxyFlags,
|
||||||
loadInfo, result);
|
loadInfo, result);
|
||||||
}
|
}
|
||||||
|
|
@ -935,7 +935,7 @@ nsresult nsIOService::NewChannelFromURIWithProxyFlagsInternal(
|
||||||
if (aLoadInfo) {
|
if (aLoadInfo) {
|
||||||
// make sure we have the same instance of loadInfo on the newly created
|
// make sure we have the same instance of loadInfo on the newly created
|
||||||
// channel
|
// channel
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (aLoadInfo != loadInfo) {
|
if (aLoadInfo != loadInfo) {
|
||||||
MOZ_ASSERT(false, "newly created channel must have a loadinfo attached");
|
MOZ_ASSERT(false, "newly created channel must have a loadinfo attached");
|
||||||
return NS_ERROR_UNEXPECTED;
|
return NS_ERROR_UNEXPECTED;
|
||||||
|
|
@ -1709,11 +1709,8 @@ IOServiceProxyCallback::OnProxyAvailable(nsICancelable *request,
|
||||||
do_QueryInterface(handler);
|
do_QueryInterface(handler);
|
||||||
if (!speculativeHandler) return NS_OK;
|
if (!speculativeHandler) return NS_OK;
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
nsCOMPtr<nsIPrincipal> principal;
|
nsCOMPtr<nsIPrincipal> principal = loadInfo->LoadingPrincipal();
|
||||||
if (loadInfo) {
|
|
||||||
principal = loadInfo->LoadingPrincipal();
|
|
||||||
}
|
|
||||||
|
|
||||||
nsLoadFlags loadFlags = 0;
|
nsLoadFlags loadFlags = 0;
|
||||||
channel->GetLoadFlags(&loadFlags);
|
channel->GetLoadFlags(&loadFlags);
|
||||||
|
|
|
||||||
|
|
@ -232,10 +232,7 @@ nsresult NS_NewChannelInternal(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aPerformanceStorage) {
|
if (aPerformanceStorage) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
rv = channel->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
loadInfo->SetPerformanceStorage(aPerformanceStorage);
|
loadInfo->SetPerformanceStorage(aPerformanceStorage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -387,10 +384,7 @@ nsresult NS_NewChannelInternal(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aPerformanceStorage) {
|
if (aPerformanceStorage) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
rv = channel->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
loadInfo->SetPerformanceStorage(aPerformanceStorage);
|
loadInfo->SetPerformanceStorage(aPerformanceStorage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -646,6 +640,7 @@ nsresult NS_NewInputStreamChannelInternal(
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MOZ_ASSERT(aLoadInfo, "need a loadinfo to create a inputstreamchannel");
|
||||||
channel->SetLoadInfo(aLoadInfo);
|
channel->SetLoadInfo(aLoadInfo);
|
||||||
|
|
||||||
// If we're sandboxed, make sure to clear any owner the channel
|
// If we're sandboxed, make sure to clear any owner the channel
|
||||||
|
|
@ -1703,12 +1698,8 @@ bool NS_UsePrivateBrowsing(nsIChannel *channel) {
|
||||||
|
|
||||||
bool NS_GetOriginAttributes(nsIChannel *aChannel,
|
bool NS_GetOriginAttributes(nsIChannel *aChannel,
|
||||||
mozilla::OriginAttributes &aAttributes) {
|
mozilla::OriginAttributes &aAttributes) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
// For some channels, they might not have loadInfo, like
|
|
||||||
// ExternalHelperAppParent..
|
|
||||||
if (loadInfo) {
|
|
||||||
loadInfo->GetOriginAttributes(&aAttributes);
|
loadInfo->GetOriginAttributes(&aAttributes);
|
||||||
}
|
|
||||||
|
|
||||||
bool isPrivate = false;
|
bool isPrivate = false;
|
||||||
nsCOMPtr<nsIPrivateBrowsingChannel> pbChannel = do_QueryInterface(aChannel);
|
nsCOMPtr<nsIPrivateBrowsingChannel> pbChannel = do_QueryInterface(aChannel);
|
||||||
|
|
@ -1726,15 +1717,7 @@ bool NS_GetOriginAttributes(nsIChannel *aChannel,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NS_HasBeenCrossOrigin(nsIChannel *aChannel, bool aReport) {
|
bool NS_HasBeenCrossOrigin(nsIChannel *aChannel, bool aReport) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
MOZ_RELEASE_ASSERT(
|
|
||||||
loadInfo,
|
|
||||||
"Origin tracking only works for channels created with a loadinfo");
|
|
||||||
|
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TYPE_DOCUMENT loads have a null LoadingPrincipal and can not be cross
|
// TYPE_DOCUMENT loads have a null LoadingPrincipal and can not be cross
|
||||||
// origin.
|
// origin.
|
||||||
if (!loadInfo->LoadingPrincipal()) {
|
if (!loadInfo->LoadingPrincipal()) {
|
||||||
|
|
@ -1795,10 +1778,7 @@ bool NS_IsSafeTopLevelNav(nsIChannel *aChannel) {
|
||||||
if (!aChannel) {
|
if (!aChannel) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (loadInfo->GetExternalContentPolicyType() !=
|
if (loadInfo->GetExternalContentPolicyType() !=
|
||||||
nsIContentPolicy::TYPE_DOCUMENT) {
|
nsIContentPolicy::TYPE_DOCUMENT) {
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -1818,11 +1798,7 @@ bool NS_IsSameSiteForeign(nsIChannel *aChannel, nsIURI *aHostURI) {
|
||||||
if (!aChannel) {
|
if (!aChannel) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not treat loads triggered by web extensions as foreign
|
// Do not treat loads triggered by web extensions as foreign
|
||||||
nsCOMPtr<nsIURI> channelURI;
|
nsCOMPtr<nsIURI> channelURI;
|
||||||
NS_GetFinalChannelURI(aChannel, getter_AddRefs(channelURI));
|
NS_GetFinalChannelURI(aChannel, getter_AddRefs(channelURI));
|
||||||
|
|
@ -2024,16 +2000,13 @@ already_AddRefed<nsIURI> NS_GetInnermostURI(nsIURI *aURI) {
|
||||||
nsresult NS_GetFinalChannelURI(nsIChannel *channel, nsIURI **uri) {
|
nsresult NS_GetFinalChannelURI(nsIChannel *channel, nsIURI **uri) {
|
||||||
*uri = nullptr;
|
*uri = nullptr;
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
nsCOMPtr<nsIURI> resultPrincipalURI;
|
nsCOMPtr<nsIURI> resultPrincipalURI;
|
||||||
loadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI));
|
loadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI));
|
||||||
if (resultPrincipalURI) {
|
if (resultPrincipalURI) {
|
||||||
resultPrincipalURI.forget(uri);
|
resultPrincipalURI.forget(uri);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return channel->GetOriginalURI(uri);
|
return channel->GetOriginalURI(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2359,13 +2332,13 @@ nsresult NS_LinkRedirectChannels(uint32_t channelId,
|
||||||
|
|
||||||
nsresult NS_MaybeOpenChannelUsingOpen(nsIChannel *aChannel,
|
nsresult NS_MaybeOpenChannelUsingOpen(nsIChannel *aChannel,
|
||||||
nsIInputStream **aStream) {
|
nsIInputStream **aStream) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
return aChannel->Open(aStream);
|
return aChannel->Open(aStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult NS_MaybeOpenChannelUsingAsyncOpen(nsIChannel *aChannel,
|
nsresult NS_MaybeOpenChannelUsingAsyncOpen(nsIChannel *aChannel,
|
||||||
nsIStreamListener *aListener) {
|
nsIStreamListener *aListener) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
return aChannel->AsyncOpen(aListener);
|
return aChannel->AsyncOpen(aListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2688,12 +2661,11 @@ nsresult NS_GetSecureUpgradedURI(nsIURI *aURI, nsIURI **aUpgradedURI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult NS_CompareLoadInfoAndLoadContext(nsIChannel *aChannel) {
|
nsresult NS_CompareLoadInfoAndLoadContext(nsIChannel *aChannel) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
aChannel->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
|
|
||||||
nsCOMPtr<nsILoadContext> loadContext;
|
nsCOMPtr<nsILoadContext> loadContext;
|
||||||
NS_QueryNotificationCallbacks(aChannel, loadContext);
|
NS_QueryNotificationCallbacks(aChannel, loadContext);
|
||||||
if (!loadInfo || !loadContext) {
|
if (!loadContext) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -176,11 +176,8 @@ void CookieServiceChild::TrackCookieLoad(nsIChannel *aChannel) {
|
||||||
rejectedReason);
|
rejectedReason);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
mozilla::OriginAttributes attrs;
|
mozilla::OriginAttributes attrs = loadInfo->GetOriginAttributes();
|
||||||
if (loadInfo) {
|
|
||||||
attrs = loadInfo->GetOriginAttributes();
|
|
||||||
}
|
|
||||||
URIParams uriParams;
|
URIParams uriParams;
|
||||||
SerializeURI(uri, uriParams);
|
SerializeURI(uri, uriParams);
|
||||||
bool isSafeTopLevelNav = NS_IsSafeTopLevelNav(aChannel);
|
bool isSafeTopLevelNav = NS_IsSafeTopLevelNav(aChannel);
|
||||||
|
|
@ -484,11 +481,9 @@ nsresult CookieServiceChild::GetCookieStringInternal(nsIURI *aHostURI,
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||||
mozilla::OriginAttributes attrs;
|
mozilla::OriginAttributes attrs;
|
||||||
if (aChannel) {
|
if (aChannel) {
|
||||||
loadInfo = aChannel->GetLoadInfo();
|
loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
attrs = loadInfo->GetOriginAttributes();
|
attrs = loadInfo->GetOriginAttributes();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Asynchronously call the parent.
|
// Asynchronously call the parent.
|
||||||
bool isForeign = true;
|
bool isForeign = true;
|
||||||
|
|
@ -569,10 +564,8 @@ nsresult CookieServiceChild::SetCookieStringInternal(nsIURI *aHostURI,
|
||||||
aChannel->GetURI(getter_AddRefs(channelURI));
|
aChannel->GetURI(getter_AddRefs(channelURI));
|
||||||
SerializeURI(channelURI, channelURIParams);
|
SerializeURI(channelURI, channelURIParams);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
attrs = loadInfo->GetOriginAttributes();
|
attrs = loadInfo->GetOriginAttributes();
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
SerializeURI(nullptr, channelURIParams);
|
SerializeURI(nullptr, channelURIParams);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -132,11 +132,8 @@ void CookieServiceParent::TrackCookieLoad(nsIChannel *aChannel) {
|
||||||
nsCOMPtr<nsIURI> uri;
|
nsCOMPtr<nsIURI> uri;
|
||||||
aChannel->GetURI(getter_AddRefs(uri));
|
aChannel->GetURI(getter_AddRefs(uri));
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
mozilla::OriginAttributes attrs;
|
mozilla::OriginAttributes attrs = loadInfo->GetOriginAttributes();
|
||||||
if (loadInfo) {
|
|
||||||
attrs = loadInfo->GetOriginAttributes();
|
|
||||||
}
|
|
||||||
bool isSafeTopLevelNav = NS_IsSafeTopLevelNav(aChannel);
|
bool isSafeTopLevelNav = NS_IsSafeTopLevelNav(aChannel);
|
||||||
bool aIsSameSiteForeign = NS_IsSameSiteForeign(aChannel, uri);
|
bool aIsSameSiteForeign = NS_IsSameSiteForeign(aChannel, uri);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3390,9 +3390,8 @@ bool nsCookieService::CanSetCookie(nsIURI *aHostURI, const nsCookieKey &aKey,
|
||||||
if (aChannel) {
|
if (aChannel) {
|
||||||
nsCOMPtr<nsIURI> channelURI;
|
nsCOMPtr<nsIURI> channelURI;
|
||||||
NS_GetFinalChannelURI(aChannel, getter_AddRefs(channelURI));
|
NS_GetFinalChannelURI(aChannel, getter_AddRefs(channelURI));
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
addonAllowsLoad =
|
addonAllowsLoad = BasePrincipal::Cast(loadInfo->TriggeringPrincipal())
|
||||||
loadInfo && BasePrincipal::Cast(loadInfo->TriggeringPrincipal())
|
|
||||||
->AddonAllowsLoad(channelURI);
|
->AddonAllowsLoad(channelURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -186,11 +186,7 @@ bool ChannelEventQueue::MaybeSuspendIfEventsAreSuppressed() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Figure out if this is for an XHR, if we haven't done so already.
|
// Figure out if this is for an XHR, if we haven't done so already.
|
||||||
if (!mHasCheckedForXMLHttpRequest) {
|
if (!mHasCheckedForXMLHttpRequest) {
|
||||||
nsContentPolicyType contentType = loadInfo->InternalContentPolicyType();
|
nsContentPolicyType contentType = loadInfo->InternalContentPolicyType();
|
||||||
|
|
|
||||||
|
|
@ -204,9 +204,8 @@ nsAboutProtocolHandler::NewChannel(nsIURI *uri, nsILoadInfo *aLoadInfo,
|
||||||
// set the LoadInfo on the newly created channel yet, as
|
// set the LoadInfo on the newly created channel yet, as
|
||||||
// an interim solution we set the LoadInfo here if not
|
// an interim solution we set the LoadInfo here if not
|
||||||
// available on the channel. Bug 1087720
|
// available on the channel. Bug 1087720
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = (*result)->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = (*result)->LoadInfo();
|
||||||
if (aLoadInfo != loadInfo) {
|
if (aLoadInfo != loadInfo) {
|
||||||
if (loadInfo) {
|
|
||||||
NS_ASSERTION(false,
|
NS_ASSERTION(false,
|
||||||
"nsIAboutModule->newChannel(aURI, aLoadInfo) needs to "
|
"nsIAboutModule->newChannel(aURI, aLoadInfo) needs to "
|
||||||
"set LoadInfo");
|
"set LoadInfo");
|
||||||
|
|
@ -217,9 +216,8 @@ nsAboutProtocolHandler::NewChannel(nsIURI *uri, nsILoadInfo *aLoadInfo,
|
||||||
nsIScriptError::warningFlag,
|
nsIScriptError::warningFlag,
|
||||||
NS_LITERAL_CSTRING("Security by Default"),
|
NS_LITERAL_CSTRING("Security by Default"),
|
||||||
nullptr, // aDocument
|
nullptr, // aDocument
|
||||||
nsContentUtils::eNECKO_PROPERTIES, "APIDeprecationWarning",
|
nsContentUtils::eNECKO_PROPERTIES, "APIDeprecationWarning", params,
|
||||||
params, mozilla::ArrayLength(params));
|
mozilla::ArrayLength(params));
|
||||||
}
|
|
||||||
(*result)->SetLoadInfo(aLoadInfo);
|
(*result)->SetLoadInfo(aLoadInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2581,9 +2581,6 @@ nsresult HttpBaseChannel::AddSecurityMessage(
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||||
GetLoadInfo(getter_AddRefs(loadInfo));
|
GetLoadInfo(getter_AddRefs(loadInfo));
|
||||||
if (!loadInfo) {
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto innerWindowID = loadInfo->GetInnerWindowID();
|
auto innerWindowID = loadInfo->GetInnerWindowID();
|
||||||
|
|
||||||
|
|
@ -3440,17 +3437,14 @@ nsresult HttpBaseChannel::SetupReplacementChannel(nsIURI* newURI,
|
||||||
// If the protocol handler that created the channel wants to use
|
// If the protocol handler that created the channel wants to use
|
||||||
// the originalURI of the channel as the principal URI, this fulfills
|
// the originalURI of the channel as the principal URI, this fulfills
|
||||||
// that request - newURI is the original URI of the channel.
|
// that request - newURI is the original URI of the channel.
|
||||||
nsCOMPtr<nsILoadInfo> newLoadInfo = newChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> newLoadInfo = newChannel->LoadInfo();
|
||||||
if (newLoadInfo) {
|
|
||||||
nsCOMPtr<nsIURI> resultPrincipalURI;
|
nsCOMPtr<nsIURI> resultPrincipalURI;
|
||||||
rv = newLoadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI));
|
rv = newLoadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
if (!resultPrincipalURI) {
|
if (!resultPrincipalURI) {
|
||||||
rv = newLoadInfo->SetResultPrincipalURI(newURI);
|
rv = newLoadInfo->SetResultPrincipalURI(newURI);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t newLoadFlags = mLoadFlags | LOAD_REPLACE;
|
uint32_t newLoadFlags = mLoadFlags | LOAD_REPLACE;
|
||||||
// if the original channel was using SSL and this channel is not using
|
// if the original channel was using SSL and this channel is not using
|
||||||
|
|
|
||||||
|
|
@ -444,10 +444,6 @@ bool HttpChannelParent::DoAsyncOpen(
|
||||||
return SendFailedAsyncOpen(rv);
|
return SendFailedAsyncOpen(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!loadInfo) {
|
|
||||||
return SendFailedAsyncOpen(NS_ERROR_UNEXPECTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIChannel> channel;
|
nsCOMPtr<nsIChannel> channel;
|
||||||
rv = NS_NewChannelInternal(getter_AddRefs(channel), uri, loadInfo, nullptr,
|
rv = NS_NewChannelInternal(getter_AddRefs(channel), uri, loadInfo, nullptr,
|
||||||
nullptr, nullptr, aLoadFlags, ios);
|
nullptr, nullptr, aLoadFlags, ios);
|
||||||
|
|
|
||||||
|
|
@ -32,11 +32,7 @@ namespace net {
|
||||||
nsresult topWindowURIResult =
|
nsresult topWindowURIResult =
|
||||||
httpChannelInternal->GetTopWindowURI(getter_AddRefs(topWindowURI));
|
httpChannelInternal->GetTopWindowURI(getter_AddRefs(topWindowURI));
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
OptionalLoadInfoArgs loadInfoArgs;
|
OptionalLoadInfoArgs loadInfoArgs;
|
||||||
mozilla::ipc::LoadInfoToLoadInfoArgs(loadInfo, &loadInfoArgs);
|
mozilla::ipc::LoadInfoToLoadInfoArgs(loadInfo, &loadInfoArgs);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -532,8 +532,8 @@ nsresult nsCORSListenerProxy::CheckRequestApproved(nsIRequest* aRequest) {
|
||||||
return NS_ERROR_DOM_BAD_URI;
|
return NS_ERROR_DOM_BAD_URI;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = http->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = http->LoadInfo();
|
||||||
if (loadInfo && loadInfo->GetServiceWorkerTaintingSynthesized()) {
|
if (loadInfo->GetServiceWorkerTaintingSynthesized()) {
|
||||||
// For synthesized responses, we don't need to perform any checks.
|
// For synthesized responses, we don't need to perform any checks.
|
||||||
// Note: This would be unsafe if we ever changed our behavior to allow
|
// Note: This would be unsafe if we ever changed our behavior to allow
|
||||||
// service workers to intercept CORS preflights.
|
// service workers to intercept CORS preflights.
|
||||||
|
|
@ -842,14 +842,7 @@ bool CheckUpgradeInsecureRequestsPreventsCORS(
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
rv = aChannel->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
NS_ENSURE_SUCCESS(rv, false);
|
|
||||||
|
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// lets see if the loadInfo indicates that the request will
|
// lets see if the loadInfo indicates that the request will
|
||||||
// be upgraded before fetching any data from the netwerk.
|
// be upgraded before fetching any data from the netwerk.
|
||||||
return loadInfo->GetUpgradeInsecureRequests() ||
|
return loadInfo->GetUpgradeInsecureRequests() ||
|
||||||
|
|
@ -865,7 +858,7 @@ nsresult nsCORSListenerProxy::UpdateChannel(nsIChannel* aChannel,
|
||||||
rv = aChannel->GetOriginalURI(getter_AddRefs(originalURI));
|
rv = aChannel->GetOriginalURI(getter_AddRefs(originalURI));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
|
|
||||||
// exempt data URIs from the same origin check.
|
// exempt data URIs from the same origin check.
|
||||||
if (aAllowDataURI == DataURIHandling::Allow && originalURI == uri) {
|
if (aAllowDataURI == DataURIHandling::Allow && originalURI == uri) {
|
||||||
|
|
@ -875,7 +868,7 @@ nsresult nsCORSListenerProxy::UpdateChannel(nsIChannel* aChannel,
|
||||||
if (dataScheme) {
|
if (dataScheme) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
if (loadInfo && loadInfo->GetAboutBlankInherits() && NS_IsAboutBlank(uri)) {
|
if (loadInfo->GetAboutBlankInherits() && NS_IsAboutBlank(uri)) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1001,9 +994,8 @@ nsresult nsCORSListenerProxy::CheckPreflightNeeded(nsIChannel* aChannel,
|
||||||
UpdateType aUpdateType) {
|
UpdateType aUpdateType) {
|
||||||
// If this caller isn't using AsyncOpen, or if this *is* a preflight channel,
|
// If this caller isn't using AsyncOpen, or if this *is* a preflight channel,
|
||||||
// then we shouldn't initiate preflight for this channel.
|
// then we shouldn't initiate preflight for this channel.
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo ||
|
if (loadInfo->GetSecurityMode() !=
|
||||||
loadInfo->GetSecurityMode() !=
|
|
||||||
nsILoadInfo::SEC_REQUIRE_CORS_DATA_INHERITS ||
|
nsILoadInfo::SEC_REQUIRE_CORS_DATA_INHERITS ||
|
||||||
loadInfo->GetIsPreflight()) {
|
loadInfo->GetIsPreflight()) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
|
@ -1223,7 +1215,7 @@ nsCORSPreflightListener::OnStartRequest(nsIRequest* aRequest,
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{
|
{
|
||||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(aRequest);
|
nsCOMPtr<nsIChannel> channel = do_QueryInterface(aRequest);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel ? channel->GetLoadInfo() : nullptr;
|
nsCOMPtr<nsILoadInfo> loadInfo = channel ? channel->LoadInfo() : nullptr;
|
||||||
MOZ_ASSERT(!loadInfo || !loadInfo->GetServiceWorkerTaintingSynthesized());
|
MOZ_ASSERT(!loadInfo || !loadInfo->GetServiceWorkerTaintingSynthesized());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1398,13 +1390,7 @@ nsresult nsCORSListenerProxy::StartCORSPreflight(
|
||||||
nsresult rv = NS_GetFinalChannelURI(aRequestChannel, getter_AddRefs(uri));
|
nsresult rv = NS_GetFinalChannelURI(aRequestChannel, getter_AddRefs(uri));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> originalLoadInfo = aRequestChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> originalLoadInfo = aRequestChannel->LoadInfo();
|
||||||
MOZ_ASSERT(originalLoadInfo,
|
|
||||||
"can not perform CORS preflight without a loadInfo");
|
|
||||||
if (!originalLoadInfo) {
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
MOZ_ASSERT(originalLoadInfo->GetSecurityMode() ==
|
MOZ_ASSERT(originalLoadInfo->GetSecurityMode() ==
|
||||||
nsILoadInfo::SEC_REQUIRE_CORS_DATA_INHERITS,
|
nsILoadInfo::SEC_REQUIRE_CORS_DATA_INHERITS,
|
||||||
"how did we end up here?");
|
"how did we end up here?");
|
||||||
|
|
|
||||||
|
|
@ -899,15 +899,13 @@ bool nsHttpChannelAuthProvider::BlockPrompt(bool proxyAuth) {
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIChannel> chan = do_QueryInterface(mAuthChannel);
|
nsCOMPtr<nsIChannel> chan = do_QueryInterface(mAuthChannel);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
nsCOMPtr<nsILoadInfo> loadInfo = chan->LoadInfo();
|
||||||
chan->GetLoadInfo(getter_AddRefs(loadInfo));
|
|
||||||
|
|
||||||
// We will treat loads w/o loadInfo as a top level document.
|
// We will treat loads w/o loadInfo as a top level document.
|
||||||
bool topDoc = true;
|
bool topDoc = true;
|
||||||
bool xhr = false;
|
bool xhr = false;
|
||||||
bool nonWebContent = false;
|
bool nonWebContent = false;
|
||||||
|
|
||||||
if (loadInfo) {
|
|
||||||
if (loadInfo->GetExternalContentPolicyType() !=
|
if (loadInfo->GetExternalContentPolicyType() !=
|
||||||
nsIContentPolicy::TYPE_DOCUMENT) {
|
nsIContentPolicy::TYPE_DOCUMENT) {
|
||||||
topDoc = false;
|
topDoc = false;
|
||||||
|
|
@ -941,7 +939,6 @@ bool nsHttpChannelAuthProvider::BlockPrompt(bool proxyAuth) {
|
||||||
mCrossOrigin = true;
|
mCrossOrigin = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Telemetry::CanRecordPrereleaseData()) {
|
if (Telemetry::CanRecordPrereleaseData()) {
|
||||||
if (topDoc) {
|
if (topDoc) {
|
||||||
|
|
|
||||||
|
|
@ -136,11 +136,7 @@ nsresult nsViewSourceChannel::UpdateLoadInfoResultPrincipalURI() {
|
||||||
|
|
||||||
MOZ_ASSERT(mChannel);
|
MOZ_ASSERT(mChannel);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> channelLoadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> channelLoadInfo = mChannel->LoadInfo();
|
||||||
if (!channelLoadInfo) {
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIURI> channelResultPrincipalURI;
|
nsCOMPtr<nsIURI> channelResultPrincipalURI;
|
||||||
rv = channelLoadInfo->GetResultPrincipalURI(
|
rv = channelLoadInfo->GetResultPrincipalURI(
|
||||||
getter_AddRefs(channelResultPrincipalURI));
|
getter_AddRefs(channelResultPrincipalURI));
|
||||||
|
|
@ -290,21 +286,11 @@ nsViewSourceChannel::GetURI(nsIURI **aURI) {
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsViewSourceChannel::Open(nsIInputStream **aStream) {
|
nsViewSourceChannel::Open(nsIInputStream **aStream) {
|
||||||
NS_ENSURE_TRUE(mChannel, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(mChannel, NS_ERROR_FAILURE);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
|
||||||
if (!loadInfo) {
|
|
||||||
MOZ_ASSERT(loadInfo, "can not enforce security without loadInfo");
|
|
||||||
return NS_ERROR_UNEXPECTED;
|
|
||||||
}
|
|
||||||
return Open(aStream);
|
return Open(aStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsViewSourceChannel::AsyncOpen(nsIStreamListener *aListener) {
|
nsViewSourceChannel::AsyncOpen(nsIStreamListener *aListener) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
|
||||||
if (!loadInfo) {
|
|
||||||
MOZ_ASSERT(loadInfo, "can not enforce security without loadInfo");
|
|
||||||
return NS_ERROR_UNEXPECTED;
|
|
||||||
}
|
|
||||||
// We can't ensure GetInitialSecurityCheckDone here
|
// We can't ensure GetInitialSecurityCheckDone here
|
||||||
|
|
||||||
NS_ENSURE_TRUE(mChannel, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(mChannel, NS_ERROR_FAILURE);
|
||||||
|
|
|
||||||
|
|
@ -111,10 +111,8 @@ mozilla::ipc::IPCResult WyciwygChannelParent::RecvInit(
|
||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = chan->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = chan->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
rv = loadInfo->SetPrincipalToInherit(principalToInherit);
|
rv = loadInfo->SetPrincipalToInherit(principalToInherit);
|
||||||
}
|
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
if (!SendCancelEarly(rv)) {
|
if (!SendCancelEarly(rv)) {
|
||||||
return IPC_FAIL_NO_REASON(this);
|
return IPC_FAIL_NO_REASON(this);
|
||||||
|
|
@ -212,7 +210,7 @@ mozilla::ipc::IPCResult WyciwygChannelParent::RecvAsyncOpen(
|
||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
rv = mChannel->AsyncOpen(this);
|
rv = mChannel->AsyncOpen(this);
|
||||||
|
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,7 @@ LazyLogModule UrlClassifierCommon::sLog("nsChannelClassifier");
|
||||||
|
|
||||||
/* static */ bool UrlClassifierCommon::AddonMayLoad(nsIChannel* aChannel,
|
/* static */ bool UrlClassifierCommon::AddonMayLoad(nsIChannel* aChannel,
|
||||||
nsIURI* aURI) {
|
nsIURI* aURI) {
|
||||||
nsCOMPtr<nsILoadInfo> channelLoadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> channelLoadInfo = aChannel->LoadInfo();
|
||||||
if (!channelLoadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// loadingPrincipal is used here to ensure we are loading into an
|
// loadingPrincipal is used here to ensure we are loading into an
|
||||||
// addon principal. This allows an addon, with explicit permission, to
|
// addon principal. This allows an addon, with explicit permission, to
|
||||||
// call out to API endpoints that may otherwise get blocked.
|
// call out to API endpoints that may otherwise get blocked.
|
||||||
|
|
|
||||||
|
|
@ -98,10 +98,9 @@ UrlClassifierFeatureFlash::UrlClassifierFeatureFlash(
|
||||||
}
|
}
|
||||||
|
|
||||||
// We use Flash feature just for document loading.
|
// We use Flash feature just for document loading.
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
nsContentPolicyType contentPolicyType =
|
nsContentPolicyType contentPolicyType =
|
||||||
loadInfo ? loadInfo->GetExternalContentPolicyType()
|
loadInfo->GetExternalContentPolicyType();
|
||||||
: nsIContentPolicy::TYPE_INVALID;
|
|
||||||
|
|
||||||
if (contentPolicyType != nsIContentPolicy::TYPE_DOCUMENT &&
|
if (contentPolicyType != nsIContentPolicy::TYPE_DOCUMENT &&
|
||||||
contentPolicyType != nsIContentPolicy::TYPE_SUBDOCUMENT) {
|
contentPolicyType != nsIContentPolicy::TYPE_SUBDOCUMENT) {
|
||||||
|
|
|
||||||
|
|
@ -271,10 +271,7 @@ OCSPRequest::Run() {
|
||||||
attrs.mFirstPartyDomain = mOriginAttributes.mFirstPartyDomain;
|
attrs.mFirstPartyDomain = mOriginAttributes.mFirstPartyDomain;
|
||||||
attrs.mPrivateBrowsingId = mOriginAttributes.mPrivateBrowsingId;
|
attrs.mPrivateBrowsingId = mOriginAttributes.mPrivateBrowsingId;
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return NotifyDone(NS_ERROR_FAILURE, lock);
|
|
||||||
}
|
|
||||||
rv = loadInfo->SetOriginAttributes(attrs);
|
rv = loadInfo->SetOriginAttributes(attrs);
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
return NotifyDone(rv, lock);
|
return NotifyDone(rv, lock);
|
||||||
|
|
|
||||||
|
|
@ -1272,12 +1272,7 @@ bool AntiTrackingCommon::IsFirstPartyStorageAccessGrantedFor(
|
||||||
("Computing whether channel %p has access to URI %s", aChannel, _spec),
|
("Computing whether channel %p has access to URI %s", aChannel, _spec),
|
||||||
channelURI);
|
channelURI);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
LOG(("No loadInfo, bail out early"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We need to find the correct principal to check the cookie permission. For
|
// We need to find the correct principal to check the cookie permission. For
|
||||||
// third-party contexts, we want to check if the top-level window has a custom
|
// third-party contexts, we want to check if the top-level window has a custom
|
||||||
// cookie permission.
|
// cookie permission.
|
||||||
|
|
|
||||||
|
|
@ -396,11 +396,7 @@ nsresult ExtensionPolicyService::InjectContentScripts(
|
||||||
// Checks a request for matching content scripts, and begins pre-loading them
|
// Checks a request for matching content scripts, and begins pre-loading them
|
||||||
// if necessary.
|
// if necessary.
|
||||||
void ExtensionPolicyService::CheckRequest(nsIChannel* aChannel) {
|
void ExtensionPolicyService::CheckRequest(nsIChannel* aChannel) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (!loadInfo) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto loadType = loadInfo->GetExternalContentPolicyType();
|
auto loadType = loadInfo->GetExternalContentPolicyType();
|
||||||
if (loadType != nsIContentPolicy::TYPE_DOCUMENT &&
|
if (loadType != nsIContentPolicy::TYPE_DOCUMENT &&
|
||||||
loadType != nsIContentPolicy::TYPE_SUBDOCUMENT) {
|
loadType != nsIContentPolicy::TYPE_SUBDOCUMENT) {
|
||||||
|
|
|
||||||
|
|
@ -745,12 +745,7 @@ bool WindowShouldMatchActiveTab(nsPIDOMWindowOuter* aWin) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
|
|
||||||
if (!loadInfo) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!loadInfo->GetOriginalFrameSrcLoad()) {
|
if (!loadInfo->GetOriginalFrameSrcLoad()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ class ChannelWrapper final : public DOMEventTargetHelper,
|
||||||
already_AddRefed<nsILoadInfo> GetLoadInfo() const {
|
already_AddRefed<nsILoadInfo> GetLoadInfo() const {
|
||||||
nsCOMPtr<nsIChannel> chan = MaybeChannel();
|
nsCOMPtr<nsIChannel> chan = MaybeChannel();
|
||||||
if (chan) {
|
if (chan) {
|
||||||
return chan->GetLoadInfo();
|
return chan->LoadInfo();
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ static nsresult GetDefaultIcon(nsIChannel *aOriginalChannel,
|
||||||
nsresult rv = NS_NewURI(getter_AddRefs(defaultIconURI),
|
nsresult rv = NS_NewURI(getter_AddRefs(defaultIconURI),
|
||||||
NS_LITERAL_CSTRING(FAVICON_DEFAULT_URL));
|
NS_LITERAL_CSTRING(FAVICON_DEFAULT_URL));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aOriginalChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aOriginalChannel->LoadInfo();
|
||||||
rv = NS_NewChannelInternal(aChannel, defaultIconURI, loadInfo);
|
rv = NS_NewChannelInternal(aChannel, defaultIconURI, loadInfo);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
Unused << (*aChannel)->SetContentType(
|
Unused << (*aChannel)->SetContentType(
|
||||||
|
|
@ -132,7 +132,7 @@ class faviconAsyncLoader : public AsyncStatementCallback {
|
||||||
// Ensure we'll break possible cycles with the listener.
|
// Ensure we'll break possible cycles with the listener.
|
||||||
auto cleanup = MakeScopeExit([&]() { mListener = nullptr; });
|
auto cleanup = MakeScopeExit([&]() { mListener = nullptr; });
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
nsCOMPtr<nsIEventTarget> target =
|
nsCOMPtr<nsIEventTarget> target =
|
||||||
nsContentUtils::GetEventTargetByLoadInfo(loadInfo, TaskCategory::Other);
|
nsContentUtils::GetEventTargetByLoadInfo(loadInfo, TaskCategory::Other);
|
||||||
if (!mData.IsEmpty()) {
|
if (!mData.IsEmpty()) {
|
||||||
|
|
|
||||||
|
|
@ -1592,13 +1592,10 @@ nsresult PendingLookup::SendRemoteQueryInternal(Reason& aReason) {
|
||||||
nsIContentPolicy::TYPE_OTHER, getter_AddRefs(mChannel));
|
nsIContentPolicy::TYPE_OTHER, getter_AddRefs(mChannel));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
mozilla::OriginAttributes attrs;
|
mozilla::OriginAttributes attrs;
|
||||||
attrs.mFirstPartyDomain.AssignLiteral(
|
attrs.mFirstPartyDomain.AssignLiteral(NECKO_SAFEBROWSING_FIRST_PARTY_DOMAIN);
|
||||||
NECKO_SAFEBROWSING_FIRST_PARTY_DOMAIN);
|
|
||||||
loadInfo->SetOriginAttributes(attrs);
|
loadInfo->SetOriginAttributes(attrs);
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(mChannel, &rv));
|
nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(mChannel, &rv));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
|
||||||
|
|
@ -2000,12 +2000,10 @@ nsUrlClassifierDBService::SendThreatHitReport(nsIChannel* aChannel,
|
||||||
nullptr, loadFlags);
|
nullptr, loadFlags);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = reportChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = reportChannel->LoadInfo();
|
||||||
mozilla::OriginAttributes attrs;
|
mozilla::OriginAttributes attrs;
|
||||||
attrs.mFirstPartyDomain.AssignLiteral(NECKO_SAFEBROWSING_FIRST_PARTY_DOMAIN);
|
attrs.mFirstPartyDomain.AssignLiteral(NECKO_SAFEBROWSING_FIRST_PARTY_DOMAIN);
|
||||||
if (loadInfo) {
|
|
||||||
loadInfo->SetOriginAttributes(attrs);
|
loadInfo->SetOriginAttributes(attrs);
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIUploadChannel> uploadChannel(do_QueryInterface(reportChannel));
|
nsCOMPtr<nsIUploadChannel> uploadChannel(do_QueryInterface(reportChannel));
|
||||||
NS_ENSURE_TRUE(uploadChannel, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(uploadChannel, NS_ERROR_FAILURE);
|
||||||
|
|
|
||||||
|
|
@ -140,12 +140,10 @@ nsresult nsUrlClassifierStreamUpdater::FetchUpdate(
|
||||||
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo();
|
||||||
mozilla::OriginAttributes attrs;
|
mozilla::OriginAttributes attrs;
|
||||||
attrs.mFirstPartyDomain.AssignLiteral(NECKO_SAFEBROWSING_FIRST_PARTY_DOMAIN);
|
attrs.mFirstPartyDomain.AssignLiteral(NECKO_SAFEBROWSING_FIRST_PARTY_DOMAIN);
|
||||||
if (loadInfo) {
|
|
||||||
loadInfo->SetOriginAttributes(attrs);
|
loadInfo->SetOriginAttributes(attrs);
|
||||||
}
|
|
||||||
|
|
||||||
mBeganStream = false;
|
mBeganStream = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -661,8 +661,8 @@ static nsresult AddTabThreatSources(ThreatHit& aHit, nsIChannel* aChannel) {
|
||||||
bool isTopUri = false;
|
bool isTopUri = false;
|
||||||
rv = topUri->Equals(uri, &isTopUri);
|
rv = topUri->Equals(uri, &isTopUri);
|
||||||
if (NS_SUCCEEDED(rv) && !isTopUri) {
|
if (NS_SUCCEEDED(rv) && !isTopUri) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||||
if (loadInfo && loadInfo->RedirectChain().Length()) {
|
if (loadInfo->RedirectChain().Length()) {
|
||||||
AddThreatSourceFromRedirectEntry(aHit, loadInfo->RedirectChain()[0],
|
AddThreatSourceFromRedirectEntry(aHit, loadInfo->RedirectChain()[0],
|
||||||
ThreatHit_ThreatSourceType_TAB_RESOURCE);
|
ThreatHit_ThreatSourceType_TAB_RESOURCE);
|
||||||
}
|
}
|
||||||
|
|
@ -674,11 +674,7 @@ static nsresult AddTabThreatSources(ThreatHit& aHit, nsIChannel* aChannel) {
|
||||||
Unused << NS_WARN_IF(NS_FAILED(rv));
|
Unused << NS_WARN_IF(NS_FAILED(rv));
|
||||||
|
|
||||||
// Set tab_redirect threat sources if there's any
|
// Set tab_redirect threat sources if there's any
|
||||||
nsCOMPtr<nsILoadInfo> topLoadInfo = topChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> topLoadInfo = topChannel->LoadInfo();
|
||||||
if (!topLoadInfo) {
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsIRedirectHistoryEntry* redirectEntry;
|
nsIRedirectHistoryEntry* redirectEntry;
|
||||||
size_t length = topLoadInfo->RedirectChain().Length();
|
size_t length = topLoadInfo->RedirectChain().Length();
|
||||||
for (size_t i = 0; i < length; i++) {
|
for (size_t i = 0; i < length; i++) {
|
||||||
|
|
|
||||||
|
|
@ -625,7 +625,7 @@ nsresult nsExternalHelperAppService::DoContentContentProcessHelper(
|
||||||
channel->GetContentDisposition(&contentDisposition);
|
channel->GetContentDisposition(&contentDisposition);
|
||||||
channel->GetContentDispositionFilename(fileName);
|
channel->GetContentDispositionFilename(fileName);
|
||||||
channel->GetContentDispositionHeader(disp);
|
channel->GetContentDispositionHeader(disp);
|
||||||
loadInfo = channel->GetLoadInfo();
|
loadInfo = channel->LoadInfo();
|
||||||
|
|
||||||
nsCOMPtr<nsIFileChannel> fileChan(do_QueryInterface(aRequest));
|
nsCOMPtr<nsIFileChannel> fileChan(do_QueryInterface(aRequest));
|
||||||
wasFileChannel = fileChan != nullptr;
|
wasFileChannel = fileChan != nullptr;
|
||||||
|
|
@ -1978,8 +1978,7 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver,
|
||||||
// Save the redirect information.
|
// Save the redirect information.
|
||||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(mRequest);
|
nsCOMPtr<nsIChannel> channel = do_QueryInterface(mRequest);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = channel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = channel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
nsresult rv = NS_OK;
|
nsresult rv = NS_OK;
|
||||||
nsCOMPtr<nsIMutableArray> redirectChain =
|
nsCOMPtr<nsIMutableArray> redirectChain =
|
||||||
do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
|
do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
|
||||||
|
|
@ -1991,7 +1990,6 @@ nsExternalAppHandler::OnSaveComplete(nsIBackgroundFileSaver* aSaver,
|
||||||
}
|
}
|
||||||
mRedirects = redirectChain;
|
mRedirects = redirectChain;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (NS_FAILED(aStatus)) {
|
if (NS_FAILED(aStatus)) {
|
||||||
nsAutoString path;
|
nsAutoString path;
|
||||||
|
|
|
||||||
|
|
@ -188,13 +188,11 @@ nsPrefetchNode::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext) {
|
||||||
|
|
||||||
// if the load is cross origin without CORS, or the CORS access is rejected,
|
// if the load is cross origin without CORS, or the CORS access is rejected,
|
||||||
// always fire load event to avoid leaking site information.
|
// always fire load event to avoid leaking site information.
|
||||||
nsCOMPtr<nsILoadInfo> loadInfo = httpChannel->GetLoadInfo();
|
nsCOMPtr<nsILoadInfo> loadInfo = httpChannel->LoadInfo();
|
||||||
if (loadInfo) {
|
|
||||||
mShouldFireLoadEvent =
|
mShouldFireLoadEvent =
|
||||||
loadInfo->GetTainting() == LoadTainting::Opaque ||
|
loadInfo->GetTainting() == LoadTainting::Opaque ||
|
||||||
(loadInfo->GetTainting() == LoadTainting::CORS &&
|
(loadInfo->GetTainting() == LoadTainting::CORS &&
|
||||||
(NS_FAILED(httpChannel->GetStatus(&rv)) || NS_FAILED(rv)));
|
(NS_FAILED(httpChannel->GetStatus(&rv)) || NS_FAILED(rv)));
|
||||||
}
|
|
||||||
|
|
||||||
// no need to prefetch http error page
|
// no need to prefetch http error page
|
||||||
bool requestSucceeded;
|
bool requestSucceeded;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue