Bug 1619745: Remove GetUri usage in nsSyncLoadService.cpp r=ckerschb

Differential Revision: https://phabricator.services.mozilla.com/D65201

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Sebastian Streich 2020-03-05 13:42:13 +00:00
parent c15cc3a5c0
commit 7f6af6cae2
4 changed files with 28 additions and 5 deletions

View File

@ -978,4 +978,18 @@ bool SiteIdentifier::Equals(const SiteIdentifier& aOther) const {
return mPrincipal->FastEquals(aOther.mPrincipal);
}
NS_IMETHODIMP
BasePrincipal::CreateReferrerInfo(mozilla::dom::ReferrerPolicy aReferrerPolicy,
nsIReferrerInfo** _retval) {
nsCOMPtr<nsIURI> prinURI;
nsresult rv = GetURI(getter_AddRefs(prinURI));
if (NS_FAILED(rv) || !prinURI) {
return NS_ERROR_NOT_AVAILABLE;
}
RefPtr<dom::ReferrerInfo> info =
new dom::ReferrerInfo(prinURI, aReferrerPolicy);
info.forget(_retval);
return NS_OK;
}
} // namespace mozilla

View File

@ -150,6 +150,8 @@ class BasePrincipal : public nsJSPrincipals {
NS_IMETHOD GetLocalStorageQuotaKey(nsACString& aRes) override;
NS_IMETHOD AllowsRelaxStrictFileOriginPolicy(nsIURI* aURI,
bool* aRes) override;
NS_IMETHOD CreateReferrerInfo(mozilla::dom::ReferrerPolicy aReferrerPolicy,
nsIReferrerInfo** _retval) override;
nsresult ToJSON(nsACString& aJSON);
static already_AddRefed<BasePrincipal> FromJSON(const nsACString& aJSON);
// Method populates a passed Json::Value with serializable fields

View File

@ -8,6 +8,7 @@
#include "nsIContentSecurityPolicy.idl"
#include "nsISerializable.idl"
#include "nsIAboutModule.idl"
#include "nsIReferrerInfo.idl"
%{C++
struct JSPrincipals;
@ -45,6 +46,7 @@ interface nsIURI;
[ptr] native JSPrincipals(JSPrincipals);
[ref] native PrincipalArray(const nsTArray<nsCOMPtr<nsIPrincipal>>);
[ref] native const_OriginAttributes(const mozilla::OriginAttributes);
native ReferrerPolicy(mozilla::dom::ReferrerPolicy);
[scriptable, builtinclass, uuid(f75f502d-79fd-48be-a079-e5a7b8f80c8b)]
interface nsIPrincipal : nsISerializable
@ -323,6 +325,12 @@ interface nsIPrincipal : nsISerializable
*/
uint32_t getAboutModuleFlags();
/**
* Creates and Returns a new ReferrerInfo with the
* Principals URI
*/
nsIReferrerInfo createReferrerInfo(in ReferrerPolicy aReferrerPolicy);
/**
* The base part of |origin| without the concatenation with |originSuffix|.
* This doesn't have the important invariants described above with |origin|,

View File

@ -136,11 +136,10 @@ nsresult nsSyncLoader::LoadDocument(nsIChannel* aChannel, bool aChannelIsSync,
false);
MOZ_ASSERT(NS_SUCCEEDED(rv));
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
nsCOMPtr<nsIURI> loaderUri;
loadInfo->TriggeringPrincipal()->GetURI(getter_AddRefs(loaderUri));
if (loaderUri) {
nsCOMPtr<nsIReferrerInfo> referrerInfo =
new ReferrerInfo(loaderUri, aReferrerPolicy);
nsCOMPtr<nsIReferrerInfo> referrerInfo;
loadInfo->TriggeringPrincipal()->CreateReferrerInfo(
aReferrerPolicy, getter_AddRefs(referrerInfo));
if (referrerInfo) {
rv = http->SetReferrerInfoWithoutClone(referrerInfo);
MOZ_ASSERT(NS_SUCCEEDED(rv));
}