mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-31 11:37:30 +09:00
ported from mozilla: Bug 1384493 - Speculative loading style should use correct referrer policy. r=wchen (19a77f8441)
This commit is contained in:
parent
687f52e183
commit
b694e41119
5 changed files with 25 additions and 6 deletions
|
|
@ -70,7 +70,8 @@ nsHtml5SpeculativeLoad::Perform(nsHtml5TreeOpExecutor* aExecutor)
|
||||||
mIsAsync, mIsDefer, true);
|
mIsAsync, mIsDefer, true);
|
||||||
break;
|
break;
|
||||||
case eSpeculativeLoadStyle:
|
case eSpeculativeLoadStyle:
|
||||||
aExecutor->PreloadStyle(mUrl, mCharset, mCrossOrigin, mIntegrity);
|
aExecutor->PreloadStyle(mUrl, mCharset, mCrossOrigin, mReferrerPolicy,
|
||||||
|
mIntegrity);
|
||||||
break;
|
break;
|
||||||
case eSpeculativeLoadManifest:
|
case eSpeculativeLoadManifest:
|
||||||
aExecutor->ProcessOfflineManifest(mUrl);
|
aExecutor->ProcessOfflineManifest(mUrl);
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,7 @@ class nsHtml5SpeculativeLoad {
|
||||||
inline void InitStyle(nsHtml5String aUrl,
|
inline void InitStyle(nsHtml5String aUrl,
|
||||||
nsHtml5String aCharset,
|
nsHtml5String aCharset,
|
||||||
nsHtml5String aCrossOrigin,
|
nsHtml5String aCrossOrigin,
|
||||||
|
nsHtml5String aReferrerPolicy,
|
||||||
nsHtml5String aIntegrity)
|
nsHtml5String aIntegrity)
|
||||||
{
|
{
|
||||||
NS_PRECONDITION(mOpCode == eSpeculativeLoadUninitialized,
|
NS_PRECONDITION(mOpCode == eSpeculativeLoadUninitialized,
|
||||||
|
|
@ -165,6 +166,7 @@ class nsHtml5SpeculativeLoad {
|
||||||
aUrl.ToString(mUrl);
|
aUrl.ToString(mUrl);
|
||||||
aCharset.ToString(mCharset);
|
aCharset.ToString(mCharset);
|
||||||
aCrossOrigin.ToString(mCrossOrigin);
|
aCrossOrigin.ToString(mCrossOrigin);
|
||||||
|
aReferrerPolicy.ToString(mReferrerPolicy);
|
||||||
aIntegrity.ToString(mIntegrity);
|
aIntegrity.ToString(mIntegrity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -218,8 +218,10 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace,
|
||||||
aAttributes->getValue(nsHtml5AttributeName::ATTR_CROSSORIGIN);
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_CROSSORIGIN);
|
||||||
nsHtml5String integrity =
|
nsHtml5String integrity =
|
||||||
aAttributes->getValue(nsHtml5AttributeName::ATTR_INTEGRITY);
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_INTEGRITY);
|
||||||
|
nsHtml5String referrerPolicy =
|
||||||
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_REFERRERPOLICY);
|
||||||
mSpeculativeLoadQueue.AppendElement()->InitStyle(
|
mSpeculativeLoadQueue.AppendElement()->InitStyle(
|
||||||
url, charset, crossOrigin, integrity);
|
url, charset, crossOrigin, referrerPolicy, integrity);
|
||||||
}
|
}
|
||||||
} else if (rel.LowerCaseEqualsASCII("preconnect")) {
|
} else if (rel.LowerCaseEqualsASCII("preconnect")) {
|
||||||
nsHtml5String url =
|
nsHtml5String url =
|
||||||
|
|
@ -263,8 +265,10 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace,
|
||||||
aAttributes->getValue(nsHtml5AttributeName::ATTR_CROSSORIGIN);
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_CROSSORIGIN);
|
||||||
nsHtml5String integrity =
|
nsHtml5String integrity =
|
||||||
aAttributes->getValue(nsHtml5AttributeName::ATTR_INTEGRITY);
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_INTEGRITY);
|
||||||
|
nsHtml5String referrerPolicy =
|
||||||
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_REFERRERPOLICY);
|
||||||
mSpeculativeLoadQueue.AppendElement()->InitStyle(
|
mSpeculativeLoadQueue.AppendElement()->InitStyle(
|
||||||
url, charset, crossOrigin, integrity);
|
url, charset, crossOrigin, referrerPolicy, integrity);
|
||||||
} else if (preloadAs.LowerCaseEqualsASCII("image")) {
|
} else if (preloadAs.LowerCaseEqualsASCII("image")) {
|
||||||
nsHtml5String srcset =
|
nsHtml5String srcset =
|
||||||
aAttributes->getValue(nsHtml5AttributeName::ATTR_SRCSET);
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_SRCSET);
|
||||||
|
|
@ -368,8 +372,10 @@ nsHtml5TreeBuilder::createElement(int32_t aNamespace,
|
||||||
aAttributes->getValue(nsHtml5AttributeName::ATTR_CROSSORIGIN);
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_CROSSORIGIN);
|
||||||
nsHtml5String integrity =
|
nsHtml5String integrity =
|
||||||
aAttributes->getValue(nsHtml5AttributeName::ATTR_INTEGRITY);
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_INTEGRITY);
|
||||||
|
nsHtml5String referrerPolicy =
|
||||||
|
aAttributes->getValue(nsHtml5AttributeName::ATTR_REFERRERPOLICY);
|
||||||
mSpeculativeLoadQueue.AppendElement()->InitStyle(
|
mSpeculativeLoadQueue.AppendElement()->InitStyle(
|
||||||
url, nullptr, crossOrigin, integrity);
|
url, nullptr, crossOrigin, referrerPolicy, integrity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -939,14 +939,23 @@ void
|
||||||
nsHtml5TreeOpExecutor::PreloadStyle(const nsAString& aURL,
|
nsHtml5TreeOpExecutor::PreloadStyle(const nsAString& aURL,
|
||||||
const nsAString& aCharset,
|
const nsAString& aCharset,
|
||||||
const nsAString& aCrossOrigin,
|
const nsAString& aCrossOrigin,
|
||||||
|
const nsAString& aReferrerPolicy,
|
||||||
const nsAString& aIntegrity)
|
const nsAString& aIntegrity)
|
||||||
{
|
{
|
||||||
nsCOMPtr<nsIURI> uri = ConvertIfNotPreloadedYet(aURL);
|
nsCOMPtr<nsIURI> uri = ConvertIfNotPreloadedYet(aURL);
|
||||||
if (!uri) {
|
if (!uri) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mDocument->PreloadStyle(uri, aCharset, aCrossOrigin,
|
|
||||||
mSpeculationReferrerPolicy, aIntegrity);
|
mozilla::net::ReferrerPolicy referrerPolicy = mSpeculationReferrerPolicy;
|
||||||
|
mozilla::net::ReferrerPolicy styleReferrerPolicy =
|
||||||
|
mozilla::net::AttributeReferrerPolicyFromString(aReferrerPolicy);
|
||||||
|
if (styleReferrerPolicy != mozilla::net::RP_Unset) {
|
||||||
|
referrerPolicy = styleReferrerPolicy;
|
||||||
|
}
|
||||||
|
|
||||||
|
mDocument->PreloadStyle(uri, aCharset, aCrossOrigin, referrerPolicy,
|
||||||
|
aIntegrity);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -256,6 +256,7 @@ class nsHtml5TreeOpExecutor final : public nsHtml5DocumentBuilder,
|
||||||
|
|
||||||
void PreloadStyle(const nsAString& aURL, const nsAString& aCharset,
|
void PreloadStyle(const nsAString& aURL, const nsAString& aCharset,
|
||||||
const nsAString& aCrossOrigin,
|
const nsAString& aCrossOrigin,
|
||||||
|
const nsAString& aReferrerPolicy,
|
||||||
const nsAString& aIntegrity);
|
const nsAString& aIntegrity);
|
||||||
|
|
||||||
void PreloadImage(const nsAString& aURL,
|
void PreloadImage(const nsAString& aURL,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue