зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1298774 - Part 7: Make nsStyleFilter use css::URLValue for url() storage instead of FragmentOrURL. r=cjku
MozReview-Commit-ID: FyhH9QG9vYq --HG-- extra : rebase_source : 300a97e42ae9b27d83e7316e502295c597fad7cd
This commit is contained in:
Родитель
e07dbc8da6
Коммит
840196223a
|
@ -4153,11 +4153,7 @@ StyleAnimationValue::ExtractComputedValue(nsCSSPropertyID aProperty,
|
|||
const nsStyleFilter& filter = filters[i];
|
||||
int32_t type = filter.GetType();
|
||||
if (type == NS_STYLE_FILTER_URL) {
|
||||
nsIDocument* doc = aStyleContext->PresContext()->Document();
|
||||
RefPtr<mozilla::css::URLValue> url =
|
||||
FragmentOrURLToURLValue(filter.GetURL(), doc);
|
||||
|
||||
item->mValue.SetURLValue(url);
|
||||
item->mValue.SetURLValue(filter.GetURL());
|
||||
} else {
|
||||
nsCSSKeyword functionName =
|
||||
nsCSSProps::ValueToKeywordEnum(type,
|
||||
|
|
|
@ -6088,8 +6088,9 @@ nsComputedDOMStyle::CreatePrimitiveValueForStyleFilter(
|
|||
RefPtr<nsROCSSPrimitiveValue> value = new nsROCSSPrimitiveValue;
|
||||
// Handle url().
|
||||
if (aStyleFilter.GetType() == NS_STYLE_FILTER_URL) {
|
||||
MOZ_ASSERT(aStyleFilter.GetURL()->GetSourceURL());
|
||||
SetValueToFragmentOrURL(aStyleFilter.GetURL(), value);
|
||||
MOZ_ASSERT(aStyleFilter.GetURL() &&
|
||||
aStyleFilter.GetURL()->GetURI());
|
||||
SetValueToURLValue(aStyleFilter.GetURL(), value);
|
||||
return value.forget();
|
||||
}
|
||||
|
||||
|
|
|
@ -9766,7 +9766,7 @@ SetStyleFilterToCSSValue(nsStyleFilter* aStyleFilter,
|
|||
{
|
||||
nsCSSUnit unit = aValue.GetUnit();
|
||||
if (unit == eCSSUnit_URL) {
|
||||
return aStyleFilter->SetURL(&aValue);
|
||||
return aStyleFilter->SetURL(aValue.GetURLStructValue());
|
||||
}
|
||||
|
||||
MOZ_ASSERT(unit == eCSSUnit_Function, "expected a filter function");
|
||||
|
|
|
@ -1132,7 +1132,7 @@ nsStyleFilter::nsStyleFilter(const nsStyleFilter& aSource)
|
|||
{
|
||||
MOZ_COUNT_CTOR(nsStyleFilter);
|
||||
if (aSource.mType == NS_STYLE_FILTER_URL) {
|
||||
CopyURL(aSource);
|
||||
SetURL(aSource.mURL);
|
||||
} else if (aSource.mType == NS_STYLE_FILTER_DROP_SHADOW) {
|
||||
SetDropShadow(aSource.mDropShadow);
|
||||
} else if (aSource.mType != NS_STYLE_FILTER_NONE) {
|
||||
|
@ -1154,7 +1154,7 @@ nsStyleFilter::operator=(const nsStyleFilter& aOther)
|
|||
}
|
||||
|
||||
if (aOther.mType == NS_STYLE_FILTER_URL) {
|
||||
CopyURL(aOther);
|
||||
SetURL(aOther.mURL);
|
||||
} else if (aOther.mType == NS_STYLE_FILTER_DROP_SHADOW) {
|
||||
SetDropShadow(aOther.mDropShadow);
|
||||
} else if (aOther.mType != NS_STYLE_FILTER_NONE) {
|
||||
|
@ -1175,7 +1175,7 @@ nsStyleFilter::operator==(const nsStyleFilter& aOther) const
|
|||
}
|
||||
|
||||
if (mType == NS_STYLE_FILTER_URL) {
|
||||
return EqualURIs(mURL, aOther.mURL);
|
||||
return DefinitelyEqualURIs(mURL, aOther.mURL);
|
||||
} else if (mType == NS_STYLE_FILTER_DROP_SHADOW) {
|
||||
return *mDropShadow == *aOther.mDropShadow;
|
||||
} else if (mType != NS_STYLE_FILTER_NONE) {
|
||||
|
@ -1193,19 +1193,11 @@ nsStyleFilter::ReleaseRef()
|
|||
mDropShadow->Release();
|
||||
} else if (mType == NS_STYLE_FILTER_URL) {
|
||||
NS_ASSERTION(mURL, "expected pointer");
|
||||
delete mURL;
|
||||
mURL->Release();
|
||||
}
|
||||
mURL = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
nsStyleFilter::CopyURL(const nsStyleFilter& aOther)
|
||||
{
|
||||
ReleaseRef();
|
||||
mURL = new FragmentOrURL(*aOther.mURL);
|
||||
mType = NS_STYLE_FILTER_URL;
|
||||
}
|
||||
|
||||
void
|
||||
nsStyleFilter::SetFilterParameter(const nsStyleCoord& aFilterParameter,
|
||||
int32_t aType)
|
||||
|
@ -1216,17 +1208,11 @@ nsStyleFilter::SetFilterParameter(const nsStyleCoord& aFilterParameter,
|
|||
}
|
||||
|
||||
bool
|
||||
nsStyleFilter::SetURL(const nsCSSValue* aValue)
|
||||
nsStyleFilter::SetURL(css::URLValue* aURL)
|
||||
{
|
||||
if (!aValue->GetURLValue()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ReleaseRef();
|
||||
|
||||
mURL = new FragmentOrURL();
|
||||
mURL->SetValue(aValue);
|
||||
|
||||
mURL = aURL;
|
||||
mURL->AddRef();
|
||||
mType = NS_STYLE_FILTER_URL;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -3652,12 +3652,12 @@ struct nsStyleFilter
|
|||
void SetFilterParameter(const nsStyleCoord& aFilterParameter,
|
||||
int32_t aType);
|
||||
|
||||
mozilla::FragmentOrURL* GetURL() const {
|
||||
NS_ASSERTION(mType == NS_STYLE_FILTER_URL, "wrong filter type");
|
||||
mozilla::css::URLValue* GetURL() const {
|
||||
MOZ_ASSERT(mType == NS_STYLE_FILTER_URL, "wrong filter type");
|
||||
return mURL;
|
||||
}
|
||||
|
||||
bool SetURL(const nsCSSValue* aValue);
|
||||
bool SetURL(mozilla::css::URLValue* aValue);
|
||||
|
||||
nsCSSShadowArray* GetDropShadow() const {
|
||||
NS_ASSERTION(mType == NS_STYLE_FILTER_DROP_SHADOW, "wrong filter type");
|
||||
|
@ -3667,12 +3667,11 @@ struct nsStyleFilter
|
|||
|
||||
private:
|
||||
void ReleaseRef();
|
||||
void CopyURL(const nsStyleFilter& aOther);
|
||||
|
||||
int32_t mType; // see NS_STYLE_FILTER_* constants in nsStyleConsts.h
|
||||
nsStyleCoord mFilterParameter; // coord, percent, factor, angle
|
||||
union {
|
||||
mozilla::FragmentOrURL* mURL;
|
||||
mozilla::css::URLValue* mURL;
|
||||
nsCSSShadowArray* mDropShadow;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -303,7 +303,7 @@ nsSVGFilterChainObserver::nsSVGFilterChainObserver(const nsTArray<nsStyleFilter>
|
|||
// CanvasRenderingContext2D.
|
||||
nsCOMPtr<nsIURI> filterURL = aFilteredFrame
|
||||
? nsSVGEffects::GetFilterURI(aFilteredFrame, i)
|
||||
: aFilters[i].GetURL()->Resolve(aFilteredElement);
|
||||
: aFilters[i].GetURL()->ResolveLocalRef(aFilteredElement);
|
||||
|
||||
RefPtr<nsSVGFilterReference> reference =
|
||||
new nsSVGFilterReference(filterURL, aFilteredElement, this);
|
||||
|
@ -1020,7 +1020,7 @@ nsSVGEffects::GetFilterURI(nsIFrame* aFrame, uint32_t aIndex)
|
|||
MOZ_ASSERT(effects->mFilters.Length() > aIndex);
|
||||
MOZ_ASSERT(effects->mFilters[aIndex].GetType() == NS_STYLE_FILTER_URL);
|
||||
|
||||
return ResolveFragmentOrURL(aFrame, effects->mFilters[aIndex].GetURL());
|
||||
return ResolveURLUsingLocalRef(aFrame, effects->mFilters[aIndex].GetURL());
|
||||
}
|
||||
|
||||
already_AddRefed<nsIURI>
|
||||
|
@ -1029,7 +1029,7 @@ nsSVGEffects::GetFilterURI(nsIFrame* aFrame, const nsStyleFilter& aFilter)
|
|||
MOZ_ASSERT(aFrame->StyleEffects()->mFilters.Length());
|
||||
MOZ_ASSERT(aFilter.GetType() == NS_STYLE_FILTER_URL);
|
||||
|
||||
return ResolveFragmentOrURL(aFrame, aFilter.GetURL());
|
||||
return ResolveURLUsingLocalRef(aFrame, aFilter.GetURL());
|
||||
}
|
||||
|
||||
already_AddRefed<nsIURI>
|
||||
|
|
|
@ -131,7 +131,7 @@ nsSVGFilterInstance::GetFilterFrame(nsIFrame* aTargetFrame)
|
|||
// CanvasRenderingContext2D.
|
||||
nsCOMPtr<nsIURI> url = aTargetFrame
|
||||
? nsSVGEffects::GetFilterURI(aTargetFrame, mFilter)
|
||||
: mFilter.GetURL()->Resolve(mTargetContent);
|
||||
: mFilter.GetURL()->ResolveLocalRef(mTargetContent);
|
||||
|
||||
if (!url) {
|
||||
NS_NOTREACHED("an nsStyleFilter of type URL should have a non-null URL");
|
||||
|
|
Загрузка…
Ссылка в новой задаче