mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-27 04:38:02 +00:00
Bug 1546334 - Use referrerInfo in URLExtraData r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D36476 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
2376337c41
commit
8ddc35d9e5
@ -10,7 +10,7 @@
|
||||
|
||||
#include "mozilla/NullPrincipalURI.h"
|
||||
#include "nsProxyRelease.h"
|
||||
#include "mozilla/net/ReferrerPolicy.h"
|
||||
#include "ReferrerInfo.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
@ -19,10 +19,9 @@ StaticRefPtr<URLExtraData> URLExtraData::sDummy;
|
||||
/* static */
|
||||
void URLExtraData::InitDummy() {
|
||||
RefPtr<nsIURI> baseURI = NullPrincipalURI::Create();
|
||||
RefPtr<nsIURI> referrer = baseURI;
|
||||
sDummy = new URLExtraData(baseURI.forget(), referrer.forget(),
|
||||
NullPrincipal::CreateWithoutOriginAttributes(),
|
||||
net::RP_Unset);
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo = new dom::ReferrerInfo(nullptr);
|
||||
sDummy = new URLExtraData(baseURI.forget(), referrerInfo.forget(),
|
||||
NullPrincipal::CreateWithoutOriginAttributes());
|
||||
}
|
||||
|
||||
/* static */
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIPrincipal.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsIReferrerInfo.h"
|
||||
|
||||
class nsLayoutStylesheetCache;
|
||||
|
||||
@ -25,30 +26,29 @@ namespace mozilla {
|
||||
|
||||
struct URLExtraData {
|
||||
URLExtraData(already_AddRefed<nsIURI> aBaseURI,
|
||||
already_AddRefed<nsIURI> aReferrer,
|
||||
already_AddRefed<nsIPrincipal> aPrincipal,
|
||||
net::ReferrerPolicy aReferrerPolicy)
|
||||
already_AddRefed<nsIReferrerInfo> aReferrerInfo,
|
||||
already_AddRefed<nsIPrincipal> aPrincipal)
|
||||
: mBaseURI(std::move(aBaseURI)),
|
||||
mReferrer(std::move(aReferrer)),
|
||||
mReferrerPolicy(aReferrerPolicy),
|
||||
mPrincipal(std::move(aPrincipal)),
|
||||
// When we hold the URI data of a style sheet, mReferrer is always
|
||||
// equal to the sheet URI.
|
||||
mIsChrome(mReferrer ? dom::IsChromeURI(mReferrer) : false) {
|
||||
mReferrerInfo(std::move(aReferrerInfo)),
|
||||
mPrincipal(std::move(aPrincipal)) {
|
||||
MOZ_ASSERT(mBaseURI);
|
||||
MOZ_ASSERT(mPrincipal);
|
||||
MOZ_ASSERT(mReferrerInfo);
|
||||
// When we hold the URI data of a style sheet, referrer is always
|
||||
// equal to the sheet URI.
|
||||
nsCOMPtr<nsIURI> referrer = mReferrerInfo->GetOriginalReferrer();
|
||||
mIsChrome = referrer ? dom::IsChromeURI(referrer) : false;
|
||||
}
|
||||
|
||||
URLExtraData(nsIURI* aBaseURI, nsIURI* aReferrer, nsIPrincipal* aPrincipal,
|
||||
net::ReferrerPolicy aReferrerPolicy)
|
||||
: URLExtraData(do_AddRef(aBaseURI), do_AddRef(aReferrer),
|
||||
do_AddRef(aPrincipal), aReferrerPolicy) {}
|
||||
URLExtraData(nsIURI* aBaseURI, nsIReferrerInfo* aReferrerInfo,
|
||||
nsIPrincipal* aPrincipal)
|
||||
: URLExtraData(do_AddRef(aBaseURI), do_AddRef(aReferrerInfo),
|
||||
do_AddRef(aPrincipal)) {}
|
||||
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(URLExtraData)
|
||||
|
||||
nsIURI* BaseURI() const { return mBaseURI; }
|
||||
nsIURI* GetReferrer() const { return mReferrer; }
|
||||
net::ReferrerPolicy GetReferrerPolicy() const { return mReferrerPolicy; }
|
||||
nsIReferrerInfo* ReferrerInfo() const { return mReferrerInfo; }
|
||||
nsIPrincipal* Principal() const { return mPrincipal; }
|
||||
|
||||
static URLExtraData* Dummy() {
|
||||
@ -67,12 +67,11 @@ struct URLExtraData {
|
||||
~URLExtraData();
|
||||
|
||||
nsCOMPtr<nsIURI> mBaseURI;
|
||||
nsCOMPtr<nsIURI> mReferrer;
|
||||
net::ReferrerPolicy mReferrerPolicy;
|
||||
nsCOMPtr<nsIReferrerInfo> mReferrerInfo;
|
||||
nsCOMPtr<nsIPrincipal> mPrincipal;
|
||||
|
||||
// True if mReferrer is a chrome:// URI.
|
||||
const bool mIsChrome;
|
||||
// True if referrer is a chrome:// URI.
|
||||
bool mIsChrome;
|
||||
|
||||
static StaticRefPtr<URLExtraData> sDummy;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user