diff --git a/engine/core/rendering/RenderBox.cpp b/engine/core/rendering/RenderBox.cpp
index 4d4a814a9b0154c1612437f15f66275769d55bb5..c47ab38c41a4758002a0506656a1a094f1d3c0d7 100644
--- a/engine/core/rendering/RenderBox.cpp
+++ b/engine/core/rendering/RenderBox.cpp
@@ -845,7 +845,7 @@ void RenderBox::paintLayerContents(GraphicsContext* context, const LayerPainting
layer()->clipToRect(localPaintingInfo, context, contentRect);
- FilterEffectRendererHelper filterPainter(layer()->filterRenderer() && layer()->paintsWithFilters());
+ FilterEffectRendererHelper filterPainter(layer()->filterRenderer() && hasFilter());
if (filterPainter.haveFilterEffect()) {
ASSERT(layer()->filterInfo());
diff --git a/engine/core/rendering/RenderLayer.cpp b/engine/core/rendering/RenderLayer.cpp
index aaf7bd00e05cda339d155fd4bd6860fc8e97929b..041407529dd008d2eec2607e5e91ce57edc292d2 100644
--- a/engine/core/rendering/RenderLayer.cpp
+++ b/engine/core/rendering/RenderLayer.cpp
@@ -107,20 +107,6 @@ String RenderLayer::debugName() const
return renderer()->debugName();
}
-bool RenderLayer::paintsWithFilters() const
-{
- // FIXME(sky): Remove
- return renderer()->hasFilter();
-}
-
-bool RenderLayer::requiresFullLayerImageForFilters() const
-{
- if (!paintsWithFilters())
- return false;
- FilterEffectRenderer* filter = filterRenderer();
- return filter ? filter->hasFilterThatMovesPixels() : false;
-}
-
LayoutSize RenderLayer::subpixelAccumulation() const
{
return m_subpixelAccumulation;
@@ -730,25 +716,6 @@ bool RenderLayer::shouldBeSelfPaintingLayer() const
return m_layerType == NormalLayer;
}
-bool RenderLayer::hasNonEmptyChildRenderers() const
-{
- // Some HTML can cause whitespace text nodes to have renderers, like:
- //
- //
- //
- // so test for 0x0 RenderTexts here
- for (RenderObject* child = renderer()->slowFirstChild(); child; child = child->nextSibling()) {
- if (!child->hasLayer()) {
- if (child->isRenderInline() || !child->isBox())
- return true;
-
- if (toRenderBox(child)->width() > 0 || toRenderBox(child)->height() > 0)
- return true;
- }
- }
- return false;
-}
-
bool RenderLayer::hasBoxDecorationsOrBackground() const
{
return renderer()->style()->hasBoxDecorations() || renderer()->style()->hasBackground();
@@ -759,49 +726,11 @@ bool RenderLayer::hasVisibleBoxDecorations() const
return hasBoxDecorationsOrBackground();
}
-bool RenderLayer::isVisuallyNonEmpty() const
-{
- if (hasNonEmptyChildRenderers())
- return true;
-
- if (renderer()->isReplaced())
- return true;
-
- if (hasVisibleBoxDecorations())
- return true;
-
- return false;
-}
-
void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle)
{
if (!newStyle->hasFilter() && (!oldStyle || !oldStyle->hasFilter()))
return;
- updateOrRemoveFilterClients();
- updateOrRemoveFilterEffectRenderer();
-}
-
-void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle)
-{
- m_stackingNode->updateIsNormalFlowOnly();
- m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle);
-
- // Overlay scrollbars can make this layer self-painting so we need
- // to recompute the bit once scrollbars have been updated.
- m_isSelfPaintingLayer = shouldBeSelfPaintingLayer();
-
- updateTransform(oldStyle, renderer()->style());
- updateFilters(oldStyle, renderer()->style());
-}
-
-FilterOperations RenderLayer::computeFilterOperations(const RenderStyle* style)
-{
- return style->filter();
-}
-
-void RenderLayer::updateOrRemoveFilterClients()
-{
if (!hasFilter()) {
removeFilterInfoIfNeeded();
return;
@@ -811,14 +740,11 @@ void RenderLayer::updateOrRemoveFilterClients()
ensureFilterInfo()->updateReferenceFilterClients(renderer()->style()->filter());
else if (hasFilterInfo())
filterInfo()->removeReferenceFilterClients();
-}
-void RenderLayer::updateOrRemoveFilterEffectRenderer()
-{
// FilterEffectRenderer is only used to render the filters in software mode,
// so we always need to run updateOrRemoveFilterEffectRenderer after the composited
// mode might have changed for this layer.
- if (!paintsWithFilters()) {
+ if (!renderer()->hasFilter()) {
// Don't delete the whole filter info here, because we might use it
// for loading CSS shader files.
if (RenderLayerFilterInfo* filterInfo = this->filterInfo())
@@ -838,8 +764,21 @@ void RenderLayer::updateOrRemoveFilterEffectRenderer()
// If the filter fails to build, remove it from the layer. It will still attempt to
// go through regular processing (e.g. compositing), but never apply anything.
- if (!filterInfo->renderer()->build(renderer(), computeFilterOperations(renderer()->style())))
+ if (!filterInfo->renderer()->build(renderer(), renderer()->style()->filter()))
filterInfo->setRenderer(nullptr);
}
+void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle)
+{
+ m_stackingNode->updateIsNormalFlowOnly();
+ m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle);
+
+ // Overlay scrollbars can make this layer self-painting so we need
+ // to recompute the bit once scrollbars have been updated.
+ m_isSelfPaintingLayer = shouldBeSelfPaintingLayer();
+
+ updateTransform(oldStyle, renderer()->style());
+ updateFilters(oldStyle, renderer()->style());
+}
+
} // namespace blink
diff --git a/engine/core/rendering/RenderLayer.h b/engine/core/rendering/RenderLayer.h
index 76ebf529b6025d718bafe604d95b1be5b1c494f8..3916819a759c4c4d883db2aabcd16060df42dc3d 100644
--- a/engine/core/rendering/RenderLayer.h
+++ b/engine/core/rendering/RenderLayer.h
@@ -124,8 +124,6 @@ public:
bool hasBoxDecorationsOrBackground() const;
bool hasVisibleBoxDecorations() const;
- // Returns true if this layer has visible content (ignoring any child layers).
- bool isVisuallyNonEmpty() const;
// True if this layer container renderers that paint.
bool hasNonEmptyChildRenderers() const;
@@ -181,9 +179,6 @@ public:
// Only safe to call from RenderBox::destroyLayer()
void operator delete(void*);
- FilterOperations computeFilterOperations(const RenderStyle*);
- bool paintsWithFilters() const;
- bool requiresFullLayerImageForFilters() const;
FilterEffectRenderer* filterRenderer() const
{
RenderLayerFilterInfo* filterInfo = this->filterInfo();
@@ -213,8 +208,6 @@ public:
return isRootLayer() || layerRenderer->isPositioned() || hasTransform();
}
- void updateOrRemoveFilterEffectRenderer();
-
void clipToRect(const LayerPaintingInfo&, GraphicsContext*, const ClipRect&, BorderRadiusClippingRule = IncludeSelfForBorderRadius);
void restoreClip(GraphicsContext*, const LayoutRect& paintDirtyRect, const ClipRect&);
@@ -239,8 +232,6 @@ private:
void dirty3DTransformedDescendantStatus();
- void updateOrRemoveFilterClients();
-
LayerType m_layerType;
// Self-painting layer is an optimization where we avoid the heavy RenderLayer painting