提交 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 ...@@ -845,7 +845,7 @@ void RenderBox::paintLayerContents(GraphicsContext* context, const LayerPainting
layer()->clipToRect(localPaintingInfo, context, contentRect); layer()->clipToRect(localPaintingInfo, context, contentRect);
FilterEffectRendererHelper filterPainter(layer()->filterRenderer() && layer()->paintsWithFilters()); FilterEffectRendererHelper filterPainter(layer()->filterRenderer() && hasFilter());
if (filterPainter.haveFilterEffect()) { if (filterPainter.haveFilterEffect()) {
ASSERT(layer()->filterInfo()); ASSERT(layer()->filterInfo());
......
...@@ -107,20 +107,6 @@ String RenderLayer::debugName() const ...@@ -107,20 +107,6 @@ String RenderLayer::debugName() const
return renderer()->debugName(); 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 LayoutSize RenderLayer::subpixelAccumulation() const
{ {
return m_subpixelAccumulation; return m_subpixelAccumulation;
...@@ -730,25 +716,6 @@ bool RenderLayer::shouldBeSelfPaintingLayer() const ...@@ -730,25 +716,6 @@ bool RenderLayer::shouldBeSelfPaintingLayer() const
return m_layerType == NormalLayer; 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 bool RenderLayer::hasBoxDecorationsOrBackground() const
{ {
return renderer()->style()->hasBoxDecorations() || renderer()->style()->hasBackground(); return renderer()->style()->hasBoxDecorations() || renderer()->style()->hasBackground();
...@@ -759,49 +726,11 @@ bool RenderLayer::hasVisibleBoxDecorations() const ...@@ -759,49 +726,11 @@ bool RenderLayer::hasVisibleBoxDecorations() const
return hasBoxDecorationsOrBackground(); 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) void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle)
{ {
if (!newStyle->hasFilter() && (!oldStyle || !oldStyle->hasFilter())) if (!newStyle->hasFilter() && (!oldStyle || !oldStyle->hasFilter()))
return; 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()) { if (!hasFilter()) {
removeFilterInfoIfNeeded(); removeFilterInfoIfNeeded();
return; return;
...@@ -811,14 +740,11 @@ void RenderLayer::updateOrRemoveFilterClients() ...@@ -811,14 +740,11 @@ void RenderLayer::updateOrRemoveFilterClients()
ensureFilterInfo()->updateReferenceFilterClients(renderer()->style()->filter()); ensureFilterInfo()->updateReferenceFilterClients(renderer()->style()->filter());
else if (hasFilterInfo()) else if (hasFilterInfo())
filterInfo()->removeReferenceFilterClients(); filterInfo()->removeReferenceFilterClients();
}
void RenderLayer::updateOrRemoveFilterEffectRenderer()
{
// FilterEffectRenderer is only used to render the filters in software mode, // FilterEffectRenderer is only used to render the filters in software mode,
// so we always need to run updateOrRemoveFilterEffectRenderer after the composited // so we always need to run updateOrRemoveFilterEffectRenderer after the composited
// mode might have changed for this layer. // 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 // Don't delete the whole filter info here, because we might use it
// for loading CSS shader files. // for loading CSS shader files.
if (RenderLayerFilterInfo* filterInfo = this->filterInfo()) if (RenderLayerFilterInfo* filterInfo = this->filterInfo())
...@@ -838,8 +764,21 @@ void RenderLayer::updateOrRemoveFilterEffectRenderer() ...@@ -838,8 +764,21 @@ void RenderLayer::updateOrRemoveFilterEffectRenderer()
// If the filter fails to build, remove it from the layer. It will still attempt to // 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. // 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); 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 } // namespace blink
...@@ -124,8 +124,6 @@ public: ...@@ -124,8 +124,6 @@ public:
bool hasBoxDecorationsOrBackground() const; bool hasBoxDecorationsOrBackground() const;
bool hasVisibleBoxDecorations() 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. // True if this layer container renderers that paint.
bool hasNonEmptyChildRenderers() const; bool hasNonEmptyChildRenderers() const;
...@@ -181,9 +179,6 @@ public: ...@@ -181,9 +179,6 @@ public:
// Only safe to call from RenderBox::destroyLayer() // Only safe to call from RenderBox::destroyLayer()
void operator delete(void*); void operator delete(void*);
FilterOperations computeFilterOperations(const RenderStyle*);
bool paintsWithFilters() const;
bool requiresFullLayerImageForFilters() const;
FilterEffectRenderer* filterRenderer() const FilterEffectRenderer* filterRenderer() const
{ {
RenderLayerFilterInfo* filterInfo = this->filterInfo(); RenderLayerFilterInfo* filterInfo = this->filterInfo();
...@@ -213,8 +208,6 @@ public: ...@@ -213,8 +208,6 @@ public:
return isRootLayer() || layerRenderer->isPositioned() || hasTransform(); return isRootLayer() || layerRenderer->isPositioned() || hasTransform();
} }
void updateOrRemoveFilterEffectRenderer();
void clipToRect(const LayerPaintingInfo&, GraphicsContext*, const ClipRect&, BorderRadiusClippingRule = IncludeSelfForBorderRadius); void clipToRect(const LayerPaintingInfo&, GraphicsContext*, const ClipRect&, BorderRadiusClippingRule = IncludeSelfForBorderRadius);
void restoreClip(GraphicsContext*, const LayoutRect& paintDirtyRect, const ClipRect&); void restoreClip(GraphicsContext*, const LayoutRect& paintDirtyRect, const ClipRect&);
...@@ -239,8 +232,6 @@ private: ...@@ -239,8 +232,6 @@ private:
void dirty3DTransformedDescendantStatus(); void dirty3DTransformedDescendantStatus();
void updateOrRemoveFilterClients();
LayerType m_layerType; LayerType m_layerType;
// Self-painting layer is an optimization where we avoid the heavy RenderLayer painting // 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.
先完成此消息的编辑!
想要评论请 注册