From a3f1ea69904537f287721a703aceafd06103adb1 Mon Sep 17 00:00:00 2001 From: Ryan VanderMeulen Date: Sun, 15 Sep 2013 18:59:27 -0400 Subject: [PATCH] Backed out 7 changesets (bug 902525) for B2G reftest failures. Backed out changeset bbca63772c83 (bug 902525) Backed out changeset edb386989dbd (bug 902525) Backed out changeset 3137dadb4fcd (bug 902525) Backed out changeset e562afcb3c89 (bug 902525) Backed out changeset 8ef3a516bd68 (bug 902525) Backed out changeset 520fcd422150 (bug 902525) Backed out changeset 4e553e8da44e (bug 902525) --- gfx/layers/Layers.cpp | 16 -- gfx/layers/Layers.h | 34 ----- gfx/layers/basic/BasicCanvasLayer.cpp | 3 +- gfx/layers/basic/BasicColorLayer.cpp | 3 +- gfx/layers/basic/BasicContainerLayer.cpp | 15 +- gfx/layers/basic/BasicImageLayer.cpp | 4 +- gfx/layers/basic/BasicThebesLayer.cpp | 9 +- layout/base/nsDisplayItemTypesList.h | 2 - layout/base/nsDisplayList.cpp | 141 +----------------- layout/base/nsDisplayList.h | 62 -------- layout/generic/nsFrame.cpp | 45 +----- .../css-blending/as-image/black100x100.png | Bin 15438 -> 0 bytes .../css-blending/as-image/green100x100.png | Bin 14667 -> 0 bytes .../css-blending/blend-canvas-ref.html | 28 ---- .../reftests/css-blending/blend-canvas.html | 29 ---- .../blend-constant-background-color-ref.html | 22 --- .../blend-constant-background-color.html | 23 --- .../blend-difference-stacking-ref.html | 20 --- .../blend-difference-stacking.html | 30 ---- .../blend-gradient-background-color-ref.html | 22 --- .../blend-gradient-background-color.html | 23 --- .../css-blending/blend-image-ref.html | 20 --- layout/reftests/css-blending/blend-image.html | 21 --- layout/reftests/css-blending/reftest.list | 5 - layout/reftests/reftest.list | 3 - layout/reftests/svg/blend-color-burn-ref.svg | 22 --- layout/reftests/svg/blend-color-burn.svg | 16 -- layout/reftests/svg/blend-color-dodge-ref.svg | 22 --- layout/reftests/svg/blend-color-dodge.svg | 16 -- layout/reftests/svg/blend-color-ref.svg | 22 --- layout/reftests/svg/blend-color.svg | 16 -- layout/reftests/svg/blend-darken-ref.svg | 22 --- layout/reftests/svg/blend-darken.svg | 16 -- layout/reftests/svg/blend-difference-ref.svg | 22 --- .../svg/blend-difference-stacking-ref.html | 28 ---- .../svg/blend-difference-stacking.html | 28 ---- layout/reftests/svg/blend-difference.svg | 16 -- layout/reftests/svg/blend-exclusion-ref.svg | 22 --- layout/reftests/svg/blend-exclusion.svg | 16 -- layout/reftests/svg/blend-hard-light-ref.svg | 22 --- layout/reftests/svg/blend-hard-light.svg | 16 -- layout/reftests/svg/blend-hue-ref.svg | 22 --- layout/reftests/svg/blend-hue.svg | 16 -- layout/reftests/svg/blend-layer-blend-ref.svg | 7 - layout/reftests/svg/blend-layer-blend.svg | 10 -- .../reftests/svg/blend-layer-filter-ref.svg | 7 - layout/reftests/svg/blend-layer-filter.svg | 15 -- layout/reftests/svg/blend-layer-mask-ref.svg | 7 - layout/reftests/svg/blend-layer-mask.svg | 15 -- .../reftests/svg/blend-layer-opacity-ref.svg | 7 - layout/reftests/svg/blend-layer-opacity.svg | 10 -- layout/reftests/svg/blend-lighten-ref.svg | 22 --- layout/reftests/svg/blend-lighten.svg | 16 -- layout/reftests/svg/blend-luminosity-ref.svg | 22 --- layout/reftests/svg/blend-luminosity.svg | 16 -- .../reftests/svg/blend-multiply-alpha-ref.svg | 22 --- layout/reftests/svg/blend-multiply-alpha.svg | 16 -- layout/reftests/svg/blend-multiply-ref.svg | 22 --- layout/reftests/svg/blend-multiply.svg | 16 -- layout/reftests/svg/blend-normal-ref.svg | 22 --- layout/reftests/svg/blend-normal.svg | 16 -- layout/reftests/svg/blend-overlay-ref.svg | 22 --- layout/reftests/svg/blend-overlay.svg | 16 -- layout/reftests/svg/blend-saturation-ref.svg | 22 --- layout/reftests/svg/blend-saturation.svg | 16 -- layout/reftests/svg/blend-screen-ref.svg | 22 --- layout/reftests/svg/blend-screen.svg | 16 -- layout/reftests/svg/blend-soft-light-ref.svg | 22 --- layout/reftests/svg/blend-soft-light.svg | 16 -- layout/reftests/svg/reftest.list | 23 --- layout/svg/nsSVGImageFrame.cpp | 4 +- layout/svg/nsSVGIntegrationUtils.cpp | 3 +- layout/svg/nsSVGUtils.cpp | 3 +- 73 files changed, 17 insertions(+), 1376 deletions(-) delete mode 100644 layout/reftests/css-blending/as-image/black100x100.png delete mode 100644 layout/reftests/css-blending/as-image/green100x100.png delete mode 100644 layout/reftests/css-blending/blend-canvas-ref.html delete mode 100644 layout/reftests/css-blending/blend-canvas.html delete mode 100644 layout/reftests/css-blending/blend-constant-background-color-ref.html delete mode 100644 layout/reftests/css-blending/blend-constant-background-color.html delete mode 100644 layout/reftests/css-blending/blend-difference-stacking-ref.html delete mode 100644 layout/reftests/css-blending/blend-difference-stacking.html delete mode 100644 layout/reftests/css-blending/blend-gradient-background-color-ref.html delete mode 100644 layout/reftests/css-blending/blend-gradient-background-color.html delete mode 100644 layout/reftests/css-blending/blend-image-ref.html delete mode 100644 layout/reftests/css-blending/blend-image.html delete mode 100644 layout/reftests/css-blending/reftest.list delete mode 100644 layout/reftests/svg/blend-color-burn-ref.svg delete mode 100644 layout/reftests/svg/blend-color-burn.svg delete mode 100644 layout/reftests/svg/blend-color-dodge-ref.svg delete mode 100644 layout/reftests/svg/blend-color-dodge.svg delete mode 100644 layout/reftests/svg/blend-color-ref.svg delete mode 100644 layout/reftests/svg/blend-color.svg delete mode 100644 layout/reftests/svg/blend-darken-ref.svg delete mode 100644 layout/reftests/svg/blend-darken.svg delete mode 100644 layout/reftests/svg/blend-difference-ref.svg delete mode 100644 layout/reftests/svg/blend-difference-stacking-ref.html delete mode 100644 layout/reftests/svg/blend-difference-stacking.html delete mode 100644 layout/reftests/svg/blend-difference.svg delete mode 100644 layout/reftests/svg/blend-exclusion-ref.svg delete mode 100644 layout/reftests/svg/blend-exclusion.svg delete mode 100644 layout/reftests/svg/blend-hard-light-ref.svg delete mode 100644 layout/reftests/svg/blend-hard-light.svg delete mode 100644 layout/reftests/svg/blend-hue-ref.svg delete mode 100644 layout/reftests/svg/blend-hue.svg delete mode 100644 layout/reftests/svg/blend-layer-blend-ref.svg delete mode 100644 layout/reftests/svg/blend-layer-blend.svg delete mode 100644 layout/reftests/svg/blend-layer-filter-ref.svg delete mode 100644 layout/reftests/svg/blend-layer-filter.svg delete mode 100644 layout/reftests/svg/blend-layer-mask-ref.svg delete mode 100644 layout/reftests/svg/blend-layer-mask.svg delete mode 100644 layout/reftests/svg/blend-layer-opacity-ref.svg delete mode 100644 layout/reftests/svg/blend-layer-opacity.svg delete mode 100644 layout/reftests/svg/blend-lighten-ref.svg delete mode 100644 layout/reftests/svg/blend-lighten.svg delete mode 100644 layout/reftests/svg/blend-luminosity-ref.svg delete mode 100644 layout/reftests/svg/blend-luminosity.svg delete mode 100644 layout/reftests/svg/blend-multiply-alpha-ref.svg delete mode 100644 layout/reftests/svg/blend-multiply-alpha.svg delete mode 100644 layout/reftests/svg/blend-multiply-ref.svg delete mode 100644 layout/reftests/svg/blend-multiply.svg delete mode 100644 layout/reftests/svg/blend-normal-ref.svg delete mode 100644 layout/reftests/svg/blend-normal.svg delete mode 100644 layout/reftests/svg/blend-overlay-ref.svg delete mode 100644 layout/reftests/svg/blend-overlay.svg delete mode 100644 layout/reftests/svg/blend-saturation-ref.svg delete mode 100644 layout/reftests/svg/blend-saturation.svg delete mode 100644 layout/reftests/svg/blend-screen-ref.svg delete mode 100644 layout/reftests/svg/blend-screen.svg delete mode 100644 layout/reftests/svg/blend-soft-light-ref.svg delete mode 100644 layout/reftests/svg/blend-soft-light.svg diff --git a/gfx/layers/Layers.cpp b/gfx/layers/Layers.cpp index ed5c82410c9b..39ca3b95eccf 100644 --- a/gfx/layers/Layers.cpp +++ b/gfx/layers/Layers.cpp @@ -181,8 +181,6 @@ Layer::Layer(LayerManager* aManager, void* aImplData) : mPostXScale(1.0f), mPostYScale(1.0f), mOpacity(1.0), - mMixBlendMode(gfxContext::OPERATOR_OVER), - mForceIsolatedGroup(false), mContentFlags(0), mUseClipRect(false), mUseTileSourceRect(false), @@ -682,20 +680,6 @@ Layer::GetEffectiveOpacity() } return opacity; } - -gfxContext::GraphicsOperator -Layer::GetEffectiveMixBlendMode() -{ - if(mMixBlendMode != gfxContext::OPERATOR_OVER) - return mMixBlendMode; - for (ContainerLayer* c = GetParent(); c && !c->UseIntermediateSurface(); - c = c->GetParent()) { - if(c->mMixBlendMode != gfxContext::OPERATOR_OVER) - return c->mMixBlendMode; - } - - return mMixBlendMode; -} void Layer::ComputeEffectiveTransformForMaskLayer(const gfx3DMatrix& aTransformToSurface) diff --git a/gfx/layers/Layers.h b/gfx/layers/Layers.h index 54e5e56d2c41..a55c13fc92b9 100644 --- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -12,7 +12,6 @@ #include "FrameMetrics.h" // for FrameMetrics #include "Units.h" // for LayerMargin, LayerPoint #include "gfx3DMatrix.h" // for gfx3DMatrix -#include "gfxContext.h" // for GraphicsOperator #include "gfxASurface.h" // for gfxASurface, etc #include "gfxColor.h" // for gfxRGBA #include "gfxMatrix.h" // for gfxMatrix @@ -733,29 +732,6 @@ public: } } - void SetMixBlendMode(gfxContext::GraphicsOperator aMixBlendMode) - { - if (mMixBlendMode != aMixBlendMode) { - MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) MixBlendMode", this)); - mMixBlendMode = aMixBlendMode; - Mutated(); - } - } - - void SetForceIsolatedGroup(bool aForceIsolatedGroup) - { - if(mForceIsolatedGroup != aForceIsolatedGroup) { - MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) ForceIsolatedGroup", this)); - mForceIsolatedGroup = aForceIsolatedGroup; - Mutated(); - } - } - - bool GetForceIsolatedGroup() const - { - return mForceIsolatedGroup; - } - /** * CONSTRUCTION PHASE ONLY * Set a clip rect which will be applied to this layer as it is @@ -961,7 +937,6 @@ public: // These getters can be used anytime. float GetOpacity() { return mOpacity; } - gfxContext::GraphicsOperator GetMixBlendMode() const { return mMixBlendMode; } const nsIntRect* GetClipRect() { return mUseClipRect ? &mClipRect : nullptr; } uint32_t GetContentFlags() { return mContentFlags; } const nsIntRegion& GetVisibleRegion() { return mVisibleRegion; } @@ -1127,18 +1102,11 @@ public: // accounting for this layer possibly being a shadow. const nsIntRect* GetEffectiveClipRect(); const nsIntRegion& GetEffectiveVisibleRegion(); - /** * Returns the product of the opacities of this layer and all ancestors up * to and excluding the nearest ancestor that has UseIntermediateSurface() set. */ float GetEffectiveOpacity(); - - /** - * Returns the blendmode of this layer. - */ - gfxContext::GraphicsOperator GetEffectiveMixBlendMode(); - /** * This returns the effective transform computed by * ComputeEffectiveTransforms. Typically this is a transform that transforms @@ -1336,8 +1304,6 @@ protected: AnimationArray mAnimations; InfallibleTArray mAnimationData; float mOpacity; - gfxContext::GraphicsOperator mMixBlendMode; - bool mForceIsolatedGroup; nsIntRect mClipRect; nsIntRect mTileSourceRect; nsIntRegion mInvalidRegion; diff --git a/gfx/layers/basic/BasicCanvasLayer.cpp b/gfx/layers/basic/BasicCanvasLayer.cpp index f6bec46643be..50c1c2820188 100644 --- a/gfx/layers/basic/BasicCanvasLayer.cpp +++ b/gfx/layers/basic/BasicCanvasLayer.cpp @@ -27,8 +27,7 @@ BasicCanvasLayer::Paint(gfxContext* aContext, Layer* aMaskLayer) UpdateSurface(); FireDidTransactionCallback(); - gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode(); - PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator()); + PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, GetOperator()); } already_AddRefed diff --git a/gfx/layers/basic/BasicColorLayer.cpp b/gfx/layers/basic/BasicColorLayer.cpp index 08930abf192c..154c54855d17 100644 --- a/gfx/layers/basic/BasicColorLayer.cpp +++ b/gfx/layers/basic/BasicColorLayer.cpp @@ -48,8 +48,7 @@ public: if (IsHidden()) return; gfxContextAutoSaveRestore contextSR(aContext); - gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode(); - AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator()); + AutoSetOperator setOperator(aContext, GetOperator()); aContext->SetColor(mColor); diff --git a/gfx/layers/basic/BasicContainerLayer.cpp b/gfx/layers/basic/BasicContainerLayer.cpp index a9bc47fec85a..6973aad37f03 100644 --- a/gfx/layers/basic/BasicContainerLayer.cpp +++ b/gfx/layers/basic/BasicContainerLayer.cpp @@ -57,25 +57,16 @@ BasicContainerLayer::ComputeEffectiveTransforms(const gfx3DMatrix& aTransformToS ComputeEffectiveTransformsForChildren(idealTransform); ComputeEffectiveTransformForMaskLayer(aTransformToSurface); - - Layer* child = GetFirstChild(); - bool hasSingleBlendingChild = false; - if (!HasMultipleChildren() && child) { - hasSingleBlendingChild = child->GetMixBlendMode() != gfxContext::OPERATOR_OVER; - } - /* If we have a single childand it is not blending,, it can just inherit our opacity, + /* If we have a single child, it can just inherit our opacity, * otherwise we need a PushGroup and we need to mark ourselves as using * an intermediate surface so our children don't inherit our opacity * via GetEffectiveOpacity. * Having a mask layer always forces our own push group - * Having a blend mode also always forces our own push group */ mUseIntermediateSurface = - GetMaskLayer() || - GetForceIsolatedGroup() || - (GetMixBlendMode() != gfxContext::OPERATOR_OVER && HasMultipleChildren()) || - (GetEffectiveOpacity() != 1.0 && (HasMultipleChildren() || hasSingleBlendingChild)); + GetMaskLayer() || (GetEffectiveOpacity() != 1.0 && + HasMultipleChildren()); } bool diff --git a/gfx/layers/basic/BasicImageLayer.cpp b/gfx/layers/basic/BasicImageLayer.cpp index c4130bd421e3..8e2187b03a59 100644 --- a/gfx/layers/basic/BasicImageLayer.cpp +++ b/gfx/layers/basic/BasicImageLayer.cpp @@ -110,9 +110,7 @@ BasicImageLayer::GetAndPaintCurrentImage(gfxContext* aContext, // The visible region can extend outside the image, so just draw // within the image bounds. if (aContext) { - gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode(); - AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator()); - + AutoSetOperator setOperator(aContext, GetOperator()); PaintContext(pat, nsIntRegion(nsIntRect(0, 0, size.width, size.height)), aOpacity, aContext, aMaskLayer); diff --git a/gfx/layers/basic/BasicThebesLayer.cpp b/gfx/layers/basic/BasicThebesLayer.cpp index 775fe418ece9..7b0010e93051 100644 --- a/gfx/layers/basic/BasicThebesLayer.cpp +++ b/gfx/layers/basic/BasicThebesLayer.cpp @@ -109,8 +109,7 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext, canUseOpaqueSurface ? gfxASurface::CONTENT_COLOR : gfxASurface::CONTENT_COLOR_ALPHA; float opacity = GetEffectiveOpacity(); - gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode(); - + if (!BasicManager()->IsRetained()) { NS_ASSERTION(readbackUpdates.IsEmpty(), "Can't do readback for non-retained layer"); @@ -131,13 +130,13 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext, bool needsClipToVisibleRegion = GetClipToVisibleRegion(); bool needsGroup = - opacity != 1.0 || GetOperator() != gfxContext::OPERATOR_OVER || mixBlendMode != gfxContext::OPERATOR_OVER || aMaskLayer; + opacity != 1.0 || GetOperator() != gfxContext::OPERATOR_OVER || aMaskLayer; nsRefPtr groupContext; if (needsGroup) { groupContext = BasicManager()->PushGroupForLayer(aContext, this, toDraw, &needsClipToVisibleRegion); - if (GetOperator() != gfxContext::OPERATOR_OVER || mixBlendMode != gfxContext::OPERATOR_OVER) { + if (GetOperator() != gfxContext::OPERATOR_OVER) { needsClipToVisibleRegion = true; } } else { @@ -150,7 +149,7 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext, if (needsClipToVisibleRegion) { gfxUtils::ClipToRegion(aContext, toDraw); } - AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator()); + AutoSetOperator setOperator(aContext, GetOperator()); PaintWithMask(aContext, opacity, aMaskLayer); } diff --git a/layout/base/nsDisplayItemTypesList.h b/layout/base/nsDisplayItemTypesList.h index 0dac91c366bd..82cfa2edffcb 100644 --- a/layout/base/nsDisplayItemTypesList.h +++ b/layout/base/nsDisplayItemTypesList.h @@ -3,7 +3,6 @@ DECLARE_DISPLAY_ITEM_TYPE(ALT_FEEDBACK) DECLARE_DISPLAY_ITEM_TYPE(BACKGROUND) DECLARE_DISPLAY_ITEM_TYPE(THEMED_BACKGROUND) DECLARE_DISPLAY_ITEM_TYPE_FLAGS(BACKGROUND_COLOR,TYPE_RENDERS_NO_IMAGES) -DECLARE_DISPLAY_ITEM_TYPE(BLEND_CONTAINER) DECLARE_DISPLAY_ITEM_TYPE(BORDER) DECLARE_DISPLAY_ITEM_TYPE(BOX_SHADOW_OUTER) DECLARE_DISPLAY_ITEM_TYPE(BOX_SHADOW_INNER) @@ -30,7 +29,6 @@ DECLARE_DISPLAY_ITEM_TYPE(FRAMESET_BLANK) DECLARE_DISPLAY_ITEM_TYPE(HEADER_FOOTER) DECLARE_DISPLAY_ITEM_TYPE(IMAGE) DECLARE_DISPLAY_ITEM_TYPE(LIST_FOCUS) -DECLARE_DISPLAY_ITEM_TYPE(MIX_BLEND_MODE) DECLARE_DISPLAY_ITEM_TYPE(OPACITY) DECLARE_DISPLAY_ITEM_TYPE(OPTION_EVENT_GRABBER) DECLARE_DISPLAY_ITEM_TYPE(OUTLINE) diff --git a/layout/base/nsDisplayList.cpp b/layout/base/nsDisplayList.cpp index 5574a6b44bee..c66b25dcf61c 100644 --- a/layout/base/nsDisplayList.cpp +++ b/layout/base/nsDisplayList.cpp @@ -486,8 +486,7 @@ nsDisplayListBuilder::nsDisplayListBuilder(nsIFrame* aReferenceFrame, mHasFixedItems(false), mIsInFixedPosition(false), mIsCompositingCheap(false), - mContainsPluginItem(false), - mContainsBlendMode(false) + mContainsPluginItem(false) { MOZ_COUNT_CTOR(nsDisplayListBuilder); PL_InitArenaPool(&mPool, "displayListArena", 1024, @@ -3118,144 +3117,6 @@ bool nsDisplayOpacity::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* a return true; } -nsDisplayMixBlendMode::nsDisplayMixBlendMode(nsDisplayListBuilder* aBuilder, - nsIFrame* aFrame, nsDisplayList* aList, - uint32_t aFlags) -: nsDisplayWrapList(aBuilder, aFrame, aList) { - MOZ_COUNT_CTOR(nsDisplayMixBlendMode); -} - -#ifdef NS_BUILD_REFCNT_LOGGING -nsDisplayMixBlendMode::~nsDisplayMixBlendMode() { - MOZ_COUNT_DTOR(nsDisplayMixBlendMode); -} -#endif - -nsRegion nsDisplayMixBlendMode::GetOpaqueRegion(nsDisplayListBuilder* aBuilder, - bool* aSnap) { - *aSnap = false; - // We are never considered opaque - return nsRegion(); -} - -static gfxContext::GraphicsOperator GetGFXBlendMode(uint8_t mBlendMode) { - switch (mBlendMode) { - case NS_STYLE_BLEND_NORMAL: return gfxContext::OPERATOR_OVER; - case NS_STYLE_BLEND_MULTIPLY: return gfxContext::OPERATOR_MULTIPLY; - case NS_STYLE_BLEND_SCREEN: return gfxContext::OPERATOR_SCREEN; - case NS_STYLE_BLEND_OVERLAY: return gfxContext::OPERATOR_OVERLAY; - case NS_STYLE_BLEND_DARKEN: return gfxContext::OPERATOR_DARKEN; - case NS_STYLE_BLEND_LIGHTEN: return gfxContext::OPERATOR_LIGHTEN; - case NS_STYLE_BLEND_COLOR_DODGE: return gfxContext::OPERATOR_COLOR_DODGE; - case NS_STYLE_BLEND_COLOR_BURN: return gfxContext::OPERATOR_COLOR_BURN; - case NS_STYLE_BLEND_HARD_LIGHT: return gfxContext::OPERATOR_HARD_LIGHT; - case NS_STYLE_BLEND_SOFT_LIGHT: return gfxContext::OPERATOR_SOFT_LIGHT; - case NS_STYLE_BLEND_DIFFERENCE: return gfxContext::OPERATOR_DIFFERENCE; - case NS_STYLE_BLEND_EXCLUSION: return gfxContext::OPERATOR_EXCLUSION; - case NS_STYLE_BLEND_HUE: return gfxContext::OPERATOR_HUE; - case NS_STYLE_BLEND_SATURATION: return gfxContext::OPERATOR_SATURATION; - case NS_STYLE_BLEND_COLOR: return gfxContext::OPERATOR_COLOR; - case NS_STYLE_BLEND_LUMINOSITY: return gfxContext::OPERATOR_LUMINOSITY; - default: MOZ_ASSERT(false); return gfxContext::OPERATOR_OVER; - } - - return gfxContext::OPERATOR_OVER; -} - -// nsDisplayMixBlendMode uses layers for rendering -already_AddRefed -nsDisplayMixBlendMode::BuildLayer(nsDisplayListBuilder* aBuilder, - LayerManager* aManager, - const ContainerParameters& aContainerParameters) { - ContainerParameters newContainerParameters = aContainerParameters; - newContainerParameters.mDisableSubpixelAntialiasingInDescendants = true; - - nsRefPtr container = aManager->GetLayerBuilder()-> - BuildContainerLayerFor(aBuilder, aManager, mFrame, this, mList, - newContainerParameters, nullptr); - if (!container) { - return nullptr; - } - - container->SetMixBlendMode(GetGFXBlendMode(mFrame->StyleDisplay()->mMixBlendMode)); - - return container.forget(); -} - -bool nsDisplayMixBlendMode::ComputeVisibility(nsDisplayListBuilder* aBuilder, - nsRegion* aVisibleRegion, - const nsRect& aAllowVisibleRegionExpansion) { - // Our children are need their backdrop so we should not allow them to subtract - // area from aVisibleRegion. We do need to find out what is visible under - // our children in the temporary compositing buffer, because if our children - // paint our entire bounds opaquely then we don't need an alpha channel in - // the temporary compositing buffer. - nsRect bounds = GetClippedBounds(aBuilder); - nsRegion visibleUnderChildren; - visibleUnderChildren.And(*aVisibleRegion, bounds); - nsRect allowExpansion = bounds.Intersect(aAllowVisibleRegionExpansion); - return - nsDisplayWrapList::ComputeVisibility(aBuilder, &visibleUnderChildren, - allowExpansion); -} - -bool nsDisplayMixBlendMode::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) { - if (aItem->GetType() != TYPE_MIX_BLEND_MODE) - return false; - // items for the same content element should be merged into a single - // compositing group - // aItem->GetUnderlyingFrame() returns non-null because it's nsDisplayOpacity - if (aItem->Frame()->GetContent() != mFrame->GetContent()) - return false; - if (aItem->GetClip() != GetClip()) - return false; - MergeFromTrackingMergedFrames(static_cast(aItem)); - return true; -} - -nsDisplayBlendContainer::nsDisplayBlendContainer(nsDisplayListBuilder* aBuilder, - nsIFrame* aFrame, nsDisplayList* aList, - uint32_t aFlags) - : nsDisplayWrapList(aBuilder, aFrame, aList) { - MOZ_COUNT_CTOR(nsDisplayBlendContainer); -} - -#ifdef NS_BUILD_REFCNT_LOGGING -nsDisplayBlendContainer::~nsDisplayBlendContainer() { - MOZ_COUNT_DTOR(nsDisplayBlendContainer); -} -#endif - -// nsDisplayBlendContainer uses layers for rendering -already_AddRefed -nsDisplayBlendContainer::BuildLayer(nsDisplayListBuilder* aBuilder, - LayerManager* aManager, - const ContainerParameters& aContainerParameters) { - nsRefPtr container = aManager->GetLayerBuilder()-> - BuildContainerLayerFor(aBuilder, aManager, mFrame, this, mList, - aContainerParameters, nullptr); - if (!container) { - return nullptr; - } - - container->SetForceIsolatedGroup(true); - return container.forget(); -} - -bool nsDisplayBlendContainer::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) { - if (aItem->GetType() != TYPE_BLEND_CONTAINER) - return false; - // items for the same content element should be merged into a single - // compositing group - // aItem->GetUnderlyingFrame() returns non-null because it's nsDisplayOpacity - if (aItem->Frame()->GetContent() != mFrame->GetContent()) - return false; - if (aItem->GetClip() != GetClip()) - return false; - MergeFromTrackingMergedFrames(static_cast(aItem)); - return true; -} - nsDisplayOwnLayer::nsDisplayOwnLayer(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList, uint32_t aFlags) diff --git a/layout/base/nsDisplayList.h b/layout/base/nsDisplayList.h index 5f20cc076a05..c5d41a2b46f6 100644 --- a/layout/base/nsDisplayList.h +++ b/layout/base/nsDisplayList.h @@ -622,14 +622,6 @@ public: void SetContainsPluginItem() { mContainsPluginItem = true; } bool ContainsPluginItem() { return mContainsPluginItem; } - /** - * mContainsBlendMode is true if we processed a display item that - * has a blend mode attached. We do this so we can insert a - * nsDisplayBlendContainer in the parent stacking context. - */ - void SetContainsBlendMode(bool aContainsBlendMode) { mContainsBlendMode = aContainsBlendMode; } - bool ContainsBlendMode() const { return mContainsBlendMode; } - DisplayListClipState& ClipState() { return mClipState; } private: @@ -688,7 +680,6 @@ private: bool mIsInFixedPosition; bool mIsCompositingCheap; bool mContainsPluginItem; - bool mContainsBlendMode; }; class nsDisplayItem; @@ -2507,59 +2498,6 @@ public: bool CanUseAsyncAnimations(nsDisplayListBuilder* aBuilder) MOZ_OVERRIDE; }; -class nsDisplayMixBlendMode : public nsDisplayWrapList { -public: - nsDisplayMixBlendMode(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, - nsDisplayList* aList, uint32_t aFlags = 0); -#ifdef NS_BUILD_REFCNT_LOGGING - virtual ~nsDisplayMixBlendMode(); -#endif - - nsRegion GetOpaqueRegion(nsDisplayListBuilder* aBuilder, bool* aSnap); - - virtual already_AddRefed BuildLayer(nsDisplayListBuilder* aBuilder, - LayerManager* aManager, - const ContainerParameters& aContainerParameters) MOZ_OVERRIDE; - virtual void ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder, - const nsDisplayItemGeometry* aGeometry, - nsRegion* aInvalidRegion) MOZ_OVERRIDE - { - // We don't need to compute an invalidation region since we have LayerTreeInvalidation - } - virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder, - LayerManager* aManager, - const ContainerParameters& aParameters) MOZ_OVERRIDE - { - return mozilla::LAYER_INACTIVE; - } - virtual bool ComputeVisibility(nsDisplayListBuilder* aBuilder, - nsRegion* aVisibleRegion, - const nsRect& aAllowVisibleRegionExpansion) MOZ_OVERRIDE; - virtual bool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) MOZ_OVERRIDE; - NS_DISPLAY_DECL_NAME("MixBlendMode", TYPE_MIX_BLEND_MODE) -}; - -class nsDisplayBlendContainer : public nsDisplayWrapList { -public: - nsDisplayBlendContainer(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, - nsDisplayList* aList, uint32_t aFlags = 0); -#ifdef NS_BUILD_REFCNT_LOGGING - virtual ~nsDisplayBlendContainer(); -#endif - - virtual already_AddRefed BuildLayer(nsDisplayListBuilder* aBuilder, - LayerManager* aManager, - const ContainerParameters& aContainerParameters) MOZ_OVERRIDE; - virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder, - LayerManager* aManager, - const ContainerParameters& aParameters) MOZ_OVERRIDE - { - return mozilla::LAYER_INACTIVE; - } - virtual bool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) MOZ_OVERRIDE; - NS_DISPLAY_DECL_NAME("BlendContainer", TYPE_BLEND_CONTAINER) -}; - /** * A display item that has no purpose but to ensure its contents get * their own layer. diff --git a/layout/generic/nsFrame.cpp b/layout/generic/nsFrame.cpp index b6f4739b0876..6abe07791436 100644 --- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -1758,21 +1758,6 @@ WrapPreserve3DList(nsIFrame* aFrame, nsDisplayListBuilder* aBuilder, nsDisplayLi return rv; } -class AutoSaveRestoreBlendMode -{ - nsDisplayListBuilder& mBuilder; - bool AutoResetContainsBlendMode; -public: - AutoSaveRestoreBlendMode(nsDisplayListBuilder& aBuilder) - : mBuilder(aBuilder), - AutoResetContainsBlendMode(aBuilder.ContainsBlendMode()) { - } - - ~AutoSaveRestoreBlendMode() { - mBuilder.SetContainsBlendMode(AutoResetContainsBlendMode); - } -}; - void nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, const nsRect& aDirtyRect, @@ -1801,12 +1786,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, bool inTransform = aBuilder->IsInTransform(); bool isTransformed = IsTransformed(); - // reset blend mode so we can keep track if this stacking context needs have - // a nsDisplayBlendContainer. Set the blend mode back when the routine exits - // so we keep track if the parent stacking context needs a container too. - AutoSaveRestoreBlendMode autoRestoreBlendMode(*aBuilder); - aBuilder->SetContainsBlendMode(false); - if (isTransformed) { if (aBuilder->IsForPainting() && nsDisplayTransform::ShouldPrerenderTransformedContent(aBuilder, this)) { @@ -1839,7 +1818,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, } bool useOpacity = HasOpacity() && !nsSVGUtils::CanOptimizeOpacity(this); - bool useBlendMode = disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL; bool usingSVGEffects = nsSVGIntegrationUtils::UsingEffectsForFrame(this); bool useStickyPosition = disp->mPosition == NS_STYLE_POSITION_STICKY && IsScrollFrameActive(nsLayoutUtils::GetNearestScrollableFrame(GetParent(), @@ -1848,7 +1826,7 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, DisplayListClipState::AutoSaveRestore clipState(aBuilder); - if (isTransformed || useOpacity || useBlendMode || usingSVGEffects || useStickyPosition) { + if (isTransformed || useOpacity || usingSVGEffects || useStickyPosition) { // We don't need to pass ancestor clipping down to our children; // everything goes inside a display item's child list, and the display // item itself will be clipped. @@ -1998,21 +1976,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, } } - /* If there's blending, wrap up the list in a blend-mode item. Note - * that opacity can be applied before blending as the blend color is - * not affected by foreground opacity (only background alpha). - */ - - if (useBlendMode && !resultList.IsEmpty()) { - resultList.AppendNewToTop( - new (aBuilder) nsDisplayMixBlendMode(aBuilder, this, &resultList)); - } - - if (aBuilder->ContainsBlendMode()) { - resultList.AppendNewToTop( - new (aBuilder) nsDisplayBlendContainer(aBuilder, this, &resultList)); - } - aList->AppendToTop(&resultList); } @@ -2143,12 +2106,11 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder, return; // Child is composited if it's transformed, partially transparent, or has - // SVG effects or a blend mode.. + // SVG effects. const nsStyleDisplay* disp = child->StyleDisplay(); const nsStylePosition* pos = child->StylePosition(); bool isVisuallyAtomic = child->HasOpacity() || child->IsTransformed() - || disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL || nsSVGIntegrationUtils::UsingEffectsForFrame(child); bool isPositioned = disp->IsPositioned(child); @@ -2203,9 +2165,6 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder, nsDisplayList list; nsDisplayList extraPositionedDescendants; if (isStackingContext) { - if (disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL) { - aBuilder->SetContainsBlendMode(true); - } // True stacking context. // For stacking contexts, BuildDisplayListForStackingContext handles // clipping and MarkAbsoluteFramesForDisplayList. diff --git a/layout/reftests/css-blending/as-image/black100x100.png b/layout/reftests/css-blending/as-image/black100x100.png deleted file mode 100644 index 061e686c159157b87d2df26950bc1d6997d659f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15438 zcmeI3&u`;I6vwB#7buhq2M{OADLLUhOG*6Zz3-cu&y1g) zgFiexcztX0g-wLe*8X1ei2gds=ZPEi`|{z9oAl?&VDDap&{NMQpAGc+7tbT~>PK$t zBtEg;Fl>KNz>eQ0h4CPu(FmEh#{sraNi4KU*Y#@RZ(n~S3a(QV-_k6_3L2#6?p=iB z_~M{tU!2;yBi^oWnqz||7?2nX<3ZnxjB!m&^BVL#X_iGH4T(={;!e_`aAF+_4L>A; zR?s9{QOiPAFQ}SY-d0}`ii%p2m6EKMB(-QLx}j>q^bqTt^vn#Mj&anyGwqIAHL(}R zfg#JI(Wo#g75uO(tGcesN>MHrB^n_`=U$A*k{8{YB$?%DlE@C-Aa;FENb=&gKa6Xl zm~=Ehrt=yE^Nze|%8pW$$2gGHf+DXHIrdx=48wjpG{=@npA3i>M^vY-)KR3CHJ7gJ zZZKG>jN;uhI)f>ZmCC4f9uWD6ME)?e$?h2)$*om`4|;y=M?HVdyyxzy4rIiy3NjW+mCL-v?LvqcNSY` zj=r0gmH>wlNv^z_IJ@-bwP;>y5>0vqQ#MIas@uuFCXOjDv}VJaE2lDdc>%9Rd6GXT zU*E^5M?BW0F-et1txpp9op^*pveTt|;x8}RNy~)D#muJ(OHT;*B z?P|5}+LzA%XW1s#;9@D9Rq*A~Y0e)ZjE3L$L(6way=2O(nzLSxBw8g$#Jpy058V{ zfUr%Di_HgkIW7Q%ZE{>}KETUy0U&IX<6`pxUXBX@VVfKmn-B1ETmT5$HaRXfAK>M<01&pxak2RTFUJLduuYDO%?EfnE&zmWa$Iaaz{_y~ zAZ(N4V)FrBjtc-`n;aLL5Abqa00`UUxY&Gvm*WCJ*e1ut<^#MO7XZRGIW9II;N`dg z5Vpy2vH1Wm#|40}O(w3*>?K>`(Kl;H^cC8-gP(q+uipyx-jRjS#fu0%`~aapF6r;j z2n`j4etCe9@fkwT`5)i^{tk^b_M1Dc@ejX#yRk*B?;ibrckoR05j|ahy!SMHG5GQ( Y8h(N{zAS(GZW6h_d(iyqwFmG239Kca-T(jq diff --git a/layout/reftests/css-blending/as-image/green100x100.png b/layout/reftests/css-blending/as-image/green100x100.png deleted file mode 100644 index 8cdba4ce099a9fc9c01eb59ba87790f10024fd4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14667 zcmeI3&2Jk;7{(`!5XGn`kU(%*ZB>a%v1ixLCf(KACD z=AFr2e0y`_%?pKB3J9SK>uZfI`suRw`E&H|@vU?7^y9f`t(743{0rT6 zNLooNI*Pg|E$by!Qx~tO3sPB8D_E&uwNg~ehN2s)CJkP4tw19)cH72Q)joZCNSgJ7iK=Mm;8W8ph2q?9}oq+dP@QRIf{~S+?T^Y&DlnJgFaT z_9zu;*eR*8Vk|0pQB|8|#ZVPPQH#p5p(r3puAInW(ZYA_)P9^SW7^3)q3g8|A1lj9 z339lO(GFwZPHUcT?-3jYdnO(=0%cZl#(I#XcHofpMvXROVH$*amIM{jr+4X+yJ$xblE&Mu{z z!|Iy2CLU`YO>5{J*u4L`fq8ylpFKuzp9E(ejXYJRnw=yG+iA~^$;uwB3GR{2Q;vHk zbDNmm;2m##7xLEe%{eL8)0=4yFEyhccEZ>ST~e!Cy(K$)2gs)=Vep894JT2LH;l3dmdOg93de3)0}m0v8t%6bM|91~(SC zxQL)Y;DR)`vB1Se1O);Yq`{2^E-oS{5V#->ZY*$d5kY~#1!-_&fs2a>3Ir}lgBuH6 zTtrYHa6uZ}Sm5F!f&zgH(%{Ad7Z(u}2wac`Hx{_Kh@e2=f;70Xz{N!b1p*hO!Hoqj zE+QxpxF8K~EO2oVL4m*pX>enKi;D;f1TIK}8w*@qL{K1bK^ojx;Nl{J0)Y$C;Kl+M z7ZDT)T#yDgJ`-1A^s_$_(BJy?=#Tmy{PO4_{XwAQtZi8c9bH1`*2f4vI;Nk0AkwDo1aC$7Th21Tzc#7 z!ZY{t;9M&YK3vFxd#~Tkf-Q+^Xv^hKn7DQS#qTp$>;K#Tc|d1)d_0eCU!VK#xAv<( Q{fgFCHyU5PapR+Z0jV$LlmGw# diff --git a/layout/reftests/css-blending/blend-canvas-ref.html b/layout/reftests/css-blending/blend-canvas-ref.html deleted file mode 100644 index fd74b7a28264..000000000000 --- a/layout/reftests/css-blending/blend-canvas-ref.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - -
- -
- diff --git a/layout/reftests/css-blending/blend-canvas.html b/layout/reftests/css-blending/blend-canvas.html deleted file mode 100644 index 4989e35dba7c..000000000000 --- a/layout/reftests/css-blending/blend-canvas.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - -
- -
- diff --git a/layout/reftests/css-blending/blend-constant-background-color-ref.html b/layout/reftests/css-blending/blend-constant-background-color-ref.html deleted file mode 100644 index 4fbe7d3decf6..000000000000 --- a/layout/reftests/css-blending/blend-constant-background-color-ref.html +++ /dev/null @@ -1,22 +0,0 @@ - - - -
-
-
-
- diff --git a/layout/reftests/css-blending/blend-constant-background-color.html b/layout/reftests/css-blending/blend-constant-background-color.html deleted file mode 100644 index e9e3e1c6aa5a..000000000000 --- a/layout/reftests/css-blending/blend-constant-background-color.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -
-
-
-
- diff --git a/layout/reftests/css-blending/blend-difference-stacking-ref.html b/layout/reftests/css-blending/blend-difference-stacking-ref.html deleted file mode 100644 index 3a51098cccde..000000000000 --- a/layout/reftests/css-blending/blend-difference-stacking-ref.html +++ /dev/null @@ -1,20 +0,0 @@ - - - -
-
- diff --git a/layout/reftests/css-blending/blend-difference-stacking.html b/layout/reftests/css-blending/blend-difference-stacking.html deleted file mode 100644 index d4af7006e41f..000000000000 --- a/layout/reftests/css-blending/blend-difference-stacking.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -
-
-
-
-
- diff --git a/layout/reftests/css-blending/blend-gradient-background-color-ref.html b/layout/reftests/css-blending/blend-gradient-background-color-ref.html deleted file mode 100644 index 53b2f6546830..000000000000 --- a/layout/reftests/css-blending/blend-gradient-background-color-ref.html +++ /dev/null @@ -1,22 +0,0 @@ - - - -
-
-
-
- diff --git a/layout/reftests/css-blending/blend-gradient-background-color.html b/layout/reftests/css-blending/blend-gradient-background-color.html deleted file mode 100644 index 10a938cc79cb..000000000000 --- a/layout/reftests/css-blending/blend-gradient-background-color.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -
-
-
-
- diff --git a/layout/reftests/css-blending/blend-image-ref.html b/layout/reftests/css-blending/blend-image-ref.html deleted file mode 100644 index b8a85f236025..000000000000 --- a/layout/reftests/css-blending/blend-image-ref.html +++ /dev/null @@ -1,20 +0,0 @@ - - - -
- -
- \ No newline at end of file diff --git a/layout/reftests/css-blending/blend-image.html b/layout/reftests/css-blending/blend-image.html deleted file mode 100644 index ac0b2c167009..000000000000 --- a/layout/reftests/css-blending/blend-image.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -
- -
- diff --git a/layout/reftests/css-blending/reftest.list b/layout/reftests/css-blending/reftest.list deleted file mode 100644 index 5db2670f073b..000000000000 --- a/layout/reftests/css-blending/reftest.list +++ /dev/null @@ -1,5 +0,0 @@ -pref(layout.css.mix-blend-mode.enabled,true) == blend-canvas.html blend-canvas-ref.html -pref(layout.css.mix-blend-mode.enabled,true) == blend-constant-background-color.html blend-constant-background-color-ref.html -pref(layout.css.mix-blend-mode.enabled,true) == blend-gradient-background-color.html blend-gradient-background-color-ref.html -pref(layout.css.mix-blend-mode.enabled,true) == blend-image.html blend-image-ref.html -pref(layout.css.mix-blend-mode.enabled,true) == blend-difference-stacking.html blend-difference-stacking-ref.html diff --git a/layout/reftests/reftest.list b/layout/reftests/reftest.list index 3396af54a230..c8c21d392d28 100644 --- a/layout/reftests/reftest.list +++ b/layout/reftests/reftest.list @@ -51,9 +51,6 @@ include canvas/reftest.list # css animations include css-animations/reftest.list -# blending/ -skip-if(Android&&AndroidVersion<15) include css-blending/reftest.list - # css calc() tests include css-calc/reftest.list diff --git a/layout/reftests/svg/blend-color-burn-ref.svg b/layout/reftests/svg/blend-color-burn-ref.svg deleted file mode 100644 index 48191f349e54..000000000000 --- a/layout/reftests/svg/blend-color-burn-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-color-burn.svg b/layout/reftests/svg/blend-color-burn.svg deleted file mode 100644 index fef6365b9972..000000000000 --- a/layout/reftests/svg/blend-color-burn.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-color-dodge-ref.svg b/layout/reftests/svg/blend-color-dodge-ref.svg deleted file mode 100644 index 724a4e184bc2..000000000000 --- a/layout/reftests/svg/blend-color-dodge-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-color-dodge.svg b/layout/reftests/svg/blend-color-dodge.svg deleted file mode 100644 index e2bc7471f88d..000000000000 --- a/layout/reftests/svg/blend-color-dodge.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-color-ref.svg b/layout/reftests/svg/blend-color-ref.svg deleted file mode 100644 index 293601561757..000000000000 --- a/layout/reftests/svg/blend-color-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-color.svg b/layout/reftests/svg/blend-color.svg deleted file mode 100644 index e9efe3d3b909..000000000000 --- a/layout/reftests/svg/blend-color.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-darken-ref.svg b/layout/reftests/svg/blend-darken-ref.svg deleted file mode 100644 index d4d16a54bef4..000000000000 --- a/layout/reftests/svg/blend-darken-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-darken.svg b/layout/reftests/svg/blend-darken.svg deleted file mode 100644 index 472366aede17..000000000000 --- a/layout/reftests/svg/blend-darken.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-difference-ref.svg b/layout/reftests/svg/blend-difference-ref.svg deleted file mode 100644 index c04c51e0abac..000000000000 --- a/layout/reftests/svg/blend-difference-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-difference-stacking-ref.html b/layout/reftests/svg/blend-difference-stacking-ref.html deleted file mode 100644 index 5e8b326f75b3..000000000000 --- a/layout/reftests/svg/blend-difference-stacking-ref.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -
- - - -
- - - -
-
- diff --git a/layout/reftests/svg/blend-difference-stacking.html b/layout/reftests/svg/blend-difference-stacking.html deleted file mode 100644 index cca18f8ce8c3..000000000000 --- a/layout/reftests/svg/blend-difference-stacking.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -
- - - -
- - - -
-
- diff --git a/layout/reftests/svg/blend-difference.svg b/layout/reftests/svg/blend-difference.svg deleted file mode 100644 index 9343ab6e1f19..000000000000 --- a/layout/reftests/svg/blend-difference.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-exclusion-ref.svg b/layout/reftests/svg/blend-exclusion-ref.svg deleted file mode 100644 index b4edd89076a0..000000000000 --- a/layout/reftests/svg/blend-exclusion-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-exclusion.svg b/layout/reftests/svg/blend-exclusion.svg deleted file mode 100644 index 0c3dbe6b49ea..000000000000 --- a/layout/reftests/svg/blend-exclusion.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-hard-light-ref.svg b/layout/reftests/svg/blend-hard-light-ref.svg deleted file mode 100644 index 21afb50c38f1..000000000000 --- a/layout/reftests/svg/blend-hard-light-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-hard-light.svg b/layout/reftests/svg/blend-hard-light.svg deleted file mode 100644 index 2cb11ef64b5d..000000000000 --- a/layout/reftests/svg/blend-hard-light.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-hue-ref.svg b/layout/reftests/svg/blend-hue-ref.svg deleted file mode 100644 index 907064b5434d..000000000000 --- a/layout/reftests/svg/blend-hue-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-hue.svg b/layout/reftests/svg/blend-hue.svg deleted file mode 100644 index 79dd51e735ab..000000000000 --- a/layout/reftests/svg/blend-hue.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-layer-blend-ref.svg b/layout/reftests/svg/blend-layer-blend-ref.svg deleted file mode 100644 index 19ec46bc613a..000000000000 --- a/layout/reftests/svg/blend-layer-blend-ref.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-layer-blend.svg b/layout/reftests/svg/blend-layer-blend.svg deleted file mode 100644 index cf869148429b..000000000000 --- a/layout/reftests/svg/blend-layer-blend.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-layer-filter-ref.svg b/layout/reftests/svg/blend-layer-filter-ref.svg deleted file mode 100644 index 76e17985492d..000000000000 --- a/layout/reftests/svg/blend-layer-filter-ref.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/layout/reftests/svg/blend-layer-filter.svg b/layout/reftests/svg/blend-layer-filter.svg deleted file mode 100644 index b74b0f1c9db3..000000000000 --- a/layout/reftests/svg/blend-layer-filter.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-layer-mask-ref.svg b/layout/reftests/svg/blend-layer-mask-ref.svg deleted file mode 100644 index 19ec46bc613a..000000000000 --- a/layout/reftests/svg/blend-layer-mask-ref.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-layer-mask.svg b/layout/reftests/svg/blend-layer-mask.svg deleted file mode 100644 index 8978b7fdc7bd..000000000000 --- a/layout/reftests/svg/blend-layer-mask.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-layer-opacity-ref.svg b/layout/reftests/svg/blend-layer-opacity-ref.svg deleted file mode 100644 index 0b5c8be597cb..000000000000 --- a/layout/reftests/svg/blend-layer-opacity-ref.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-layer-opacity.svg b/layout/reftests/svg/blend-layer-opacity.svg deleted file mode 100644 index a472ef991c91..000000000000 --- a/layout/reftests/svg/blend-layer-opacity.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/layout/reftests/svg/blend-lighten-ref.svg b/layout/reftests/svg/blend-lighten-ref.svg deleted file mode 100644 index 4ec1bf08a06c..000000000000 --- a/layout/reftests/svg/blend-lighten-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-lighten.svg b/layout/reftests/svg/blend-lighten.svg deleted file mode 100644 index f288d9f32ac7..000000000000 --- a/layout/reftests/svg/blend-lighten.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-luminosity-ref.svg b/layout/reftests/svg/blend-luminosity-ref.svg deleted file mode 100644 index 8dc3c2247fd9..000000000000 --- a/layout/reftests/svg/blend-luminosity-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-luminosity.svg b/layout/reftests/svg/blend-luminosity.svg deleted file mode 100644 index 7d9f1a55c48f..000000000000 --- a/layout/reftests/svg/blend-luminosity.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-multiply-alpha-ref.svg b/layout/reftests/svg/blend-multiply-alpha-ref.svg deleted file mode 100644 index 468fd9d91e77..000000000000 --- a/layout/reftests/svg/blend-multiply-alpha-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-multiply-alpha.svg b/layout/reftests/svg/blend-multiply-alpha.svg deleted file mode 100644 index fd707e223688..000000000000 --- a/layout/reftests/svg/blend-multiply-alpha.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-multiply-ref.svg b/layout/reftests/svg/blend-multiply-ref.svg deleted file mode 100644 index 0addf25093c8..000000000000 --- a/layout/reftests/svg/blend-multiply-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-multiply.svg b/layout/reftests/svg/blend-multiply.svg deleted file mode 100644 index 2724f94ee016..000000000000 --- a/layout/reftests/svg/blend-multiply.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-normal-ref.svg b/layout/reftests/svg/blend-normal-ref.svg deleted file mode 100644 index 8b86b744877e..000000000000 --- a/layout/reftests/svg/blend-normal-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-normal.svg b/layout/reftests/svg/blend-normal.svg deleted file mode 100644 index 3878c6c4c47f..000000000000 --- a/layout/reftests/svg/blend-normal.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/layout/reftests/svg/blend-overlay-ref.svg b/layout/reftests/svg/blend-overlay-ref.svg deleted file mode 100644 index 320697f71061..000000000000 --- a/layout/reftests/svg/blend-overlay-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-overlay.svg b/layout/reftests/svg/blend-overlay.svg deleted file mode 100644 index 114d6e3da098..000000000000 --- a/layout/reftests/svg/blend-overlay.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/layout/reftests/svg/blend-saturation-ref.svg b/layout/reftests/svg/blend-saturation-ref.svg deleted file mode 100644 index a8fb06a5a86b..000000000000 --- a/layout/reftests/svg/blend-saturation-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-saturation.svg b/layout/reftests/svg/blend-saturation.svg deleted file mode 100644 index 88bd526480aa..000000000000 --- a/layout/reftests/svg/blend-saturation.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/layout/reftests/svg/blend-screen-ref.svg b/layout/reftests/svg/blend-screen-ref.svg deleted file mode 100644 index d99af71dc90d..000000000000 --- a/layout/reftests/svg/blend-screen-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/layout/reftests/svg/blend-screen.svg b/layout/reftests/svg/blend-screen.svg deleted file mode 100644 index 79ce563a5a6e..000000000000 --- a/layout/reftests/svg/blend-screen.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/layout/reftests/svg/blend-soft-light-ref.svg b/layout/reftests/svg/blend-soft-light-ref.svg deleted file mode 100644 index 485314e389cb..000000000000 --- a/layout/reftests/svg/blend-soft-light-ref.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/layout/reftests/svg/blend-soft-light.svg b/layout/reftests/svg/blend-soft-light.svg deleted file mode 100644 index a0f42a4f4fe8..000000000000 --- a/layout/reftests/svg/blend-soft-light.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list index 9fa5ab866a09..d5897b09282b 100644 --- a/layout/reftests/svg/reftest.list +++ b/layout/reftests/svg/reftest.list @@ -367,26 +367,3 @@ skip-if(B2G) == tspan-xy-anchor-end-01.svg tspan-xy-anchor-end-ref.svg # bug 773 == svg-effects-area-zoomed-out.xhtml svg-effects-area-zoomed-out-ref.xhtml == href-attr-change-restyles.svg href-attr-change-restyles-ref.svg == mask-img.html mask-img-ref.html - -skip-if(d2d||(Android&&AndroidVersion<15)) pref(layout.css.mix-blend-mode.enabled,true) == blend-color-burn.svg blend-color-burn-ref.svg -skip-if(d2d||(Android&&AndroidVersion<15)) pref(layout.css.mix-blend-mode.enabled,true) == blend-color-dodge.svg blend-color-dodge-ref.svg -# pref(layout.css.mix-blend-mode.enabled,true) == blend-color.svg blend-color-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-darken.svg blend-darken-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-difference.svg blend-difference-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-exclusion.svg blend-exclusion-ref.svg -# pref(layout.css.mix-blend-mode.enabled,true) == blend-hard-light.svg blend-hard-light-ref.svg -# pref(layout.css.mix-blend-mode.enabled,true) == blend-hue.svg blend-hue-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-blend.svg blend-layer-blend-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-filter.svg blend-layer-filter-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-mask.svg blend-layer-mask-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-opacity.svg blend-layer-opacity-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-lighten.svg blend-lighten-ref.svg -# pref(layout.css.mix-blend-mode.enabled,true) == blend-luminosity.svg blend-luminosity-ref.svg -#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-multiply-alpha.svg blend-multiply-alpha-ref.svg -skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-multiply.svg blend-multiply-ref.svg -pref(layout.css.mix-blend-mode.enabled,true) == blend-normal.svg blend-normal-ref.svg -#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-overlay.svg blend-overlay-ref.svg -#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-saturation.svg blend-saturation-ref.svg -#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-screen.svg blend-screen-ref.svg -# skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-soft-light.svg blend-soft-light-ref.svg -skip-if(Android) pref(layout.css.mix-blend-mode.enabled,true) == blend-difference-stacking.html blend-difference-stacking-ref.html diff --git a/layout/svg/nsSVGImageFrame.cpp b/layout/svg/nsSVGImageFrame.cpp index e63ab4a8a5d2..4f5a569fd146 100644 --- a/layout/svg/nsSVGImageFrame.cpp +++ b/layout/svg/nsSVGImageFrame.cpp @@ -342,7 +342,7 @@ nsSVGImageFrame::PaintSVG(nsRenderingContext *aContext, opacity = StyleDisplay()->mOpacity; } - if (opacity != 1.0f || StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) { + if (opacity != 1.0f) { ctx->PushGroup(gfxASurface::CONTENT_COLOR_ALPHA); } @@ -396,7 +396,7 @@ nsSVGImageFrame::PaintSVG(nsRenderingContext *aContext, drawFlags); } - if (opacity != 1.0f || StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) { + if (opacity != 1.0f) { ctx->PopGroupToSource(); ctx->SetOperator(gfxContext::OPERATOR_OVER); ctx->Paint(opacity); diff --git a/layout/svg/nsSVGIntegrationUtils.cpp b/layout/svg/nsSVGIntegrationUtils.cpp index 9be5d7e939ea..fe35839011ba 100644 --- a/layout/svg/nsSVGIntegrationUtils.cpp +++ b/layout/svg/nsSVGIntegrationUtils.cpp @@ -494,8 +494,7 @@ nsSVGIntegrationUtils::PaintFramesWithEffects(nsRenderingContext* aCtx, bool complexEffects = false; /* Check if we need to do additional operations on this child's * rendering, which necessitates rendering into another surface. */ - if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip) - || aFrame->StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) { + if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)) { complexEffects = true; gfx->Save(); aCtx->IntersectClip(aFrame->GetVisualOverflowRectRelativeToSelf() + diff --git a/layout/svg/nsSVGUtils.cpp b/layout/svg/nsSVGUtils.cpp index 084cc23ada57..a77796fcaff3 100644 --- a/layout/svg/nsSVGUtils.cpp +++ b/layout/svg/nsSVGUtils.cpp @@ -846,8 +846,7 @@ nsSVGUtils::PaintFrameWithEffects(nsRenderingContext *aContext, /* Check if we need to do additional operations on this child's * rendering, which necessitates rendering into another surface. */ - if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip) - || aFrame->StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) { + if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)) { complexEffects = true; gfx->Save(); if (!(aFrame->GetStateBits() & NS_FRAME_IS_NONDISPLAY)) {