mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-08 16:03:21 +00:00
Bug 1528697 - Expose ReferrerPolicy.webidl and use referrerpolicy enum r=smaug
ReferrerPolicy gets tossed back and forth as a uint32_t and ReferrerPolicy enum in header file. Expose ReferrerPolicyValues from webidl file and use consistently in native code. Differential Revision: https://phabricator.services.mozilla.com/D41954 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
572396447e
commit
32ab8293ff
@ -70,7 +70,6 @@
|
||||
#include "mozilla/dom/nsCSPContext.h"
|
||||
#include "mozilla/dom/LoadURIOptionsBinding.h"
|
||||
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/net/UrlClassifierFeatureFactory.h"
|
||||
#include "ReferrerInfo.h"
|
||||
|
||||
@ -5793,7 +5792,7 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal,
|
||||
* For most refreshes the current URI is an appropriate
|
||||
* internal referrer.
|
||||
*/
|
||||
referrerInfo = new ReferrerInfo(mCurrentURI, mozilla::net::RP_Unset, false);
|
||||
referrerInfo = new ReferrerInfo(mCurrentURI, ReferrerPolicy::_empty, false);
|
||||
}
|
||||
|
||||
loadState->SetReferrerInfo(referrerInfo);
|
||||
|
@ -11,7 +11,6 @@
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsString.h"
|
||||
#include "nsDocShellLoadTypes.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class nsIContentSecurityPolicy;
|
||||
class nsIInputStream;
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include "nsSHEntryShared.h"
|
||||
#include "nsSHistory.h"
|
||||
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/Logging.h"
|
||||
#include "nsIReferrerInfo.h"
|
||||
|
||||
|
@ -3337,7 +3337,7 @@ nsresult Document::InitReferrerInfo(nsIChannel* aChannel) {
|
||||
}
|
||||
|
||||
// Override policy if we get one from Referrerr-Policy header
|
||||
mozilla::net::ReferrerPolicy policy =
|
||||
mozilla::dom::ReferrerPolicy policy =
|
||||
nsContentUtils::GetReferrerPolicyFromChannel(aChannel);
|
||||
mReferrerInfo = static_cast<dom::ReferrerInfo*>(mReferrerInfo.get())
|
||||
->CloneWithNewPolicy(policy);
|
||||
@ -5570,13 +5570,9 @@ already_AddRefed<nsIChannel> Document::CreateDummyChannelForCookies(
|
||||
return channel.forget();
|
||||
}
|
||||
|
||||
mozilla::net::ReferrerPolicy Document::GetReferrerPolicy() const {
|
||||
if (!mReferrerInfo) {
|
||||
return mozilla::net::RP_Unset;
|
||||
}
|
||||
|
||||
return static_cast<mozilla::net::ReferrerPolicy>(
|
||||
mReferrerInfo->GetReferrerPolicy());
|
||||
ReferrerPolicy Document::GetReferrerPolicy() const {
|
||||
return mReferrerInfo ? mReferrerInfo->ReferrerPolicy()
|
||||
: ReferrerPolicy::_empty;
|
||||
}
|
||||
|
||||
void Document::GetAlinkColor(nsAString& aAlinkColor) {
|
||||
@ -11306,9 +11302,9 @@ already_AddRefed<nsIURI> Document::ResolvePreloadImage(
|
||||
return uri.forget();
|
||||
}
|
||||
|
||||
void Document::MaybePreLoadImage(
|
||||
nsIURI* uri, const nsAString& aCrossOriginAttr,
|
||||
enum mozilla::net::ReferrerPolicy aReferrerPolicy, bool aIsImgSet) {
|
||||
void Document::MaybePreLoadImage(nsIURI* uri, const nsAString& aCrossOriginAttr,
|
||||
enum ReferrerPolicy aReferrerPolicy,
|
||||
bool aIsImgSet) {
|
||||
// Early exit if the img is already present in the img-cache
|
||||
// which indicates that the "real" load has already started and
|
||||
// that we shouldn't preload it.
|
||||
@ -11444,10 +11440,10 @@ NS_IMPL_ISUPPORTS(StubCSSLoaderObserver, nsICSSLoaderObserver)
|
||||
|
||||
} // namespace
|
||||
|
||||
void Document::PreloadStyle(
|
||||
nsIURI* uri, const Encoding* aEncoding, const nsAString& aCrossOriginAttr,
|
||||
const enum mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
const nsAString& aIntegrity) {
|
||||
void Document::PreloadStyle(nsIURI* uri, const Encoding* aEncoding,
|
||||
const nsAString& aCrossOriginAttr,
|
||||
const enum ReferrerPolicy aReferrerPolicy,
|
||||
const nsAString& aIntegrity) {
|
||||
// The CSSLoader will retain this object after we return.
|
||||
nsCOMPtr<nsICSSLoaderObserver> obs = new StubCSSLoaderObserver();
|
||||
|
||||
|
@ -42,7 +42,6 @@
|
||||
#include "nsStubMutationObserver.h"
|
||||
#include "nsTHashtable.h" // for member
|
||||
#include "nsURIHashKey.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h" // for member
|
||||
#include "mozilla/UseCounter.h"
|
||||
#include "mozilla/WeakPtr.h"
|
||||
#include "mozilla/StaticPresData.h"
|
||||
@ -478,7 +477,7 @@ class Document : public nsINode,
|
||||
|
||||
public:
|
||||
typedef dom::ExternalResourceMap::ExternalResourceLoad ExternalResourceLoad;
|
||||
typedef net::ReferrerPolicy ReferrerPolicyEnum;
|
||||
typedef dom::ReferrerPolicy ReferrerPolicyEnum;
|
||||
|
||||
/**
|
||||
* Called when XPCOM shutdown.
|
||||
@ -775,7 +774,7 @@ class Document : public nsINode,
|
||||
/**
|
||||
* GetReferrerPolicy() for Document.webidl.
|
||||
*/
|
||||
uint32_t ReferrerPolicy() const { return GetReferrerPolicy(); }
|
||||
ReferrerPolicyEnum ReferrerPolicy() const { return GetReferrerPolicy(); }
|
||||
|
||||
/**
|
||||
* If true, this flag indicates that all mixed content subresource
|
||||
@ -814,11 +813,11 @@ class Document : public nsINode,
|
||||
*/
|
||||
void UpdateReferrerInfoFromMeta(const nsAString& aMetaReferrer,
|
||||
bool aPreload) {
|
||||
net::ReferrerPolicy policy =
|
||||
ReferrerPolicyEnum policy =
|
||||
mozilla::net::ReferrerPolicyFromString(aMetaReferrer);
|
||||
// The empty string "" corresponds to no referrer policy, causing a fallback
|
||||
// to a referrer policy defined elsewhere.
|
||||
if (policy == mozilla::net::RP_Unset) {
|
||||
if (policy == ReferrerPolicy::_empty) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3828,19 +3828,19 @@ float Element::FontSizeInflation() {
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
net::ReferrerPolicy Element::GetReferrerPolicyAsEnum() {
|
||||
ReferrerPolicy Element::GetReferrerPolicyAsEnum() {
|
||||
if (IsHTMLElement()) {
|
||||
const nsAttrValue* referrerValue = GetParsedAttr(nsGkAtoms::referrerpolicy);
|
||||
return ReferrerPolicyFromAttr(referrerValue);
|
||||
}
|
||||
return net::RP_Unset;
|
||||
return ReferrerPolicy::_empty;
|
||||
}
|
||||
|
||||
net::ReferrerPolicy Element::ReferrerPolicyFromAttr(const nsAttrValue* aValue) {
|
||||
ReferrerPolicy Element::ReferrerPolicyFromAttr(const nsAttrValue* aValue) {
|
||||
if (aValue && aValue->Type() == nsAttrValue::eEnum) {
|
||||
return net::ReferrerPolicy(aValue->GetEnumValue());
|
||||
return ReferrerPolicy(aValue->GetEnumValue());
|
||||
}
|
||||
return net::RP_Unset;
|
||||
return ReferrerPolicy::_empty;
|
||||
}
|
||||
|
||||
already_AddRefed<nsDOMStringMap> Element::Dataset() {
|
||||
|
@ -1588,8 +1588,8 @@ class Element : public FragmentOrElement {
|
||||
*/
|
||||
float FontSizeInflation();
|
||||
|
||||
net::ReferrerPolicy GetReferrerPolicyAsEnum();
|
||||
net::ReferrerPolicy ReferrerPolicyFromAttr(const nsAttrValue* aValue);
|
||||
ReferrerPolicy GetReferrerPolicyAsEnum();
|
||||
ReferrerPolicy ReferrerPolicyFromAttr(const nsAttrValue* aValue);
|
||||
|
||||
/*
|
||||
* Helpers for .dataset. This is implemented on Element, though only some
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/Move.h"
|
||||
#include "mozilla/dom/TreeOrderedArray.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsAtom.h"
|
||||
@ -49,7 +48,6 @@ class Element;
|
||||
class IdentifierMapEntry : public PLDHashEntryHdr {
|
||||
typedef dom::Document Document;
|
||||
typedef dom::Element Element;
|
||||
typedef net::ReferrerPolicy ReferrerPolicy;
|
||||
|
||||
/**
|
||||
* @see Document::IDTargetObserver, this is just here to avoid include hell.
|
||||
|
@ -69,7 +69,7 @@ already_AddRefed<nsDocShellLoadState> Location::CheckURL(
|
||||
|
||||
nsCOMPtr<nsIPrincipal> triggeringPrincipal;
|
||||
nsCOMPtr<nsIURI> sourceURI;
|
||||
net::ReferrerPolicy referrerPolicy = net::RP_Unset;
|
||||
ReferrerPolicy referrerPolicy = ReferrerPolicy::_empty;
|
||||
|
||||
// Get security manager.
|
||||
nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager();
|
||||
|
@ -7882,20 +7882,20 @@ bool nsContentUtils::IsUpgradableDisplayType(nsContentPolicyType aType) {
|
||||
}
|
||||
|
||||
// static
|
||||
net::ReferrerPolicy nsContentUtils::GetReferrerPolicyFromHeader(
|
||||
ReferrerPolicy nsContentUtils::GetReferrerPolicyFromHeader(
|
||||
const nsAString& aHeader) {
|
||||
// Multiple headers could be concatenated into one comma-separated
|
||||
// list of policies. Need to tokenize the multiple headers.
|
||||
nsCharSeparatedTokenizer tokenizer(aHeader, ',');
|
||||
nsAutoString token;
|
||||
net::ReferrerPolicy referrerPolicy = mozilla::net::RP_Unset;
|
||||
ReferrerPolicy referrerPolicy = ReferrerPolicy::_empty;
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
token = tokenizer.nextToken();
|
||||
if (token.IsEmpty()) {
|
||||
continue;
|
||||
}
|
||||
net::ReferrerPolicy policy = net::ReferrerPolicyFromString(token);
|
||||
if (policy != net::RP_Unset) {
|
||||
ReferrerPolicy policy = net::ReferrerPolicyFromString(token);
|
||||
if (policy != ReferrerPolicy::_empty) {
|
||||
referrerPolicy = policy;
|
||||
}
|
||||
}
|
||||
@ -7903,11 +7903,11 @@ net::ReferrerPolicy nsContentUtils::GetReferrerPolicyFromHeader(
|
||||
}
|
||||
|
||||
// static
|
||||
net::ReferrerPolicy nsContentUtils::GetReferrerPolicyFromChannel(
|
||||
ReferrerPolicy nsContentUtils::GetReferrerPolicyFromChannel(
|
||||
nsIChannel* aChannel) {
|
||||
nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(aChannel);
|
||||
if (!httpChannel) {
|
||||
return net::RP_Unset;
|
||||
return ReferrerPolicy::_empty;
|
||||
}
|
||||
|
||||
nsresult rv;
|
||||
@ -7915,7 +7915,7 @@ net::ReferrerPolicy nsContentUtils::GetReferrerPolicyFromChannel(
|
||||
rv = httpChannel->GetResponseHeader(NS_LITERAL_CSTRING("referrer-policy"),
|
||||
headerValue);
|
||||
if (NS_FAILED(rv) || headerValue.IsEmpty()) {
|
||||
return net::RP_Unset;
|
||||
return ReferrerPolicy::_empty;
|
||||
}
|
||||
|
||||
return GetReferrerPolicyFromHeader(NS_ConvertUTF8toUTF16(headerValue));
|
||||
|
@ -38,7 +38,6 @@
|
||||
#include "mozilla/FloatingPoint.h"
|
||||
#include "mozilla/intl/LineBreaker.h"
|
||||
#include "mozilla/intl/WordBreaker.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/Logging.h"
|
||||
#include "mozilla/NotNull.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
@ -2839,7 +2838,7 @@ class nsContentUtils {
|
||||
* @param the channel from which to get the Referrer-Policy header
|
||||
* @return referrer policy from the response header in aChannel
|
||||
*/
|
||||
static mozilla::net::ReferrerPolicy GetReferrerPolicyFromChannel(
|
||||
static mozilla::dom::ReferrerPolicy GetReferrerPolicyFromChannel(
|
||||
nsIChannel* aChannel);
|
||||
|
||||
/*
|
||||
@ -2849,7 +2848,7 @@ class nsContentUtils {
|
||||
* @param aHeader the response's Referrer-Policy header to parse
|
||||
* @return referrer policy from the response header.
|
||||
*/
|
||||
static mozilla::net::ReferrerPolicy GetReferrerPolicyFromHeader(
|
||||
static mozilla::dom::ReferrerPolicy GetReferrerPolicyFromHeader(
|
||||
const nsAString& aHeader);
|
||||
|
||||
static bool IsNonSubresourceRequest(nsIChannel* aChannel);
|
||||
|
@ -1171,7 +1171,7 @@ nsresult nsImageLoadingContent::LoadImage(nsIURI* aNewURI, bool aForce,
|
||||
do_QueryInterface(static_cast<nsIImageLoadingContent*>(this));
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo = new ReferrerInfo();
|
||||
referrerInfo->InitWithNode(thisNode);
|
||||
nsCOMPtr<nsIURI> referrer = referrerInfo->GetOriginalReferrer();
|
||||
|
||||
nsresult rv = nsContentUtils::LoadImage(
|
||||
aNewURI, thisNode, aDocument, triggeringPrincipal, 0, referrerInfo, this,
|
||||
loadFlags, content->LocalName(), getter_AddRefs(req), policyType,
|
||||
@ -1794,8 +1794,8 @@ bool nsImageLoadingContent::ScriptedImageObserver::CancelRequests() {
|
||||
|
||||
// Only HTMLInputElement.h overrides this for <img> tags
|
||||
// all other subclasses use this one, i.e. ignore referrer attributes
|
||||
mozilla::net::ReferrerPolicy nsImageLoadingContent::GetImageReferrerPolicy() {
|
||||
return mozilla::net::RP_Unset;
|
||||
mozilla::dom::ReferrerPolicy nsImageLoadingContent::GetImageReferrerPolicy() {
|
||||
return mozilla::dom::ReferrerPolicy::_empty;
|
||||
}
|
||||
|
||||
Element* nsImageLoadingContent::FindImageMap() {
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include "nsIContentPolicy.h"
|
||||
#include "mozilla/dom/BindingDeclarations.h"
|
||||
#include "mozilla/dom/Promise.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "nsAttrValue.h"
|
||||
|
||||
class nsIURI;
|
||||
@ -214,7 +213,7 @@ class nsImageLoadingContent : public nsIImageLoadingContent {
|
||||
*/
|
||||
virtual mozilla::CORSMode GetCORSMode();
|
||||
|
||||
virtual mozilla::net::ReferrerPolicy GetImageReferrerPolicy();
|
||||
virtual mozilla::dom::ReferrerPolicy GetImageReferrerPolicy();
|
||||
|
||||
// Subclasses are *required* to call BindToTree/UnbindFromTree.
|
||||
void BindToTree(mozilla::dom::BindContext&, nsINode& aParent);
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include "mozilla/BasePrincipal.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
#include "mozilla/dom/ToJSValue.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsOpenURIInFrameParams)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIOpenURIInFrameParams)
|
||||
|
@ -30,7 +30,7 @@
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::dom;
|
||||
|
||||
using mozilla::net::ReferrerPolicy;
|
||||
using mozilla::dom::ReferrerPolicy;
|
||||
|
||||
/**
|
||||
* This class manages loading a single XML document
|
||||
|
@ -13,7 +13,6 @@
|
||||
#define nsSyncLoadService_h__
|
||||
|
||||
#include "nscore.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class nsICookieSettings;
|
||||
class nsIInputStream;
|
||||
@ -49,7 +48,7 @@ class nsSyncLoadService {
|
||||
nsIURI* aURI, nsContentPolicyType aContentPolicyType,
|
||||
nsIPrincipal* aLoaderPrincipal, nsSecurityFlags aSecurityFlags,
|
||||
nsILoadGroup* aLoadGroup, nsICookieSettings* aCookieSettings,
|
||||
bool aForceToXML, mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
bool aForceToXML, mozilla::dom::ReferrerPolicy aReferrerPolicy,
|
||||
mozilla::dom::Document** aResult);
|
||||
|
||||
/**
|
||||
|
@ -579,10 +579,9 @@ nsresult FetchDriver::HttpFetch(
|
||||
// associated referrer policy.
|
||||
// Basically, "client" is not in our implementation, we use
|
||||
// EnvironmentReferrerPolicy of the worker or document context
|
||||
net::ReferrerPolicy net_referrerPolicy =
|
||||
mRequest->GetEnvironmentReferrerPolicy();
|
||||
ReferrerPolicy referrerPolicy = mRequest->GetEnvironmentReferrerPolicy();
|
||||
if (mRequest->ReferrerPolicy_() == ReferrerPolicy::_empty) {
|
||||
mRequest->SetReferrerPolicy(net_referrerPolicy);
|
||||
mRequest->SetReferrerPolicy(referrerPolicy);
|
||||
}
|
||||
// Step 6 of https://fetch.spec.whatwg.org/#main-fetch
|
||||
// If request’s referrer policy is the empty string,
|
||||
@ -590,8 +589,8 @@ nsresult FetchDriver::HttpFetch(
|
||||
if (mRequest->ReferrerPolicy_() == ReferrerPolicy::_empty) {
|
||||
nsCOMPtr<nsILoadInfo> loadInfo = httpChan->LoadInfo();
|
||||
bool isPrivate = loadInfo->GetOriginAttributes().mPrivateBrowsingId > 0;
|
||||
net::ReferrerPolicy referrerPolicy = static_cast<net::ReferrerPolicy>(
|
||||
ReferrerInfo::GetDefaultReferrerPolicy(httpChan, uri, isPrivate));
|
||||
referrerPolicy =
|
||||
ReferrerInfo::GetDefaultReferrerPolicy(httpChan, uri, isPrivate);
|
||||
mRequest->SetReferrerPolicy(referrerPolicy);
|
||||
}
|
||||
|
||||
@ -1351,8 +1350,7 @@ FetchDriver::AsyncOnChannelRedirect(nsIChannel* aOldChannel,
|
||||
nsAutoString computedReferrerSpec;
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo = httpChannel->GetReferrerInfo();
|
||||
if (referrerInfo) {
|
||||
mRequest->SetReferrerPolicy(
|
||||
static_cast<net::ReferrerPolicy>(referrerInfo->GetReferrerPolicy()));
|
||||
mRequest->SetReferrerPolicy(referrerInfo->ReferrerPolicy());
|
||||
Unused << referrerInfo->GetComputedReferrerSpec(computedReferrerSpec);
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "mozilla/RefPtr.h"
|
||||
|
||||
#include "mozilla/DebugOnly.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class nsIConsoleReportCollector;
|
||||
class nsICookieSettings;
|
||||
|
@ -118,11 +118,11 @@ nsresult FetchUtil::SetRequestReferrer(nsIPrincipal* aPrincipal, Document* aDoc,
|
||||
nsAutoString referrer;
|
||||
aRequest->GetReferrer(referrer);
|
||||
|
||||
net::ReferrerPolicy policy = aRequest->GetReferrerPolicy();
|
||||
ReferrerPolicy policy = aRequest->ReferrerPolicy_();
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo;
|
||||
if (referrer.IsEmpty()) {
|
||||
// This is the case request’s referrer is "no-referrer"
|
||||
referrerInfo = new ReferrerInfo(nullptr, net::RP_No_Referrer);
|
||||
referrerInfo = new ReferrerInfo(nullptr, ReferrerPolicy::No_referrer);
|
||||
} else if (referrer.EqualsLiteral(kFETCH_CLIENT_REFERRER_STR)) {
|
||||
referrerInfo = ReferrerInfo::CreateForFetch(aPrincipal, aDoc);
|
||||
// In the first step, we should use referrer info from requetInit
|
||||
|
@ -89,7 +89,7 @@ InternalRequest::InternalRequest(const nsACString& aURL,
|
||||
mContentPolicyType(nsIContentPolicy::TYPE_FETCH),
|
||||
mReferrer(NS_LITERAL_STRING(kFETCH_CLIENT_REFERRER_STR)),
|
||||
mReferrerPolicy(ReferrerPolicy::_empty),
|
||||
mEnvironmentReferrerPolicy(net::RP_Unset),
|
||||
mEnvironmentReferrerPolicy(ReferrerPolicy::_empty),
|
||||
mMode(RequestMode::No_cors),
|
||||
mCredentialsMode(RequestCredentials::Omit),
|
||||
mResponseTainting(LoadTainting::Basic),
|
||||
@ -124,7 +124,7 @@ InternalRequest::InternalRequest(
|
||||
mContentPolicyType(aContentPolicyType),
|
||||
mReferrer(aReferrer),
|
||||
mReferrerPolicy(aReferrerPolicy),
|
||||
mEnvironmentReferrerPolicy(net::RP_Unset),
|
||||
mEnvironmentReferrerPolicy(ReferrerPolicy::_empty),
|
||||
mMode(aMode),
|
||||
mCredentialsMode(aRequestCredentials),
|
||||
mResponseTainting(LoadTainting::Basic),
|
||||
|
@ -11,7 +11,6 @@
|
||||
#include "mozilla/dom/InternalHeaders.h"
|
||||
#include "mozilla/dom/RequestBinding.h"
|
||||
#include "mozilla/LoadTainting.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
#include "nsIContentPolicy.h"
|
||||
@ -199,73 +198,11 @@ class InternalRequest final {
|
||||
mReferrerPolicy = aReferrerPolicy;
|
||||
}
|
||||
|
||||
void SetReferrerPolicy(net::ReferrerPolicy aReferrerPolicy) {
|
||||
switch (aReferrerPolicy) {
|
||||
case net::RP_Unset:
|
||||
mReferrerPolicy = ReferrerPolicy::_empty;
|
||||
break;
|
||||
case net::RP_No_Referrer:
|
||||
mReferrerPolicy = ReferrerPolicy::No_referrer;
|
||||
break;
|
||||
case net::RP_No_Referrer_When_Downgrade:
|
||||
mReferrerPolicy = ReferrerPolicy::No_referrer_when_downgrade;
|
||||
break;
|
||||
case net::RP_Origin:
|
||||
mReferrerPolicy = ReferrerPolicy::Origin;
|
||||
break;
|
||||
case net::RP_Origin_When_Crossorigin:
|
||||
mReferrerPolicy = ReferrerPolicy::Origin_when_cross_origin;
|
||||
break;
|
||||
case net::RP_Unsafe_URL:
|
||||
mReferrerPolicy = ReferrerPolicy::Unsafe_url;
|
||||
break;
|
||||
case net::RP_Same_Origin:
|
||||
mReferrerPolicy = ReferrerPolicy::Same_origin;
|
||||
break;
|
||||
case net::RP_Strict_Origin:
|
||||
mReferrerPolicy = ReferrerPolicy::Strict_origin;
|
||||
break;
|
||||
case net::RP_Strict_Origin_When_Cross_Origin:
|
||||
mReferrerPolicy = ReferrerPolicy::Strict_origin_when_cross_origin;
|
||||
break;
|
||||
default:
|
||||
MOZ_ASSERT_UNREACHABLE("Invalid ReferrerPolicy value");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
net::ReferrerPolicy GetReferrerPolicy() {
|
||||
switch (mReferrerPolicy) {
|
||||
case ReferrerPolicy::_empty:
|
||||
return net::RP_Unset;
|
||||
case ReferrerPolicy::No_referrer:
|
||||
return net::RP_No_Referrer;
|
||||
case ReferrerPolicy::No_referrer_when_downgrade:
|
||||
return net::RP_No_Referrer_When_Downgrade;
|
||||
case ReferrerPolicy::Origin:
|
||||
return net::RP_Origin;
|
||||
case ReferrerPolicy::Origin_when_cross_origin:
|
||||
return net::RP_Origin_When_Crossorigin;
|
||||
case ReferrerPolicy::Unsafe_url:
|
||||
return net::RP_Unsafe_URL;
|
||||
case ReferrerPolicy::Strict_origin:
|
||||
return net::RP_Strict_Origin;
|
||||
case ReferrerPolicy::Same_origin:
|
||||
return net::RP_Same_Origin;
|
||||
case ReferrerPolicy::Strict_origin_when_cross_origin:
|
||||
return net::RP_Strict_Origin_When_Cross_Origin;
|
||||
default:
|
||||
MOZ_ASSERT_UNREACHABLE("Invalid ReferrerPolicy enum value?");
|
||||
break;
|
||||
}
|
||||
return net::RP_Unset;
|
||||
}
|
||||
|
||||
net::ReferrerPolicy GetEnvironmentReferrerPolicy() const {
|
||||
ReferrerPolicy GetEnvironmentReferrerPolicy() const {
|
||||
return mEnvironmentReferrerPolicy;
|
||||
}
|
||||
|
||||
void SetEnvironmentReferrerPolicy(net::ReferrerPolicy aReferrerPolicy) {
|
||||
void SetEnvironmentReferrerPolicy(ReferrerPolicy aReferrerPolicy) {
|
||||
mEnvironmentReferrerPolicy = aReferrerPolicy;
|
||||
}
|
||||
|
||||
@ -462,9 +399,7 @@ class InternalRequest final {
|
||||
// This will be used for request created from Window or Worker contexts
|
||||
// In case there's no Referrer Policy in Request, this will be passed to
|
||||
// channel.
|
||||
// The Environment Referrer Policy should be net::ReferrerPolicy so that it
|
||||
// could be associated with nsIHttpChannel.
|
||||
net::ReferrerPolicy mEnvironmentReferrerPolicy;
|
||||
ReferrerPolicy mEnvironmentReferrerPolicy;
|
||||
RequestMode mMode;
|
||||
RequestCredentials mCredentialsMode;
|
||||
MOZ_INIT_OUTSIDE_CTOR LoadTainting mResponseTainting;
|
||||
|
@ -428,8 +428,7 @@ already_AddRefed<Request> Request::Constructor(const GlobalObject& aGlobal,
|
||||
WorkerPrivate* worker = GetCurrentThreadWorkerPrivate();
|
||||
if (worker) {
|
||||
worker->AssertIsOnWorkerThread();
|
||||
request->SetEnvironmentReferrerPolicy(
|
||||
static_cast<net::ReferrerPolicy>(worker->GetReferrerPolicy()));
|
||||
request->SetEnvironmentReferrerPolicy(worker->GetReferrerPolicy());
|
||||
principalInfo =
|
||||
MakeUnique<mozilla::ipc::PrincipalInfo>(worker->GetPrincipalInfo());
|
||||
}
|
||||
|
@ -46,7 +46,6 @@
|
||||
#include "mozilla/EventDispatcher.h"
|
||||
#include "mozilla/EventStates.h"
|
||||
#include "mozilla/MappedDeclarations.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
#include "nsLayoutUtils.h"
|
||||
|
||||
@ -423,7 +422,7 @@ void HTMLImageElement::AfterMaybeChangeAttr(
|
||||
} else if (aName == nsGkAtoms::referrerpolicy &&
|
||||
aNamespaceID == kNameSpaceID_None && aNotify) {
|
||||
ReferrerPolicy referrerPolicy = GetImageReferrerPolicy();
|
||||
if (!InResponsiveMode() && referrerPolicy != RP_Unset &&
|
||||
if (!InResponsiveMode() && referrerPolicy != ReferrerPolicy::_empty &&
|
||||
aValueMaybeChanged &&
|
||||
referrerPolicy != ReferrerPolicyFromAttr(aOldValue)) {
|
||||
// XXX: Bug 1076583 - We still use the older synchronous algorithm
|
||||
|
@ -185,7 +185,7 @@ class HTMLImageElement final : public nsGenericHTMLElement,
|
||||
|
||||
already_AddRefed<Promise> Decode(ErrorResult& aRv);
|
||||
|
||||
net::ReferrerPolicy GetImageReferrerPolicy() override {
|
||||
ReferrerPolicy GetImageReferrerPolicy() override {
|
||||
return GetReferrerPolicyAsEnum();
|
||||
}
|
||||
|
||||
|
@ -224,7 +224,7 @@ CORSMode HTMLScriptElement::GetCORSMode() const {
|
||||
return AttrValueToCORSMode(GetParsedAttr(nsGkAtoms::crossorigin));
|
||||
}
|
||||
|
||||
mozilla::net::ReferrerPolicy HTMLScriptElement::GetReferrerPolicy() {
|
||||
mozilla::dom::ReferrerPolicy HTMLScriptElement::GetReferrerPolicy() {
|
||||
return GetReferrerPolicyAsEnum();
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ class HTMLScriptElement final : public nsGenericHTMLElement,
|
||||
virtual void GetScriptCharset(nsAString& charset) override;
|
||||
virtual void FreezeExecutionAttrs(Document* aOwnerDoc) override;
|
||||
virtual CORSMode GetCORSMode() const override;
|
||||
virtual mozilla::net::ReferrerPolicy GetReferrerPolicy() override;
|
||||
virtual mozilla::dom::ReferrerPolicy GetReferrerPolicy() override;
|
||||
|
||||
// nsIContent
|
||||
virtual nsresult BindToTree(BindContext&, nsINode& aParent) override;
|
||||
|
@ -35,7 +35,7 @@ class WindowProxyHolder;
|
||||
|
||||
class nsHTMLDocument : public mozilla::dom::Document {
|
||||
protected:
|
||||
typedef mozilla::net::ReferrerPolicy ReferrerPolicy;
|
||||
typedef mozilla::dom::ReferrerPolicy ReferrerPolicy;
|
||||
typedef mozilla::dom::Document Document;
|
||||
typedef mozilla::Encoding Encoding;
|
||||
template <typename T>
|
||||
|
@ -5,29 +5,40 @@
|
||||
#include "nsISupports.idl"
|
||||
#include "nsISerializable.idl"
|
||||
|
||||
%{C++
|
||||
#include "mozilla/dom/ReferrerPolicyBinding.h"
|
||||
%}
|
||||
|
||||
interface nsIURI;
|
||||
webidl Document;
|
||||
webidl Node;
|
||||
|
||||
native ReferrerPolicy(mozilla::dom::ReferrerPolicy);
|
||||
native URIRef(already_AddRefed<nsIURI>);
|
||||
|
||||
[scriptable, builtinclass, uuid(081cdc36-f2e2-4f94-87bf-78578f06f1eb)]
|
||||
interface nsIReferrerInfo : nsISerializable
|
||||
{
|
||||
/**
|
||||
* The original referrer URI which indicates the full referrer before applying
|
||||
* referrer policy
|
||||
*/
|
||||
* The original referrer URI which indicates the full referrer before applying
|
||||
* referrer policy
|
||||
*/
|
||||
[infallible] readonly attribute nsIURI originalReferrer;
|
||||
|
||||
/**
|
||||
* Referrer policy which is applied to the referrer
|
||||
*/
|
||||
[infallible] readonly attribute unsigned long referrerPolicy;
|
||||
* Referrer policy which is applied to the referrer
|
||||
*/
|
||||
readonly attribute ReferrerPolicy referrerPolicy;
|
||||
|
||||
/**
|
||||
* Indicates if the referrer should not be sent or not even when it's available.
|
||||
*/
|
||||
* C++ friendly version of referrerPolicy getter
|
||||
*/
|
||||
[noscript, notxpcom, nostdcall, binaryname(ReferrerPolicy)]
|
||||
ReferrerPolicy binaryReferrerPolicy();
|
||||
|
||||
/**
|
||||
* Indicates if the referrer should not be sent or not even when it's available.
|
||||
*/
|
||||
[infallible] readonly attribute boolean sendReferrer;
|
||||
|
||||
/**
|
||||
|
@ -800,8 +800,7 @@ static nsresult GetCreateWindowParams(mozIDOMWindowProxy* aParent,
|
||||
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo;
|
||||
if (aForceNoReferrer) {
|
||||
referrerInfo = new ReferrerInfo(
|
||||
nullptr, mozilla::net::ReferrerPolicy::RP_Unset, false);
|
||||
referrerInfo = new ReferrerInfo(nullptr, ReferrerPolicy::_empty, false);
|
||||
}
|
||||
if (aLoadState && !referrerInfo) {
|
||||
referrerInfo = aLoadState->GetReferrerInfo();
|
||||
@ -812,8 +811,7 @@ static nsresult GetCreateWindowParams(mozIDOMWindowProxy* aParent,
|
||||
nsCOMPtr<nsIPrincipal> nullPrincipal =
|
||||
NullPrincipal::CreateWithoutOriginAttributes();
|
||||
if (!referrerInfo) {
|
||||
referrerInfo =
|
||||
new ReferrerInfo(nullptr, mozilla::net::ReferrerPolicy::RP_Unset);
|
||||
referrerInfo = new ReferrerInfo(nullptr, ReferrerPolicy::_empty);
|
||||
}
|
||||
|
||||
referrerInfo.swap(*aReferrerInfo);
|
||||
|
@ -3114,7 +3114,7 @@ nsresult nsPluginHost::NewPluginURLStream(
|
||||
// errors about malformed requests if we include it in POSTs. See
|
||||
// bug 724465.
|
||||
nsCOMPtr<nsIURI> referer;
|
||||
net::ReferrerPolicy referrerPolicy = net::RP_Unset;
|
||||
dom::ReferrerPolicy referrerPolicy = dom::ReferrerPolicy::_empty;
|
||||
|
||||
nsCOMPtr<nsIObjectLoadingContent> olc = do_QueryInterface(element);
|
||||
if (olc) olc->GetSrcURI(getter_AddRefs(referer));
|
||||
@ -3127,7 +3127,7 @@ nsresult nsPluginHost::NewPluginURLStream(
|
||||
referrerPolicy = doc->GetReferrerPolicy();
|
||||
}
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
new mozilla::dom::ReferrerInfo(referer, referrerPolicy);
|
||||
new dom::ReferrerInfo(referer, referrerPolicy);
|
||||
rv = httpChannel->SetReferrerInfoWithoutClone(referrerInfo);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
@ -28,9 +28,10 @@ NS_IMPL_CYCLE_COLLECTION(ScriptFetchOptions, mElement, mTriggeringPrincipal)
|
||||
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(ScriptFetchOptions, AddRef)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(ScriptFetchOptions, Release)
|
||||
|
||||
ScriptFetchOptions::ScriptFetchOptions(
|
||||
mozilla::CORSMode aCORSMode, mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
nsIScriptElement* aElement, nsIPrincipal* aTriggeringPrincipal)
|
||||
ScriptFetchOptions::ScriptFetchOptions(mozilla::CORSMode aCORSMode,
|
||||
ReferrerPolicy aReferrerPolicy,
|
||||
nsIScriptElement* aElement,
|
||||
nsIPrincipal* aTriggeringPrincipal)
|
||||
: mCORSMode(aCORSMode),
|
||||
mReferrerPolicy(aReferrerPolicy),
|
||||
mIsPreload(false),
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include "mozilla/dom/SRIMetadata.h"
|
||||
#include "mozilla/LinkedList.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/Utf8.h" // mozilla::Utf8Unit
|
||||
#include "mozilla/Variant.h"
|
||||
#include "mozilla/Vector.h"
|
||||
@ -46,12 +45,12 @@ class ScriptFetchOptions {
|
||||
NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(ScriptFetchOptions)
|
||||
|
||||
ScriptFetchOptions(mozilla::CORSMode aCORSMode,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
enum ReferrerPolicy aReferrerPolicy,
|
||||
nsIScriptElement* aElement,
|
||||
nsIPrincipal* aTriggeringPrincipal);
|
||||
|
||||
const mozilla::CORSMode mCORSMode;
|
||||
const mozilla::net::ReferrerPolicy mReferrerPolicy;
|
||||
const enum ReferrerPolicy mReferrerPolicy;
|
||||
bool mIsPreload;
|
||||
nsCOMPtr<nsIScriptElement> mElement;
|
||||
nsCOMPtr<nsIPrincipal> mTriggeringPrincipal;
|
||||
@ -226,7 +225,7 @@ class ScriptLoadRequest
|
||||
}
|
||||
|
||||
mozilla::CORSMode CORSMode() const { return mFetchOptions->mCORSMode; }
|
||||
mozilla::net::ReferrerPolicy ReferrerPolicy() const {
|
||||
enum ReferrerPolicy ReferrerPolicy() const {
|
||||
return mFetchOptions->mReferrerPolicy;
|
||||
}
|
||||
nsIScriptElement* Element() const { return mFetchOptions->mElement; }
|
||||
|
@ -1509,8 +1509,7 @@ static bool CSPAllowsInlineScript(nsIScriptElement* aElement,
|
||||
ScriptLoadRequest* ScriptLoader::CreateLoadRequest(
|
||||
ScriptKind aKind, nsIURI* aURI, nsIScriptElement* aElement,
|
||||
nsIPrincipal* aTriggeringPrincipal, CORSMode aCORSMode,
|
||||
const SRIMetadata& aIntegrity,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy) {
|
||||
const SRIMetadata& aIntegrity, ReferrerPolicy aReferrerPolicy) {
|
||||
nsIURI* referrer = mDocument->GetDocumentURIAsReferrer();
|
||||
ScriptFetchOptions* fetchOptions = new ScriptFetchOptions(
|
||||
aCORSMode, aReferrerPolicy, aElement, aTriggeringPrincipal);
|
||||
@ -1649,7 +1648,7 @@ bool ScriptLoader::ProcessExternalScript(nsIScriptElement* aElement,
|
||||
}
|
||||
|
||||
CORSMode ourCORSMode = aElement->GetCORSMode();
|
||||
mozilla::net::ReferrerPolicy referrerPolicy = GetReferrerPolicy(aElement);
|
||||
ReferrerPolicy referrerPolicy = GetReferrerPolicy(aElement);
|
||||
|
||||
request = CreateLoadRequest(aScriptKind, scriptURI, aElement, principal,
|
||||
ourCORSMode, sriMetadata, referrerPolicy);
|
||||
@ -1787,7 +1786,7 @@ bool ScriptLoader::ProcessInlineScript(nsIScriptElement* aElement,
|
||||
corsMode = aElement->GetCORSMode();
|
||||
}
|
||||
|
||||
mozilla::net::ReferrerPolicy referrerPolicy = GetReferrerPolicy(aElement);
|
||||
ReferrerPolicy referrerPolicy = GetReferrerPolicy(aElement);
|
||||
RefPtr<ScriptLoadRequest> request =
|
||||
CreateLoadRequest(aScriptKind, mDocument->GetDocumentURI(), aElement,
|
||||
mDocument->NodePrincipal(), corsMode,
|
||||
@ -1888,7 +1887,7 @@ ScriptLoadRequest* ScriptLoader::LookupPreloadRequest(
|
||||
// we have now.
|
||||
nsAutoString elementCharset;
|
||||
aElement->GetScriptCharset(elementCharset);
|
||||
mozilla::net::ReferrerPolicy referrerPolicy = GetReferrerPolicy(aElement);
|
||||
ReferrerPolicy referrerPolicy = GetReferrerPolicy(aElement);
|
||||
|
||||
if (!elementCharset.Equals(preloadCharset) ||
|
||||
aElement->GetCORSMode() != request->CORSMode() ||
|
||||
@ -1926,11 +1925,9 @@ void ScriptLoader::GetSRIMetadata(const nsAString& aIntegrityAttr,
|
||||
aMetadataOut);
|
||||
}
|
||||
|
||||
mozilla::net::ReferrerPolicy ScriptLoader::GetReferrerPolicy(
|
||||
nsIScriptElement* aElement) {
|
||||
mozilla::net::ReferrerPolicy scriptReferrerPolicy =
|
||||
aElement->GetReferrerPolicy();
|
||||
if (scriptReferrerPolicy != mozilla::net::RP_Unset) {
|
||||
ReferrerPolicy ScriptLoader::GetReferrerPolicy(nsIScriptElement* aElement) {
|
||||
ReferrerPolicy scriptReferrerPolicy = aElement->GetReferrerPolicy();
|
||||
if (scriptReferrerPolicy != ReferrerPolicy::_empty) {
|
||||
return scriptReferrerPolicy;
|
||||
}
|
||||
return mDocument->GetReferrerPolicy();
|
||||
@ -3699,11 +3696,12 @@ void ScriptLoader::ParsingComplete(bool aTerminated) {
|
||||
ProcessPendingRequests();
|
||||
}
|
||||
|
||||
void ScriptLoader::PreloadURI(
|
||||
nsIURI* aURI, const nsAString& aCharset, const nsAString& aType,
|
||||
const nsAString& aCrossOrigin, const nsAString& aIntegrity,
|
||||
bool aScriptFromHead, bool aAsync, bool aDefer, bool aNoModule,
|
||||
const mozilla::net::ReferrerPolicy aReferrerPolicy) {
|
||||
void ScriptLoader::PreloadURI(nsIURI* aURI, const nsAString& aCharset,
|
||||
const nsAString& aType,
|
||||
const nsAString& aCrossOrigin,
|
||||
const nsAString& aIntegrity, bool aScriptFromHead,
|
||||
bool aAsync, bool aDefer, bool aNoModule,
|
||||
const ReferrerPolicy aReferrerPolicy) {
|
||||
NS_ENSURE_TRUE_VOID(mDocument);
|
||||
// Check to see if scripts has been turned off.
|
||||
if (!mEnabled || !mDocument->IsScriptEnabled()) {
|
||||
|
@ -25,7 +25,6 @@
|
||||
#include "mozilla/dom/SRICheck.h"
|
||||
#include "mozilla/MaybeOneOf.h"
|
||||
#include "mozilla/MozPromise.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/Utf8.h" // mozilla::Utf8Unit
|
||||
#include "mozilla/Vector.h"
|
||||
|
||||
@ -311,7 +310,7 @@ class ScriptLoader final : public nsISupports {
|
||||
const nsAString& aType, const nsAString& aCrossOrigin,
|
||||
const nsAString& aIntegrity, bool aScriptFromHead,
|
||||
bool aAsync, bool aDefer, bool aNoModule,
|
||||
const mozilla::net::ReferrerPolicy aReferrerPolicy);
|
||||
const ReferrerPolicy aReferrerPolicy);
|
||||
|
||||
/**
|
||||
* Process a request that was deferred so that the script could be compiled
|
||||
@ -376,11 +375,12 @@ class ScriptLoader final : public nsISupports {
|
||||
|
||||
void EnsureModuleHooksInitialized();
|
||||
|
||||
ScriptLoadRequest* CreateLoadRequest(
|
||||
ScriptKind aKind, nsIURI* aURI, nsIScriptElement* aElement,
|
||||
nsIPrincipal* aTriggeringPrincipal, mozilla::CORSMode aCORSMode,
|
||||
const SRIMetadata& aIntegrity,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy);
|
||||
ScriptLoadRequest* CreateLoadRequest(ScriptKind aKind, nsIURI* aURI,
|
||||
nsIScriptElement* aElement,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
mozilla::CORSMode aCORSMode,
|
||||
const SRIMetadata& aIntegrity,
|
||||
ReferrerPolicy aReferrerPolicy);
|
||||
|
||||
/**
|
||||
* Unblocks the creator parser of the parser-blocking scripts.
|
||||
@ -408,7 +408,7 @@ class ScriptLoader final : public nsISupports {
|
||||
* Given a script element, get the referrer policy should be applied to load
|
||||
* requests.
|
||||
*/
|
||||
mozilla::net::ReferrerPolicy GetReferrerPolicy(nsIScriptElement* aElement);
|
||||
ReferrerPolicy GetReferrerPolicy(nsIScriptElement* aElement);
|
||||
|
||||
/**
|
||||
* Helper function to check the content policy for a given request.
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "nsIContent.h"
|
||||
#include "nsContentCreatorFunctions.h"
|
||||
#include "mozilla/CORSMode.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "ReferrerInfo.h"
|
||||
|
||||
// Must be kept in sync with xpcom/rust/xpcom/src/interfaces/nonidl.rs
|
||||
#define NS_ISCRIPTELEMENT_IID \
|
||||
@ -241,8 +241,8 @@ class nsIScriptElement : public nsIScriptLoaderObserver {
|
||||
/**
|
||||
* Get referrer policy of the script element
|
||||
*/
|
||||
virtual mozilla::net::ReferrerPolicy GetReferrerPolicy() {
|
||||
return mozilla::net::RP_Unset;
|
||||
virtual mozilla::dom::ReferrerPolicy GetReferrerPolicy() {
|
||||
return mozilla::dom::ReferrerPolicy::_empty;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -124,7 +124,7 @@ bool ReferrerInfo::HideOnionReferrerSource() {
|
||||
}
|
||||
|
||||
/* static */
|
||||
uint32_t ReferrerInfo::GetDefaultReferrerPolicy(nsIHttpChannel* aChannel,
|
||||
ReferrerPolicy ReferrerInfo::GetDefaultReferrerPolicy(nsIHttpChannel* aChannel,
|
||||
nsIURI* aURI,
|
||||
bool privateBrowsing) {
|
||||
CachePreferrenceValue();
|
||||
@ -167,14 +167,14 @@ uint32_t ReferrerInfo::GetDefaultReferrerPolicy(nsIHttpChannel* aChannel,
|
||||
|
||||
switch (defaultToUse) {
|
||||
case DefaultReferrerPolicy::eDefaultPolicyNoReferrer:
|
||||
return nsIHttpChannel::REFERRER_POLICY_NO_REFERRER;
|
||||
return ReferrerPolicy::No_referrer;
|
||||
case DefaultReferrerPolicy::eDefaultPolicySameOrgin:
|
||||
return nsIHttpChannel::REFERRER_POLICY_SAME_ORIGIN;
|
||||
return ReferrerPolicy::Same_origin;
|
||||
case DefaultReferrerPolicy::eDefaultPolicyStrictWhenXorigin:
|
||||
return nsIHttpChannel::REFERRER_POLICY_STRICT_ORIGIN_WHEN_XORIGIN;
|
||||
return ReferrerPolicy::Strict_origin_when_cross_origin;
|
||||
}
|
||||
|
||||
return nsIHttpChannel::REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE;
|
||||
return ReferrerPolicy::No_referrer_when_downgrade;
|
||||
}
|
||||
|
||||
/* static */
|
||||
@ -216,7 +216,7 @@ bool ReferrerInfo::ShouldResponseInheritReferrerInfo(nsIChannel* aChannel) {
|
||||
/* static */
|
||||
nsresult ReferrerInfo::HandleSecureToInsecureReferral(nsIURI* aOriginalURI,
|
||||
nsIURI* aURI,
|
||||
uint32_t aPolicy,
|
||||
ReferrerPolicyEnum aPolicy,
|
||||
bool& aAllowed) {
|
||||
NS_ENSURE_ARG(aOriginalURI);
|
||||
NS_ENSURE_ARG(aURI);
|
||||
@ -233,9 +233,9 @@ nsresult ReferrerInfo::HandleSecureToInsecureReferral(nsIURI* aOriginalURI,
|
||||
// policy is "unsafe-url", "origin", or "origin-when-cross-origin".
|
||||
// in other referrer policies, https->http is not allowed...
|
||||
bool uriIsHttpsScheme = aURI->SchemeIs("https");
|
||||
if (aPolicy != nsIHttpChannel::REFERRER_POLICY_UNSAFE_URL &&
|
||||
aPolicy != nsIHttpChannel::REFERRER_POLICY_ORIGIN_WHEN_XORIGIN &&
|
||||
aPolicy != nsIHttpChannel::REFERRER_POLICY_ORIGIN && !uriIsHttpsScheme) {
|
||||
if (aPolicy != ReferrerPolicy::Unsafe_url &&
|
||||
aPolicy != ReferrerPolicy::Origin_when_cross_origin &&
|
||||
aPolicy != ReferrerPolicy::Origin && !uriIsHttpsScheme) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -353,8 +353,8 @@ bool ReferrerInfo::ShouldSetNullOriginHeader(net::HttpBaseChannel* aChannel,
|
||||
if (!referrerInfo) {
|
||||
return false;
|
||||
}
|
||||
uint32_t policy = referrerInfo->GetReferrerPolicy();
|
||||
if (policy == nsIHttpChannel::REFERRER_POLICY_NO_REFERRER) {
|
||||
enum ReferrerPolicy policy = referrerInfo->ReferrerPolicy();
|
||||
if (policy == ReferrerPolicy::No_referrer) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -368,7 +368,7 @@ bool ReferrerInfo::ShouldSetNullOriginHeader(net::HttpBaseChannel* aChannel,
|
||||
return true;
|
||||
}
|
||||
|
||||
if (policy == nsIHttpChannel::REFERRER_POLICY_SAME_ORIGIN) {
|
||||
if (policy == ReferrerPolicy::Same_origin) {
|
||||
return ReferrerInfo::IsCrossOriginRequest(aChannel);
|
||||
}
|
||||
|
||||
@ -434,13 +434,13 @@ ReferrerInfo::TrimmingPolicy ReferrerInfo::ComputeTrimmingPolicy(
|
||||
uint32_t trimmingPolicy = sUserTrimmingPolicy;
|
||||
|
||||
switch (mPolicy) {
|
||||
case nsIHttpChannel::REFERRER_POLICY_ORIGIN:
|
||||
case nsIHttpChannel::REFERRER_POLICY_STRICT_ORIGIN:
|
||||
case ReferrerPolicy::Origin:
|
||||
case ReferrerPolicy::Strict_origin:
|
||||
trimmingPolicy = TrimmingPolicy::ePolicySchemeHostPort;
|
||||
break;
|
||||
|
||||
case nsIHttpChannel::REFERRER_POLICY_ORIGIN_WHEN_XORIGIN:
|
||||
case nsIHttpChannel::REFERRER_POLICY_STRICT_ORIGIN_WHEN_XORIGIN:
|
||||
case ReferrerPolicy::Origin_when_cross_origin:
|
||||
case ReferrerPolicy::Strict_origin_when_cross_origin:
|
||||
if (trimmingPolicy != TrimmingPolicy::ePolicySchemeHostPort &&
|
||||
IsCrossOriginRequest(aChannel)) {
|
||||
// Ignore set trimmingPolicy if it is already the strictest
|
||||
@ -453,9 +453,9 @@ ReferrerInfo::TrimmingPolicy ReferrerInfo::ComputeTrimmingPolicy(
|
||||
// send. For the next 3 policies: same-origin, no-referrer-when-downgrade,
|
||||
// unsafe-url, without trimming we should have a full uri. And the trimming
|
||||
// policy only depends on user prefs.
|
||||
case nsIHttpChannel::REFERRER_POLICY_SAME_ORIGIN:
|
||||
case nsIHttpChannel::REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE:
|
||||
case nsIHttpChannel::REFERRER_POLICY_UNSAFE_URL:
|
||||
case ReferrerPolicy::Same_origin:
|
||||
case ReferrerPolicy::No_referrer_when_downgrade:
|
||||
case ReferrerPolicy::Unsafe_url:
|
||||
if (trimmingPolicy != TrimmingPolicy::ePolicySchemeHostPort) {
|
||||
// Ignore set trimmingPolicy if it is already the strictest
|
||||
// policy. Apply the user cross-origin trimming policy if it's more
|
||||
@ -467,8 +467,8 @@ ReferrerInfo::TrimmingPolicy ReferrerInfo::ComputeTrimmingPolicy(
|
||||
}
|
||||
break;
|
||||
|
||||
case nsIHttpChannel::REFERRER_POLICY_NO_REFERRER:
|
||||
case nsIHttpChannel::REFERRER_POLICY_UNSET:
|
||||
case ReferrerPolicy::No_referrer:
|
||||
case ReferrerPolicy::_empty:
|
||||
default:
|
||||
MOZ_ASSERT_UNREACHABLE("Unexpected value");
|
||||
break;
|
||||
@ -628,13 +628,13 @@ void ReferrerInfo::LogMessageToConsole(
|
||||
|
||||
ReferrerInfo::ReferrerInfo()
|
||||
: mOriginalReferrer(nullptr),
|
||||
mPolicy(mozilla::net::RP_Unset),
|
||||
mPolicy(ReferrerPolicy::_empty),
|
||||
mSendReferrer(true),
|
||||
mInitialized(false),
|
||||
mOverridePolicyByDefault(false),
|
||||
mComputedReferrer(Maybe<nsCString>()) {}
|
||||
|
||||
ReferrerInfo::ReferrerInfo(nsIURI* aOriginalReferrer, uint32_t aPolicy,
|
||||
ReferrerInfo::ReferrerInfo(nsIURI* aOriginalReferrer, ReferrerPolicyEnum aPolicy,
|
||||
bool aSendReferrer,
|
||||
const Maybe<nsCString>& aComputedReferrer)
|
||||
: mOriginalReferrer(aOriginalReferrer),
|
||||
@ -658,7 +658,7 @@ already_AddRefed<nsIReferrerInfo> ReferrerInfo::Clone() const {
|
||||
}
|
||||
|
||||
already_AddRefed<nsIReferrerInfo> ReferrerInfo::CloneWithNewPolicy(
|
||||
uint32_t aPolicy) const {
|
||||
ReferrerPolicyEnum aPolicy) const {
|
||||
RefPtr<ReferrerInfo> copy(new ReferrerInfo(*this));
|
||||
copy->mPolicy = aPolicy;
|
||||
return copy.forget();
|
||||
@ -686,11 +686,13 @@ ReferrerInfo::GetOriginalReferrer(nsIURI** aOriginalReferrer) {
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
ReferrerInfo::GetReferrerPolicy(uint32_t* aReferrerPolicy) {
|
||||
ReferrerInfo::GetReferrerPolicy(ReferrerPolicyEnum* aReferrerPolicy) {
|
||||
*aReferrerPolicy = mPolicy;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
ReferrerPolicy ReferrerInfo::ReferrerPolicy() { return mPolicy; }
|
||||
|
||||
NS_IMETHODIMP
|
||||
ReferrerInfo::GetSendReferrer(bool* aSendReferrer) {
|
||||
*aSendReferrer = mSendReferrer;
|
||||
@ -756,7 +758,7 @@ already_AddRefed<nsIURI> ReferrerInfo::GetComputedReferrer() {
|
||||
return result.forget();
|
||||
}
|
||||
|
||||
PLDHashNumber ReferrerInfo::Hash() const {
|
||||
HashNumber ReferrerInfo::Hash() const {
|
||||
MOZ_ASSERT(mInitialized);
|
||||
nsAutoCString originalReferrerSpec;
|
||||
if (mOriginalReferrer) {
|
||||
@ -764,7 +766,7 @@ PLDHashNumber ReferrerInfo::Hash() const {
|
||||
}
|
||||
|
||||
return mozilla::AddToHash(
|
||||
mPolicy, mSendReferrer, mOverridePolicyByDefault,
|
||||
static_cast<uint32_t>(mPolicy), mSendReferrer, mOverridePolicyByDefault,
|
||||
mozilla::HashString(originalReferrerSpec),
|
||||
mozilla::HashString(mComputedReferrer.isSome() ? mComputedReferrer.value()
|
||||
: EmptyCString()));
|
||||
@ -809,7 +811,7 @@ ReferrerInfo::InitWithNode(nsINode* aNode) {
|
||||
// Referrer policy from referrerpolicy attribute will have a higher priority
|
||||
// than referrer policy from <meta> tag and Referrer-Policy header.
|
||||
GetReferrerPolicyFromAtribute(aNode, mPolicy);
|
||||
if (mPolicy == mozilla::net::RP_Unset) {
|
||||
if (mPolicy == ReferrerPolicy::_empty) {
|
||||
// Fallback to use document's referrer poicy if we don't have referrer
|
||||
// policy from attribute.
|
||||
mPolicy = aNode->OwnerDoc()->GetReferrerPolicy();
|
||||
@ -825,11 +827,11 @@ ReferrerInfo::InitWithNode(nsINode* aNode) {
|
||||
/* static */
|
||||
already_AddRefed<nsIReferrerInfo>
|
||||
ReferrerInfo::CreateFromOtherAndPolicyOverride(nsIReferrerInfo* aOther,
|
||||
uint32_t aPolicyOverride) {
|
||||
ReferrerPolicyEnum aPolicyOverride) {
|
||||
MOZ_ASSERT(aOther);
|
||||
uint32_t policy = aPolicyOverride != net::RP_Unset
|
||||
ReferrerPolicyEnum policy = aPolicyOverride != ReferrerPolicy::_empty
|
||||
? aPolicyOverride
|
||||
: aOther->GetReferrerPolicy();
|
||||
: aOther->ReferrerPolicy();
|
||||
|
||||
nsCOMPtr<nsIURI> referrer = aOther->GetOriginalReferrer();
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
@ -840,9 +842,9 @@ ReferrerInfo::CreateFromOtherAndPolicyOverride(nsIReferrerInfo* aOther,
|
||||
/* static */
|
||||
already_AddRefed<nsIReferrerInfo>
|
||||
ReferrerInfo::CreateFromDocumentAndPolicyOverride(Document* aDoc,
|
||||
uint32_t aPolicyOverride) {
|
||||
ReferrerPolicyEnum aPolicyOverride) {
|
||||
MOZ_ASSERT(aDoc);
|
||||
uint32_t policy = aPolicyOverride != net::RP_Unset
|
||||
ReferrerPolicyEnum policy = aPolicyOverride != ReferrerPolicy::_empty
|
||||
? aPolicyOverride
|
||||
: aDoc->GetReferrerPolicy();
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
@ -865,7 +867,7 @@ already_AddRefed<nsIReferrerInfo> ReferrerInfo::CreateForFetch(
|
||||
aPrincipal->GetURI(getter_AddRefs(principalURI));
|
||||
|
||||
if (!aDoc) {
|
||||
referrerInfo = new ReferrerInfo(principalURI, RP_Unset);
|
||||
referrerInfo = new ReferrerInfo(principalURI, ReferrerPolicy::_empty);
|
||||
return referrerInfo.forget();
|
||||
}
|
||||
|
||||
@ -901,7 +903,7 @@ already_AddRefed<nsIReferrerInfo> ReferrerInfo::CreateForFetch(
|
||||
|
||||
/* static */
|
||||
already_AddRefed<nsIReferrerInfo> ReferrerInfo::CreateForExternalCSSResources(
|
||||
mozilla::StyleSheet* aExternalSheet, uint32_t aPolicy) {
|
||||
mozilla::StyleSheet* aExternalSheet, ReferrerPolicyEnum aPolicy) {
|
||||
MOZ_ASSERT(aExternalSheet && !aExternalSheet->IsInline());
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo;
|
||||
|
||||
@ -937,8 +939,8 @@ already_AddRefed<nsIReferrerInfo> ReferrerInfo::CreateForSVGResources(
|
||||
}
|
||||
|
||||
void ReferrerInfo::GetReferrerPolicyFromAtribute(nsINode* aNode,
|
||||
uint32_t& aPolicy) const {
|
||||
aPolicy = mozilla::net::RP_Unset;
|
||||
ReferrerPolicyEnum& aPolicy) const {
|
||||
aPolicy = ReferrerPolicy::_empty;
|
||||
mozilla::dom::Element* element = aNode->AsElement();
|
||||
|
||||
if (!element || !element->IsAnyOfHTMLElements(
|
||||
@ -1003,11 +1005,11 @@ nsresult ReferrerInfo::ComputeReferrer(nsIHttpChannel* aChannel) {
|
||||
mComputedReferrer.emplace(EmptyCString());
|
||||
|
||||
if (!mSendReferrer || !mOriginalReferrer ||
|
||||
mPolicy == nsIHttpChannel::REFERRER_POLICY_NO_REFERRER) {
|
||||
mPolicy == ReferrerPolicy::No_referrer) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (mPolicy == nsIHttpChannel::REFERRER_POLICY_UNSET) {
|
||||
if (mPolicy == ReferrerPolicy::_empty) {
|
||||
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
||||
OriginAttributes attrs = loadInfo->GetOriginAttributes();
|
||||
bool isPrivate = attrs.mPrivateBrowsingId > 0;
|
||||
@ -1022,7 +1024,7 @@ nsresult ReferrerInfo::ComputeReferrer(nsIHttpChannel* aChannel) {
|
||||
mOverridePolicyByDefault = true;
|
||||
}
|
||||
|
||||
if (mPolicy == nsIHttpChannel::REFERRER_POLICY_NO_REFERRER) {
|
||||
if (mPolicy == ReferrerPolicy::No_referrer) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -1060,7 +1062,7 @@ nsresult ReferrerInfo::ComputeReferrer(nsIHttpChannel* aChannel) {
|
||||
|
||||
// Don't send referrer when the request is cross-origin and policy is
|
||||
// "same-origin".
|
||||
if (mPolicy == nsIHttpChannel::REFERRER_POLICY_SAME_ORIGIN &&
|
||||
if (mPolicy == ReferrerPolicy::Same_origin &&
|
||||
IsCrossOriginRequest(aChannel)) {
|
||||
return NS_OK;
|
||||
}
|
||||
@ -1159,10 +1161,12 @@ ReferrerInfo::Read(nsIObjectInputStream* aStream) {
|
||||
mOriginalReferrer = nullptr;
|
||||
}
|
||||
|
||||
rv = aStream->Read32(&mPolicy);
|
||||
uint32_t policy;
|
||||
rv = aStream->Read32(&policy);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
mPolicy = static_cast<ReferrerPolicyEnum>(policy);
|
||||
|
||||
rv = aStream->ReadBoolean(&mSendReferrer);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
@ -1218,7 +1222,7 @@ ReferrerInfo::Write(nsIObjectOutputStream* aStream) {
|
||||
}
|
||||
}
|
||||
|
||||
rv = aStream->Write32(mPolicy);
|
||||
rv = aStream->Write32(static_cast<uint32_t>(mPolicy));
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -10,10 +10,11 @@
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIReferrerInfo.h"
|
||||
#include "nsISerializable.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "nsIHttpChannel.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
#include "mozilla/HashFunctions.h"
|
||||
#include "mozilla/dom/ReferrerPolicyBinding.h"
|
||||
|
||||
#define REFERRERINFOF_CONTRACTID "@mozilla.org/referrer-info;1"
|
||||
// 041a129f-10ce-4bda-a60d-e027a26d5ed0
|
||||
@ -61,10 +62,12 @@ namespace dom {
|
||||
|
||||
class ReferrerInfo : public nsIReferrerInfo {
|
||||
public:
|
||||
typedef enum ReferrerPolicy ReferrerPolicyEnum;
|
||||
ReferrerInfo();
|
||||
|
||||
explicit ReferrerInfo(
|
||||
nsIURI* aOriginalReferrer, uint32_t aPolicy = mozilla::net::RP_Unset,
|
||||
nsIURI* aOriginalReferrer,
|
||||
ReferrerPolicyEnum aPolicy = ReferrerPolicy::_empty,
|
||||
bool aSendReferrer = true,
|
||||
const Maybe<nsCString>& aComputedReferrer = Maybe<nsCString>());
|
||||
|
||||
@ -72,7 +75,8 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
already_AddRefed<nsIReferrerInfo> Clone() const;
|
||||
|
||||
// create an copy of the ReferrerInfo with new referrer policy
|
||||
already_AddRefed<nsIReferrerInfo> CloneWithNewPolicy(uint32_t aPolicy) const;
|
||||
already_AddRefed<nsIReferrerInfo> CloneWithNewPolicy(
|
||||
ReferrerPolicyEnum aPolicy) const;
|
||||
|
||||
// create an copy of the ReferrerInfo with new send referrer
|
||||
already_AddRefed<nsIReferrerInfo> CloneWithNewSendReferrer(
|
||||
@ -90,7 +94,7 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
* @param aPolicyOverride referrer policy to override if necessary.
|
||||
*/
|
||||
static already_AddRefed<nsIReferrerInfo> CreateFromOtherAndPolicyOverride(
|
||||
nsIReferrerInfo* aOther, uint32_t aPolicyOverride);
|
||||
nsIReferrerInfo* aOther, ReferrerPolicyEnum aPolicyOverride);
|
||||
|
||||
/*
|
||||
* Helper function to create a new ReferrerInfo object from a given document
|
||||
@ -101,7 +105,7 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
* @param aPolicyOverride referrer policy to override if necessary.
|
||||
*/
|
||||
static already_AddRefed<nsIReferrerInfo> CreateFromDocumentAndPolicyOverride(
|
||||
Document* aDoc, uint32_t aPolicyOverride);
|
||||
Document* aDoc, ReferrerPolicyEnum aPolicyOverride);
|
||||
|
||||
/*
|
||||
* Implements step 3.1 and 3.3 of the Determine request's Referrer algorithm
|
||||
@ -121,7 +125,8 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
* @param aPolicy referrer policy from header if there's any.
|
||||
*/
|
||||
static already_AddRefed<nsIReferrerInfo> CreateForExternalCSSResources(
|
||||
StyleSheet* aExternalSheet, uint32_t aPolicy = mozilla::net::RP_Unset);
|
||||
StyleSheet* aExternalSheet,
|
||||
ReferrerPolicyEnum aPolicy = ReferrerPolicy::_empty);
|
||||
|
||||
/**
|
||||
* Helper function to create new ReferrerInfo object from a given document.
|
||||
@ -166,7 +171,8 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
* Check whether referrer is allowed to send in secure to insecure scenario.
|
||||
*/
|
||||
static nsresult HandleSecureToInsecureReferral(nsIURI* aOriginalURI,
|
||||
nsIURI* aURI, uint32_t aPolicy,
|
||||
nsIURI* aURI,
|
||||
ReferrerPolicyEnum aPolicy,
|
||||
bool& aAllowed);
|
||||
|
||||
/**
|
||||
@ -194,14 +200,14 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
* network.http.referer.defaultPolicy.trackers.pbmode for third-party trackers
|
||||
* in private mode
|
||||
*/
|
||||
static uint32_t GetDefaultReferrerPolicy(nsIHttpChannel* aChannel = nullptr,
|
||||
nsIURI* aURI = nullptr,
|
||||
bool privateBrowsing = false);
|
||||
static ReferrerPolicyEnum GetDefaultReferrerPolicy(
|
||||
nsIHttpChannel* aChannel = nullptr, nsIURI* aURI = nullptr,
|
||||
bool privateBrowsing = false);
|
||||
|
||||
/**
|
||||
/**
|
||||
* Hash function for this object
|
||||
*/
|
||||
PLDHashNumber Hash() const;
|
||||
HashNumber Hash() const;
|
||||
|
||||
NS_DECL_THREADSAFE_ISUPPORTS
|
||||
NS_DECL_NSIREFERRERINFO
|
||||
@ -260,7 +266,7 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
* Currently, referrerpolicy attribute is supported in a, area, img, iframe,
|
||||
* script, or link element.
|
||||
*/
|
||||
void GetReferrerPolicyFromAtribute(nsINode* aNode, uint32_t& aPolicy) const;
|
||||
void GetReferrerPolicyFromAtribute(nsINode* aNode, ReferrerPolicyEnum& aPolicy) const;
|
||||
|
||||
/**
|
||||
* Return true if node has a rel="noreferrer" attribute.
|
||||
@ -368,7 +374,7 @@ class ReferrerInfo : public nsIReferrerInfo {
|
||||
|
||||
nsCOMPtr<nsIURI> mOriginalReferrer;
|
||||
|
||||
uint32_t mPolicy;
|
||||
ReferrerPolicyEnum mPolicy;
|
||||
|
||||
// Indicates if the referrer should be sent or not even when it's available
|
||||
// (default is true).
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include "mozilla/dom/CSPReportBinding.h"
|
||||
#include "mozilla/dom/CSPDictionariesBinding.h"
|
||||
#include "mozilla/ipc/PBackgroundSharedTypes.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "nsINetworkInterceptController.h"
|
||||
#include "nsSandboxFlags.h"
|
||||
#include "nsIScriptElement.h"
|
||||
|
@ -1295,45 +1295,13 @@ class FetchEventRunnable : public ExtendableFunctionalEventWorkerRunnable,
|
||||
nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(channel);
|
||||
MOZ_ASSERT(httpChannel, "How come we don't have an HTTP channel?");
|
||||
|
||||
uint32_t referrerPolicy = 0;
|
||||
ReferrerPolicy referrerPolicy = ReferrerPolicy::_empty;
|
||||
mReferrer = EmptyString();
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo = httpChannel->GetReferrerInfo();
|
||||
if (referrerInfo) {
|
||||
referrerPolicy = referrerInfo->GetReferrerPolicy();
|
||||
referrerPolicy = referrerInfo->ReferrerPolicy();
|
||||
Unused << referrerInfo->GetComputedReferrerSpec(mReferrer);
|
||||
}
|
||||
switch (referrerPolicy) {
|
||||
case nsIHttpChannel::REFERRER_POLICY_UNSET:
|
||||
mReferrerPolicy = ReferrerPolicy::_empty;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_NO_REFERRER:
|
||||
mReferrerPolicy = ReferrerPolicy::No_referrer;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_ORIGIN:
|
||||
mReferrerPolicy = ReferrerPolicy::Origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE:
|
||||
mReferrerPolicy = ReferrerPolicy::No_referrer_when_downgrade;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_ORIGIN_WHEN_XORIGIN:
|
||||
mReferrerPolicy = ReferrerPolicy::Origin_when_cross_origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_UNSAFE_URL:
|
||||
mReferrerPolicy = ReferrerPolicy::Unsafe_url;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_SAME_ORIGIN:
|
||||
mReferrerPolicy = ReferrerPolicy::Same_origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_STRICT_ORIGIN_WHEN_XORIGIN:
|
||||
mReferrerPolicy = ReferrerPolicy::Strict_origin_when_cross_origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_STRICT_ORIGIN:
|
||||
mReferrerPolicy = ReferrerPolicy::Strict_origin;
|
||||
break;
|
||||
default:
|
||||
MOZ_ASSERT_UNREACHABLE("Invalid Referrer Policy enum value?");
|
||||
break;
|
||||
}
|
||||
|
||||
rv = httpChannel->GetRequestMethod(mMethod);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
@ -148,48 +148,14 @@ nsresult GetIPCInternalRequest(nsIInterceptedChannel* aChannel,
|
||||
InternalRequest::MapChannelToRequestCredentials(underlyingChannel);
|
||||
|
||||
nsAutoString referrer;
|
||||
uint32_t referrerPolicyInt = 0;
|
||||
ReferrerPolicy referrerPolicy = ReferrerPolicy::_empty;
|
||||
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo = httpChannel->GetReferrerInfo();
|
||||
if (referrerInfo) {
|
||||
referrerPolicyInt = referrerInfo->GetReferrerPolicy();
|
||||
referrerPolicy = referrerInfo->ReferrerPolicy();
|
||||
Unused << referrerInfo->GetComputedReferrerSpec(referrer);
|
||||
}
|
||||
|
||||
ReferrerPolicy referrerPolicy;
|
||||
switch (referrerPolicyInt) {
|
||||
case nsIHttpChannel::REFERRER_POLICY_UNSET:
|
||||
referrerPolicy = ReferrerPolicy::_empty;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_NO_REFERRER:
|
||||
referrerPolicy = ReferrerPolicy::No_referrer;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_ORIGIN:
|
||||
referrerPolicy = ReferrerPolicy::Origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE:
|
||||
referrerPolicy = ReferrerPolicy::No_referrer_when_downgrade;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_ORIGIN_WHEN_XORIGIN:
|
||||
referrerPolicy = ReferrerPolicy::Origin_when_cross_origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_UNSAFE_URL:
|
||||
referrerPolicy = ReferrerPolicy::Unsafe_url;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_SAME_ORIGIN:
|
||||
referrerPolicy = ReferrerPolicy::Same_origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_STRICT_ORIGIN_WHEN_XORIGIN:
|
||||
referrerPolicy = ReferrerPolicy::Strict_origin_when_cross_origin;
|
||||
break;
|
||||
case nsIHttpChannel::REFERRER_POLICY_STRICT_ORIGIN:
|
||||
referrerPolicy = ReferrerPolicy::Strict_origin;
|
||||
break;
|
||||
default:
|
||||
MOZ_ASSERT_UNREACHABLE("Invalid Referrer Policy enum value?");
|
||||
break;
|
||||
}
|
||||
|
||||
uint32_t loadFlags;
|
||||
rv = underlyingChannel->GetLoadFlags(&loadFlags);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "mozilla/URLExtraData.h"
|
||||
#include "SVGObserverUtils.h"
|
||||
#include "nsSVGUseFrame.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
NS_IMPL_NS_NEW_SVG_ELEMENT(Use)
|
||||
|
||||
|
@ -244,11 +244,11 @@ partial interface Document {
|
||||
readonly attribute URI? documentURIObject;
|
||||
|
||||
/**
|
||||
* Current referrer policy - one of the REFERRER_POLICY_* constants
|
||||
* from nsIHttpChannel.
|
||||
* Current referrer policy - one of the referrer policy value from
|
||||
* ReferrerPolicy.webidl.
|
||||
*/
|
||||
[ChromeOnly]
|
||||
readonly attribute unsigned long referrerPolicy;
|
||||
readonly attribute ReferrerPolicy referrerPolicy;
|
||||
|
||||
/**
|
||||
* Current referrer info, which holds all referrer related information
|
||||
|
19
dom/webidl/ReferrerPolicy.webidl
Normal file
19
dom/webidl/ReferrerPolicy.webidl
Normal file
@ -0,0 +1,19 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* For more information please see
|
||||
* https://w3c.github.io/webappsec-referrer-policy#idl-index
|
||||
*/
|
||||
|
||||
enum ReferrerPolicy {
|
||||
"",
|
||||
"no-referrer",
|
||||
"no-referrer-when-downgrade",
|
||||
"origin",
|
||||
"origin-when-cross-origin",
|
||||
"unsafe-url", "same-origin",
|
||||
"strict-origin",
|
||||
"strict-origin-when-cross-origin"
|
||||
};
|
@ -75,8 +75,3 @@ enum RequestMode { "same-origin", "no-cors", "cors", "navigate" };
|
||||
enum RequestCredentials { "omit", "same-origin", "include" };
|
||||
enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" };
|
||||
enum RequestRedirect { "follow", "error", "manual" };
|
||||
enum ReferrerPolicy {
|
||||
"", "no-referrer", "no-referrer-when-downgrade", "origin",
|
||||
"origin-when-cross-origin", "unsafe-url", "same-origin", "strict-origin",
|
||||
"strict-origin-when-cross-origin"
|
||||
};
|
||||
|
@ -745,6 +745,7 @@ WEBIDL_FILES = [
|
||||
'PushSubscriptionOptions.webidl',
|
||||
'RadioNodeList.webidl',
|
||||
'Range.webidl',
|
||||
'ReferrerPolicy.webidl',
|
||||
'Reporting.webidl',
|
||||
'Request.webidl',
|
||||
'ResizeObserver.webidl',
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include "mozilla/dom/ChannelInfo.h"
|
||||
#include "mozilla/dom/ServiceWorkerRegistrationDescriptor.h"
|
||||
#include "mozilla/dom/WorkerCommon.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
#include "nsILoadContext.h"
|
||||
#include "nsIRequest.h"
|
||||
|
@ -1369,9 +1369,9 @@ void WorkerPrivate::UpdateReferrerInfoFromHeader(
|
||||
return;
|
||||
}
|
||||
|
||||
net::ReferrerPolicy policy =
|
||||
ReferrerPolicy policy =
|
||||
nsContentUtils::GetReferrerPolicyFromHeader(headerValue);
|
||||
if (policy == net::RP_Unset) {
|
||||
if (policy == ReferrerPolicy::_empty) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -735,8 +735,8 @@ class WorkerPrivate : public RelativeTimeline {
|
||||
|
||||
nsIReferrerInfo* GetReferrerInfo() const { return mLoadInfo.mReferrerInfo; }
|
||||
|
||||
uint32_t GetReferrerPolicy() const {
|
||||
return mLoadInfo.mReferrerInfo->GetReferrerPolicy();
|
||||
ReferrerPolicy GetReferrerPolicy() const {
|
||||
return mLoadInfo.mReferrerInfo->ReferrerPolicy();
|
||||
}
|
||||
|
||||
void SetReferrerInfo(nsIReferrerInfo* aReferrerInfo) {
|
||||
|
@ -2013,7 +2013,7 @@ XMLHttpRequestMainThread::OnStartRequest(nsIRequest* request) {
|
||||
|
||||
// the spec requires the response document.referrer to be the empty string
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
new ReferrerInfo(nullptr, true, mResponseXML->GetReferrerPolicy());
|
||||
new ReferrerInfo(nullptr, mResponseXML->ReferrerPolicy());
|
||||
mResponseXML->SetReferrerInfo(referrerInfo);
|
||||
|
||||
mXMLParserStreamListener = listener;
|
||||
|
@ -69,7 +69,7 @@ nsresult nsXMLPrettyPrinter::PrettyPrint(Document* aDocument,
|
||||
rv = nsSyncLoadService::LoadDocument(
|
||||
xslUri, nsIContentPolicy::TYPE_XSLT, nsContentUtils::GetSystemPrincipal(),
|
||||
nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL, nullptr,
|
||||
aDocument->CookieSettings(), true, mozilla::net::RP_Unset,
|
||||
aDocument->CookieSettings(), true, ReferrerPolicy::_empty,
|
||||
getter_AddRefs(xslDocument));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
#include "ReferrerInfo.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using mozilla::net::ReferrerPolicy;
|
||||
using mozilla::dom::ReferrerPolicy;
|
||||
|
||||
static NS_DEFINE_CID(kCParserCID, NS_PARSER_CID);
|
||||
|
||||
|
@ -895,7 +895,7 @@ uint32_t txMozillaXSLTProcessor::Flags(SystemCallerGuarantee) { return mFlags; }
|
||||
NS_IMETHODIMP
|
||||
txMozillaXSLTProcessor::LoadStyleSheet(nsIURI* aUri,
|
||||
Document* aLoaderDocument) {
|
||||
mozilla::net::ReferrerPolicy refpol = mozilla::net::RP_Unset;
|
||||
mozilla::dom::ReferrerPolicy refpol = mozilla::dom::ReferrerPolicy::_empty;
|
||||
if (mStylesheetDocument) {
|
||||
refpol = mStylesheetDocument->GetReferrerPolicy();
|
||||
}
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "mozilla/ErrorResult.h"
|
||||
#include "mozilla/dom/BindingDeclarations.h"
|
||||
#include "mozilla/dom/XSLTProcessorBinding.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class nsINode;
|
||||
class nsIURI;
|
||||
@ -160,7 +159,7 @@ class txMozillaXSLTProcessor final : public nsIDocumentTransformer,
|
||||
|
||||
extern nsresult TX_LoadSheet(nsIURI* aUri, txMozillaXSLTProcessor* aProcessor,
|
||||
mozilla::dom::Document* aLoaderDocument,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy);
|
||||
mozilla::dom::ReferrerPolicy aReferrerPolicy);
|
||||
|
||||
extern nsresult TX_CompileStylesheet(nsINode* aNode,
|
||||
txMozillaXSLTProcessor* aProcessor,
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "nsTArray.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using mozilla::net::ReferrerPolicy;
|
||||
using mozilla::dom::ReferrerPolicy;
|
||||
|
||||
txStylesheetCompiler::txStylesheetCompiler(const nsAString& aStylesheetURI,
|
||||
ReferrerPolicy aReferrerPolicy,
|
||||
@ -469,7 +469,7 @@ txStylesheetCompilerState::txStylesheetCompilerState(
|
||||
mDoneWithThisStylesheet(false),
|
||||
mNextInstrPtr(nullptr),
|
||||
mToplevelIterator(nullptr),
|
||||
mReferrerPolicy(mozilla::net::RP_Unset) {
|
||||
mReferrerPolicy(ReferrerPolicy::_empty) {
|
||||
// Embedded stylesheets have another handler, which is set in
|
||||
// txStylesheetCompiler::init if the baseURI has a fragment identifier.
|
||||
mHandlerTable = gTxRootHandler;
|
||||
@ -843,7 +843,7 @@ static nsresult findFunction(nsAtom* aName, int32_t aNamespaceID,
|
||||
|
||||
extern bool TX_XSLTFunctionAvailable(nsAtom* aName, int32_t aNameSpaceID) {
|
||||
RefPtr<txStylesheetCompiler> compiler =
|
||||
new txStylesheetCompiler(EmptyString(), mozilla::net::RP_Unset, nullptr);
|
||||
new txStylesheetCompiler(EmptyString(), ReferrerPolicy::_empty, nullptr);
|
||||
NS_ENSURE_TRUE(compiler, false);
|
||||
|
||||
nsAutoPtr<FunctionCall> fnCall;
|
||||
|
@ -14,7 +14,6 @@
|
||||
#include "nsAutoPtr.h"
|
||||
#include "txStylesheet.h"
|
||||
#include "nsTArray.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
extern bool TX_XSLTFunctionAvailable(nsAtom* aName, int32_t aNameSpaceID);
|
||||
|
||||
@ -41,12 +40,14 @@ class txElementContext : public txObject {
|
||||
int32_t mDepth;
|
||||
};
|
||||
|
||||
using mozilla::dom::ReferrerPolicy;
|
||||
|
||||
class txACompileObserver {
|
||||
public:
|
||||
NS_INLINE_DECL_PURE_VIRTUAL_REFCOUNTING
|
||||
|
||||
virtual nsresult loadURI(const nsAString& aUri, const nsAString& aReferrerUri,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
ReferrerPolicy aReferrerPolicy,
|
||||
txStylesheetCompiler* aCompiler) = 0;
|
||||
virtual void onDoneCompiling(txStylesheetCompiler* aCompiler,
|
||||
nsresult aResult,
|
||||
@ -56,7 +57,7 @@ class txACompileObserver {
|
||||
|
||||
#define TX_DECL_ACOMPILEOBSERVER \
|
||||
nsresult loadURI(const nsAString& aUri, const nsAString& aReferrerUri, \
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy, \
|
||||
ReferrerPolicy aReferrerPolicy, \
|
||||
txStylesheetCompiler* aCompiler) override; \
|
||||
void onDoneCompiling(txStylesheetCompiler* aCompiler, nsresult aResult, \
|
||||
const char16_t* aErrorText = nullptr, \
|
||||
@ -67,8 +68,7 @@ class txStylesheetCompilerState : public txIParseContext {
|
||||
explicit txStylesheetCompilerState(txACompileObserver* aObserver);
|
||||
~txStylesheetCompilerState();
|
||||
|
||||
nsresult init(const nsAString& aStylesheetURI,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
nsresult init(const nsAString& aStylesheetURI, ReferrerPolicy aReferrerPolicy,
|
||||
txStylesheet* aStylesheet, txListIterator* aInsertPosition);
|
||||
|
||||
// Embedded stylesheets state
|
||||
@ -159,7 +159,7 @@ class txStylesheetCompilerState : public txIParseContext {
|
||||
txInstruction** mNextInstrPtr;
|
||||
txListIterator mToplevelIterator;
|
||||
nsTArray<txInstruction**> mGotoTargetPointers;
|
||||
mozilla::net::ReferrerPolicy mReferrerPolicy;
|
||||
ReferrerPolicy mReferrerPolicy;
|
||||
};
|
||||
|
||||
struct txStylesheetAttr {
|
||||
@ -175,12 +175,12 @@ class txStylesheetCompiler final : private txStylesheetCompilerState,
|
||||
friend class txStylesheetCompilerState;
|
||||
friend bool TX_XSLTFunctionAvailable(nsAtom* aName, int32_t aNameSpaceID);
|
||||
txStylesheetCompiler(const nsAString& aStylesheetURI,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
ReferrerPolicy aReferrerPolicy,
|
||||
txACompileObserver* aObserver);
|
||||
txStylesheetCompiler(const nsAString& aStylesheetURI,
|
||||
txStylesheet* aStylesheet,
|
||||
txListIterator* aInsertPosition,
|
||||
mozilla::net::ReferrerPolicy aReferrerPolicy,
|
||||
ReferrerPolicy aReferrerPolicy,
|
||||
txACompileObserver* aObserver);
|
||||
|
||||
void setBaseURI(const nsString& aBaseURI);
|
||||
|
@ -1818,7 +1818,7 @@ nsresult nsXULPrototypeElement::SetAttrAt(uint32_t aPos,
|
||||
// inline styles are allowed to be applied.
|
||||
// XXX No specific specs talk about xul and referrer policy, pass Unset
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
new mozilla::dom::ReferrerInfo(aDocumentURI, mozilla::net::RP_Unset);
|
||||
new ReferrerInfo(aDocumentURI, ReferrerPolicy::_empty);
|
||||
|
||||
RefPtr<URLExtraData> data =
|
||||
new URLExtraData(aDocumentURI, referrerInfo, principal);
|
||||
|
@ -725,14 +725,14 @@ static bool ValidateSecurityInfo(imgRequest* request, bool forcePrincipalCheck,
|
||||
// XXX: this will return false if an image has different referrer attributes,
|
||||
// i.e. we currently don't use the cached image but reload the image with
|
||||
// the new referrer policy bug 1174921
|
||||
uint32_t referrerPolicy = RP_Unset;
|
||||
ReferrerPolicy referrerPolicy = ReferrerPolicy::_empty;
|
||||
if (aReferrerInfo) {
|
||||
referrerPolicy = aReferrerInfo->GetReferrerPolicy();
|
||||
referrerPolicy = aReferrerInfo->ReferrerPolicy();
|
||||
}
|
||||
|
||||
uint32_t requestReferrerPolicy = RP_Unset;
|
||||
ReferrerPolicy requestReferrerPolicy = ReferrerPolicy::_empty;
|
||||
if (request->GetReferrerInfo()) {
|
||||
requestReferrerPolicy = request->GetReferrerInfo()->GetReferrerPolicy();
|
||||
requestReferrerPolicy = request->GetReferrerInfo()->ReferrerPolicy();
|
||||
}
|
||||
|
||||
if (referrerPolicy != requestReferrerPolicy) {
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "nsIChannel.h"
|
||||
#include "nsIThreadRetargetableStreamListener.h"
|
||||
#include "imgIRequest.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class imgLoader;
|
||||
class imgRequestProxy;
|
||||
|
@ -49,6 +49,7 @@ class imgRequest final : public nsIStreamListener,
|
||||
typedef mozilla::image::Image Image;
|
||||
typedef mozilla::image::ImageCacheKey ImageCacheKey;
|
||||
typedef mozilla::image::ProgressTracker ProgressTracker;
|
||||
typedef mozilla::dom::ReferrerPolicy ReferrerPolicy;
|
||||
|
||||
public:
|
||||
imgRequest(imgLoader* aLoader, const ImageCacheKey& aCacheKey);
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "mozilla/StaticPrefs_layout.h"
|
||||
#include "mozilla/dom/Document.h"
|
||||
#include "nsStyleUtil.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
@ -483,7 +482,7 @@ already_AddRefed<URLExtraData> FontFace::GetURLExtraData() const {
|
||||
// We pass RP_Unset when creating ReferrerInfo object here because it's not
|
||||
// going to result to change referer policy in a resource request.
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
new mozilla::dom::ReferrerInfo(docURI, net::RP_Unset);
|
||||
new ReferrerInfo(docURI, ReferrerPolicy::_empty);
|
||||
|
||||
RefPtr<URLExtraData> url = new URLExtraData(base, referrerInfo, principal);
|
||||
return url.forget();
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "mozilla/dom/FontFaceSetLoadEventBinding.h"
|
||||
#include "mozilla/dom/Promise.h"
|
||||
#include "mozilla/FontPropertyTypes.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/AsyncEventDispatcher.h"
|
||||
#include "mozilla/Logging.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "imgIRequest.h"
|
||||
#include "imgINotificationObserver.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class imgIContainer;
|
||||
class nsIFrame;
|
||||
|
@ -1005,7 +1005,7 @@ nsresult SheetLoadData::VerifySheetReadyToParse(nsresult aStatus,
|
||||
// the same mInner as mSheet and will thus get the same URI.
|
||||
mSheet->SetURIs(channelURI, originalURI, channelURI);
|
||||
|
||||
net::ReferrerPolicy policy =
|
||||
ReferrerPolicy policy =
|
||||
nsContentUtils::GetReferrerPolicyFromChannel(aChannel);
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
ReferrerInfo::CreateForExternalCSSResources(mSheet, policy);
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "mozilla/Move.h"
|
||||
#include "mozilla/StyleSheet.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class nsICSSLoaderObserver;
|
||||
class nsIConsoleReportCollector;
|
||||
@ -87,7 +86,7 @@ class MOZ_RAII LoaderReusableStyleSheets {
|
||||
};
|
||||
|
||||
class Loader final {
|
||||
typedef mozilla::net::ReferrerPolicy ReferrerPolicy;
|
||||
typedef mozilla::dom::ReferrerPolicy ReferrerPolicy;
|
||||
|
||||
public:
|
||||
typedef nsIStyleSheetLinkingElement::Completed Completed;
|
||||
|
@ -1246,7 +1246,7 @@ const ServoCssRules* StyleSheet::ToShared(
|
||||
RawServoSharedMemoryBuilder* aBuilder) {
|
||||
// Assert some things we assume when creating a StyleSheet using shared
|
||||
// memory.
|
||||
MOZ_ASSERT(GetReferrerInfo()->GetReferrerPolicy() == net::RP_Unset);
|
||||
MOZ_ASSERT(GetReferrerInfo()->ReferrerPolicy() == ReferrerPolicy::_empty);
|
||||
MOZ_ASSERT(GetReferrerInfo()->GetSendReferrer());
|
||||
MOZ_ASSERT(!nsCOMPtr<nsIURI>(GetReferrerInfo()->GetComputedReferrer()));
|
||||
MOZ_ASSERT(GetCORSMode() == CORS_NONE);
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include "mozilla/css/SheetParsingMode.h"
|
||||
#include "mozilla/dom/CSSStyleSheetBinding.h"
|
||||
#include "mozilla/dom/SRIMetadata.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/CORSMode.h"
|
||||
#include "mozilla/MozPromise.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
|
@ -25,7 +25,7 @@ struct URLExtraData;
|
||||
* Struct for data common to CSSStyleSheetInner and ServoStyleSheet.
|
||||
*/
|
||||
struct StyleSheetInfo final {
|
||||
typedef net::ReferrerPolicy ReferrerPolicy;
|
||||
typedef dom::ReferrerPolicy ReferrerPolicy;
|
||||
|
||||
StyleSheetInfo(CORSMode aCORSMode, const dom::SRIMetadata& aIntegrity,
|
||||
css::SheetParsingMode aParsingMode);
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include "mozilla/Move.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
#include "mozilla/UserAgentStyleSheetID.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "ReferrerInfo.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIPrincipal.h"
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "mozilla/css/SheetParsingMode.h"
|
||||
#include "ReferrerInfo.h"
|
||||
#include "nsCSSValue.h"
|
||||
#include "ReferrerInfo.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::css;
|
||||
|
@ -10,7 +10,6 @@
|
||||
// Keep others in (case-insensitive) order:
|
||||
#include "mozilla/css/ImageLoader.h"
|
||||
#include "mozilla/dom/CanvasRenderingContext2D.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "mozilla/PresShell.h"
|
||||
#include "mozilla/RestyleManager.h"
|
||||
#include "nsCSSFrameConstructor.h"
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "nsNetCID.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsIChannel.h"
|
||||
#include "nsIHttpChannel.h"
|
||||
#include "nsCookiePermission.h"
|
||||
#include "nsIEffectiveTLDService.h"
|
||||
#include "nsIURI.h"
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIScriptSecurityManager.h"
|
||||
#include "nsIWebProgressListener.h"
|
||||
#include "nsIHttpChannel.h"
|
||||
|
||||
#include "nsIIOService.h"
|
||||
#include "nsIPermissionManager.h"
|
||||
|
@ -3246,7 +3246,7 @@ nsresult HttpBaseChannel::SetupReplacementChannel(nsIURI* newURI,
|
||||
}
|
||||
|
||||
if (mReferrerInfo) {
|
||||
ReferrerPolicy referrerPolicy = RP_Unset;
|
||||
dom::ReferrerPolicy referrerPolicy = dom::ReferrerPolicy::_empty;
|
||||
nsAutoCString tRPHeaderCValue;
|
||||
Unused << GetResponseHeader(NS_LITERAL_CSTRING("referrer-policy"),
|
||||
tRPHeaderCValue);
|
||||
@ -3258,7 +3258,7 @@ nsresult HttpBaseChannel::SetupReplacementChannel(nsIURI* newURI,
|
||||
}
|
||||
|
||||
DebugOnly<nsresult> success;
|
||||
if (referrerPolicy != RP_Unset) {
|
||||
if (referrerPolicy != dom::ReferrerPolicy::_empty) {
|
||||
// We may reuse computed referrer in redirect, so if referrerPolicy
|
||||
// changes, we must not use the old computed value, and have to compute
|
||||
// again.
|
||||
|
@ -10364,15 +10364,15 @@ void nsHttpChannel::ReEvaluateReferrerAfterTrackingStatusIsKnown() {
|
||||
// tracking channel, we may need to set our referrer with referrer policy
|
||||
// once again to ensure our defaults properly take effect now.
|
||||
if (mReferrerInfo) {
|
||||
dom::ReferrerInfo* referrerInfo =
|
||||
static_cast<dom::ReferrerInfo*>(mReferrerInfo.get());
|
||||
ReferrerInfo* referrerInfo =
|
||||
static_cast<ReferrerInfo*>(mReferrerInfo.get());
|
||||
|
||||
if (referrerInfo->IsPolicyOverrided() &&
|
||||
referrerInfo->GetReferrerPolicy() ==
|
||||
referrerInfo->ReferrerPolicy() ==
|
||||
ReferrerInfo::GetDefaultReferrerPolicy(nullptr, nullptr,
|
||||
isPrivate)) {
|
||||
nsCOMPtr<nsIReferrerInfo> newReferrerInfo =
|
||||
referrerInfo->CloneWithNewPolicy(RP_Unset);
|
||||
referrerInfo->CloneWithNewPolicy(ReferrerPolicy::_empty);
|
||||
SetReferrerInfo(newReferrerInfo, false, true);
|
||||
}
|
||||
}
|
||||
|
@ -71,34 +71,6 @@ interface nsIHttpChannel : nsIChannel
|
||||
[must_use, noscript]
|
||||
void setReferrerInfoWithoutClone(in nsIReferrerInfo aReferrerInfo);
|
||||
|
||||
/**
|
||||
* Referrer policies. See ReferrerPolicy.h for more details.
|
||||
*/
|
||||
|
||||
/* The undefined state, or no referrer policy, usually causing a fallback
|
||||
to a referrer policy definded elsewhere */
|
||||
const unsigned long REFERRER_POLICY_UNSET = 0;
|
||||
|
||||
/* default state, doesn't send referrer from https->http */
|
||||
const unsigned long REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE = 1;
|
||||
/* sends no referrer */
|
||||
const unsigned long REFERRER_POLICY_NO_REFERRER = 2;
|
||||
/* only sends the origin of the referring URL */
|
||||
const unsigned long REFERRER_POLICY_ORIGIN = 3;
|
||||
/* same as default, but reduced to ORIGIN when cross-origin. */
|
||||
const unsigned long REFERRER_POLICY_ORIGIN_WHEN_XORIGIN = 4;
|
||||
/* always sends the referrer, even on downgrade. */
|
||||
const unsigned long REFERRER_POLICY_UNSAFE_URL = 5;
|
||||
/* send referrer when same-origin, no referrer when cross-origin */
|
||||
const unsigned long REFERRER_POLICY_SAME_ORIGIN = 6;
|
||||
/* send origin when request from https->https or http->http(s)
|
||||
No referrer when request from https->http. */
|
||||
const unsigned long REFERRER_POLICY_STRICT_ORIGIN = 7;
|
||||
/* send referrer when same-origin,
|
||||
Send origin when cross-origin from https->https or http->http(s)
|
||||
No referrer when request from https->http. */
|
||||
const unsigned long REFERRER_POLICY_STRICT_ORIGIN_WHEN_XORIGIN = 8;
|
||||
|
||||
/**
|
||||
* Returns the network protocol used to fetch the resource as identified
|
||||
* by the ALPN Protocol ID.
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsHtml5DocumentMode.h"
|
||||
#include "nsHtml5String.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "ReferrerInfo.h"
|
||||
|
||||
class nsHtml5TreeOpExecutor;
|
||||
|
||||
@ -301,7 +301,7 @@ class nsHtml5SpeculativeLoad {
|
||||
* of the "referrerpolicy" attribute. This field holds one of the values
|
||||
* (REFERRER_POLICY_*) defined in nsIHttpChannel.
|
||||
*/
|
||||
mozilla::net::ReferrerPolicy mScriptReferrerPolicy;
|
||||
mozilla::dom::ReferrerPolicy mScriptReferrerPolicy;
|
||||
};
|
||||
|
||||
#endif // nsHtml5SpeculativeLoad_h
|
||||
|
@ -948,27 +948,26 @@ bool nsHtml5TreeOpExecutor::ShouldPreloadURI(nsIURI* aURI) {
|
||||
return mPreloadedURLs.EnsureInserted(spec);
|
||||
}
|
||||
|
||||
net::ReferrerPolicy nsHtml5TreeOpExecutor::GetPreloadReferrerPolicy(
|
||||
dom::ReferrerPolicy nsHtml5TreeOpExecutor::GetPreloadReferrerPolicy(
|
||||
const nsAString& aReferrerPolicy) {
|
||||
net::ReferrerPolicy referrerPolicy =
|
||||
net::AttributeReferrerPolicyFromString(aReferrerPolicy);
|
||||
return GetPreloadReferrerPolicy(referrerPolicy);
|
||||
}
|
||||
|
||||
net::ReferrerPolicy nsHtml5TreeOpExecutor::GetPreloadReferrerPolicy(
|
||||
dom::ReferrerPolicy nsHtml5TreeOpExecutor::GetPreloadReferrerPolicy(
|
||||
ReferrerPolicy aReferrerPolicy) {
|
||||
if (aReferrerPolicy != net::RP_Unset) {
|
||||
if (aReferrerPolicy != dom::ReferrerPolicy::_empty) {
|
||||
return aReferrerPolicy;
|
||||
}
|
||||
|
||||
return static_cast<net::ReferrerPolicy>(
|
||||
mDocument->GetPreloadReferrerInfo()->GetReferrerPolicy());
|
||||
return mDocument->GetPreloadReferrerInfo()->ReferrerPolicy();
|
||||
}
|
||||
|
||||
void nsHtml5TreeOpExecutor::PreloadScript(
|
||||
const nsAString& aURL, const nsAString& aCharset, const nsAString& aType,
|
||||
const nsAString& aCrossOrigin, const nsAString& aIntegrity,
|
||||
net::ReferrerPolicy aReferrerPolicy, bool aScriptFromHead, bool aAsync,
|
||||
dom::ReferrerPolicy aReferrerPolicy, bool aScriptFromHead, bool aAsync,
|
||||
bool aDefer, bool aNoModule) {
|
||||
nsCOMPtr<nsIURI> uri = ConvertIfNotPreloadedYet(aURL);
|
||||
if (!uri) {
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "nsHashKeys.h"
|
||||
#include "mozilla/LinkedList.h"
|
||||
#include "nsHtml5DocumentBuilder.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
|
||||
class nsHtml5Parser;
|
||||
class nsHtml5StreamParser;
|
||||
@ -39,7 +38,7 @@ class nsHtml5TreeOpExecutor final
|
||||
public nsAHtml5TreeOpSink,
|
||||
public mozilla::LinkedListElement<nsHtml5TreeOpExecutor> {
|
||||
friend class nsHtml5FlushLoopGuard;
|
||||
typedef mozilla::net::ReferrerPolicy ReferrerPolicy;
|
||||
typedef mozilla::dom::ReferrerPolicy ReferrerPolicy;
|
||||
using Encoding = mozilla::Encoding;
|
||||
template <typename T>
|
||||
using NotNull = mozilla::NotNull<T>;
|
||||
|
Loading…
x
Reference in New Issue
Block a user