Index: Source/core/rendering/RenderLayerRepainter.cpp |
diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp |
index 7ffb9bfbf6b5bdac0c9f1e3ef4e547aedd8142a2..abe3095297b245031d9ba64d08b9412d1917afa1 100644 |
--- a/Source/core/rendering/RenderLayerRepainter.cpp |
+++ b/Source/core/rendering/RenderLayerRepainter.cpp |
@@ -110,6 +110,22 @@ void RenderLayerRepainter::setBackingNeedsRepaintInRect(const LayoutRect& r) |
// https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here, |
// so assert but check that the layer is composited. |
ASSERT(m_renderer.compositingState() != NotComposited); |
+ if (m_renderer.compositingState() == NotComposited) { |
+ // If we're trying to repaint the placeholder document layer, propagate the |
+ // repaint to the native view system. |
+ LayoutRect absRect(r); |
+ LayoutPoint delta; |
+ m_renderer.layer()->convertToLayerCoords(m_renderer.layer()->root(), delta); |
+ absRect.moveBy(delta); |
+ |
+ if (absRect.isEmpty()) |
+ return; |
+ |
+ RenderView* view = m_renderer.view(); |
+ if (view) |
+ view->invalidatePaintForRectangle(absRect); |
+ return; |
+ } |
// FIXME: generalize accessors to backing GraphicsLayers so that this code is squasphing-agnostic. |
if (m_renderer.layer()->groupedMapping()) { |
LayoutRect repaintRect = r; |