Index: third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
diff --git a/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
index afe1f47d2806ad0f2cfc5ec473d4156833d8c7d5..9b7b414fdb6fa64ca8869bed5aee478d252f2402 100644 |
--- a/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
+++ b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
@@ -767,6 +767,11 @@ void PaintLayerCompositor::updateDirectCompositingReasons(PaintLayer* layer) |
bool PaintLayerCompositor::canBeComposited(const PaintLayer* layer) const |
{ |
+ FrameView* frameView = layer->layoutObject()->frameView(); |
+ // Elements within an invisible frame must not be composited because they are not drawn. |
+ if (frameView && !frameView->isVisible()) |
+ return false; |
+ |
const bool hasCompositorAnimation = m_compositingReasonFinder.requiresCompositingForAnimation(*layer->layoutObject()->style()); |
return m_hasAcceleratedCompositing && (hasCompositorAnimation || !layer->subtreeIsInvisible()) && layer->isSelfPaintingLayer() && !layer->layoutObject()->isLayoutFlowThread(); |
} |