Bug 1323157 - Rename HasNoFilterOrHasValidFilter as HasNoOrValidFilter. draft
authorcku <cku@mozilla.com>
Tue, 13 Dec 2016 19:40:27 +0800
changeset 448959 a8dc2353d2e5ad5902cb6f903e29840ed3273080
parent 448945 aaf29758141832059ca5aa747d987253ce434b80
child 539437 bb66bca4019fdc28c3db371f7617f23ee8431ebe
push id38504
push userbmo:cku@mozilla.com
push dateTue, 13 Dec 2016 11:44:57 +0000
bugs1323157
milestone53.0a1
Bug 1323157 - Rename HasNoFilterOrHasValidFilter as HasNoOrValidFilter. MozReview-Commit-ID: GQzPf9Qy8LJ
layout/painting/nsDisplayList.cpp
layout/svg/nsSVGEffects.cpp
layout/svg/nsSVGEffects.h
layout/svg/nsSVGIntegrationUtils.cpp
--- 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);