Remove dead code from RenderLayer and inline filter methods. Inline a couple methods that are only called from one place and remove a bunch of dead code. R=abarth@chromium.org Review URL: https://codereview.chromium.org/961553003
diff --git a/sky/engine/core/rendering/RenderBox.cpp b/sky/engine/core/rendering/RenderBox.cpp index 4d4a814..c47ab38 100644 --- a/sky/engine/core/rendering/RenderBox.cpp +++ b/sky/engine/core/rendering/RenderBox.cpp
@@ -845,7 +845,7 @@ 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/sky/engine/core/rendering/RenderLayer.cpp b/sky/engine/core/rendering/RenderLayer.cpp index aaf7bd0..0414075 100644 --- a/sky/engine/core/rendering/RenderLayer.cpp +++ b/sky/engine/core/rendering/RenderLayer.cpp
@@ -107,20 +107,6 @@ 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 @@ return m_layerType == NormalLayer; } -bool RenderLayer::hasNonEmptyChildRenderers() const -{ - // Some HTML can cause whitespace text nodes to have renderers, like: - // <div> - // <img src=...> - // </div> - // 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 @@ 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 @@ 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 @@ // 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/sky/engine/core/rendering/RenderLayer.h b/sky/engine/core/rendering/RenderLayer.h index 76ebf52..3916819 100644 --- a/sky/engine/core/rendering/RenderLayer.h +++ b/sky/engine/core/rendering/RenderLayer.h
@@ -124,8 +124,6 @@ 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 @@ // 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 @@ 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 @@ void dirty3DTransformedDescendantStatus(); - void updateOrRemoveFilterClients(); - LayerType m_layerType; // Self-painting layer is an optimization where we avoid the heavy RenderLayer painting