mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-03 14:28:39 +09:00
Issue #2736 - Part 5: Re-work img <srcset> attribute.
Use subject principal as triggering principal in <img> "srcset" attribute.
This commit is contained in:
parent
c8db9efb3c
commit
2bdb9f3d85
5 changed files with 69 additions and 16 deletions
|
|
@ -115,7 +115,8 @@ ResponsiveImageSelector::~ResponsiveImageSelector()
|
|||
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/#processing-the-image-candidates
|
||||
bool
|
||||
ResponsiveImageSelector::SetCandidatesFromSourceSet(const nsAString & aSrcSet)
|
||||
ResponsiveImageSelector::SetCandidatesFromSourceSet(const nsAString & aSrcSet,
|
||||
nsIPrincipal* aTriggeringPrincipal)
|
||||
{
|
||||
ClearSelectedCandidate();
|
||||
|
||||
|
|
@ -167,6 +168,8 @@ ResponsiveImageSelector::SetCandidatesFromSourceSet(const nsAString & aSrcSet)
|
|||
ResponsiveImageCandidate candidate;
|
||||
if (candidate.ConsumeDescriptors(iter, end)) {
|
||||
candidate.SetURLSpec(urlStr);
|
||||
candidate.SetTriggeringPrincipal(nsContentUtils::GetAttrTriggeringPrincipal(
|
||||
Content(), urlStr, aTriggeringPrincipal));
|
||||
AppendCandidateIfUnique(candidate);
|
||||
}
|
||||
}
|
||||
|
|
@ -207,7 +210,8 @@ ResponsiveImageSelector::Document()
|
|||
}
|
||||
|
||||
void
|
||||
ResponsiveImageSelector::SetDefaultSource(const nsAString& aURLString)
|
||||
ResponsiveImageSelector::SetDefaultSource(const nsAString& aURLString,
|
||||
nsIPrincipal* aPrincipal)
|
||||
{
|
||||
ClearSelectedCandidate();
|
||||
|
||||
|
|
@ -219,6 +223,7 @@ ResponsiveImageSelector::SetDefaultSource(const nsAString& aURLString)
|
|||
}
|
||||
|
||||
mDefaultSourceURL = aURLString;
|
||||
mDefaultSourceTriggeringPrincipal = aPrincipal;
|
||||
|
||||
// Add new default to end of list
|
||||
MaybeAppendDefaultCandidate();
|
||||
|
|
@ -291,8 +296,9 @@ ResponsiveImageSelector::MaybeAppendDefaultCandidate()
|
|||
ResponsiveImageCandidate defaultCandidate;
|
||||
defaultCandidate.SetParameterDefault();
|
||||
defaultCandidate.SetURLSpec(mDefaultSourceURL);
|
||||
defaultCandidate.SetTriggeringPrincipal(mDefaultSourceTriggeringPrincipal);
|
||||
// We don't use MaybeAppend since we want to keep this even if it can never
|
||||
// match, as it may if the source set changes.
|
||||
// match, because as it may match if the source set changes dynamically.
|
||||
mCandidates.AppendElement(defaultCandidate);
|
||||
}
|
||||
|
||||
|
|
@ -329,6 +335,17 @@ ResponsiveImageSelector::GetSelectedImageDensity()
|
|||
return mCandidates[bestIndex].Density(this);
|
||||
}
|
||||
|
||||
nsIPrincipal*
|
||||
ResponsiveImageSelector::GetSelectedImageTriggeringPrincipal()
|
||||
{
|
||||
int bestIndex = GetSelectedCandidateIndex();
|
||||
if (bestIndex < 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return mCandidates[bestIndex].TriggeringPrincipal();
|
||||
}
|
||||
|
||||
bool
|
||||
ResponsiveImageSelector::SelectImage(bool aReselect)
|
||||
{
|
||||
|
|
@ -457,8 +474,10 @@ ResponsiveImageCandidate::ResponsiveImageCandidate()
|
|||
}
|
||||
|
||||
ResponsiveImageCandidate::ResponsiveImageCandidate(const nsAString& aURLString,
|
||||
double aDensity)
|
||||
double aDensity,
|
||||
nsIPrincipal* aTriggeringPrincipal)
|
||||
: mURLString(aURLString)
|
||||
, mTriggeringPrincipal(aTriggeringPrincipal)
|
||||
{
|
||||
mType = eCandidateType_Density;
|
||||
mValue.mDensity = aDensity;
|
||||
|
|
@ -471,6 +490,12 @@ ResponsiveImageCandidate::SetURLSpec(const nsAString& aURLString)
|
|||
mURLString = aURLString;
|
||||
}
|
||||
|
||||
void
|
||||
ResponsiveImageCandidate::SetTriggeringPrincipal(nsIPrincipal* aPrincipal)
|
||||
{
|
||||
mTriggeringPrincipal = aPrincipal;
|
||||
}
|
||||
|
||||
void
|
||||
ResponsiveImageCandidate::SetParameterAsComputedWidth(int32_t aWidth)
|
||||
{
|
||||
|
|
@ -717,6 +742,12 @@ ResponsiveImageCandidate::URLString() const
|
|||
return mURLString;
|
||||
}
|
||||
|
||||
nsIPrincipal*
|
||||
ResponsiveImageCandidate::TriggeringPrincipal() const
|
||||
{
|
||||
return mTriggeringPrincipal;
|
||||
}
|
||||
|
||||
double
|
||||
ResponsiveImageCandidate::Density(ResponsiveImageSelector *aSelector) const
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue