提交 ba092f1c 编写于 作者: O Ojan Vafai

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
上级 57f15eb8
......@@ -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());
......
......@@ -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:
// <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 @@ 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
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册