Index: third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp b/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp |
index aadab753778f42c2baff9892774d049ea66e2da3..33249f530511cd13314015391c29b3a02c4a6118 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp |
@@ -246,6 +246,8 @@ PaintLayerPainter::PaintResult PaintLayerPainter::paintLayerContents( |
paintFlags & PaintLayerPaintingCompositingForegroundPhase; |
bool isPaintingCompositedBackground = |
paintFlags & PaintLayerPaintingCompositingBackgroundPhase; |
+ bool isPaintingCompositedDecoration = |
+ paintFlags & PaintLayerPaintingCompositingDecorationPhase; |
bool isPaintingOverflowContents = |
paintFlags & PaintLayerPaintingOverflowContents; |
// Outline always needs to be painted even if we have no visible content. |
@@ -254,11 +256,14 @@ PaintLayerPainter::PaintResult PaintLayerPainter::paintLayerContents( |
// the scrolled content. When not composited scrolling, the outline is painted |
// in the foreground phase. Since scrolled contents are moved by paint |
// invalidation in this case, the outline won't get 'dragged along'. |
+ // |
+ // The outline needs to be painted in the decoration phase rather than the |
+ // background phase. |
bool shouldPaintSelfOutline = |
isSelfPaintingLayer && !isPaintingOverlayScrollbars && |
- ((isPaintingScrollingContent && isPaintingCompositedBackground) || |
- (!isPaintingScrollingContent && isPaintingCompositedForeground)) && |
+ (isPaintingCompositedDecoration || !isPaintingScrollingContent) && |
m_paintLayer.layoutObject()->styleRef().hasOutline(); |
+ |
bool shouldPaintContent = m_paintLayer.hasVisibleContent() && |
isSelfPaintingLayer && !isPaintingOverlayScrollbars; |