Bug 1323157 - Rename HasNoFilterOrHasValidFilter as HasNoOrValidFilter.
MozReview-Commit-ID: GQzPf9Qy8LJ
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -7498,20 +7498,25 @@ nsDisplayFilter::BuildLayer(nsDisplayLis
return nullptr;
}
nsIFrame* firstFrame =
nsLayoutUtils::FirstContinuationOrIBSplitSibling(mFrame);
nsSVGEffects::EffectProperties effectProperties =
nsSVGEffects::GetEffectProperties(firstFrame);
+ if (effectProperties.HasInvalidFilter()) {
+ return nullptr;
+ }
+
+ MOZ_ASSERT(effectProperties.mFilter && mFrame->StyleEffects()->HasFilters(),
+ "By getting here, we must have valid CSS filters.");
+
ContainerLayerParameters newContainerParameters = aContainerParameters;
- if (effectProperties.HasValidFilter()) {
- newContainerParameters.mDisableSubpixelAntialiasingInDescendants = true;
- }
+ newContainerParameters.mDisableSubpixelAntialiasingInDescendants = true;
RefPtr<ContainerLayer> container = aManager->GetLayerBuilder()->
BuildContainerLayerFor(aBuilder, aManager, mFrame, this, &mList,
newContainerParameters, nullptr);
return container.forget();
}
--- a/layout/svg/nsSVGEffects.cpp
+++ b/layout/svg/nsSVGEffects.cpp
@@ -664,18 +664,17 @@ nsSVGEffects::EffectProperties::GetMaskF
}
return result;
}
bool
nsSVGEffects::EffectProperties::HasNoOrValidEffects()
{
- return HasNoOrValidClipPath() && HasNoOrValidMask() &&
- HasNoFilterOrHasValidFilter();
+ return HasNoOrValidClipPath() && HasNoOrValidMask() && HasNoOrValidFilter();
}
bool
nsSVGEffects::EffectProperties::MightHaveNoneSVGMask() const
{
if (!mMask) {
return false;
}
--- a/layout/svg/nsSVGEffects.h
+++ b/layout/svg/nsSVGEffects.h
@@ -523,19 +523,30 @@ public:
bool HasInvalidMask() {
return !HasNoOrValidMask();
}
bool HasValidFilter() {
return mFilter && mFilter->ReferencesValidResources();
}
- bool HasNoFilterOrHasValidFilter() {
+ /*
+ * @return true if we either do not have filter or all filters we have
+ * are valid.
+ */
+ bool HasNoOrValidFilter() {
return !mFilter || mFilter->ReferencesValidResources();
}
+
+ /*
+ * @return true if we have an invalid filter.
+ */
+ bool HasInvalidFilter() {
+ return !HasNoOrValidFilter();
+ }
};
/**
* @param aFrame should be the first continuation
*/
static EffectProperties GetEffectProperties(nsIFrame* aFrame);
/**
--- a/layout/svg/nsSVGIntegrationUtils.cpp
+++ b/layout/svg/nsSVGIntegrationUtils.cpp
@@ -1034,17 +1034,17 @@ nsSVGIntegrationUtils::PaintFilter(const
/* Properties are added lazily and may have been removed by a restyle,
so make sure all applicable ones are set again. */
nsIFrame* firstFrame =
nsLayoutUtils::FirstContinuationOrIBSplitSibling(frame);
nsSVGEffects::EffectProperties effectProperties =
nsSVGEffects::GetEffectProperties(firstFrame);
- if (!effectProperties.HasValidFilter()) {
+ if (effectProperties.HasInvalidFilter()) {
return DrawResult::NOT_READY;
}
gfxContext& context = aParams.ctx;
nsPoint offsetToBoundingBox;
nsPoint offsetToUserSpace;
gfxContextAutoSaveRestore autoSR(&context);