| Index: third_party/WebKit/Source/core/paint/TableRowPainter.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/paint/TableRowPainter.cpp b/third_party/WebKit/Source/core/paint/TableRowPainter.cpp
 | 
| index e0cdc9269dcca5ff5c4188302bc79d1b68904fd0..635fdfee9ec6a68e7056a4e3102740fb5eae6264 100644
 | 
| --- a/third_party/WebKit/Source/core/paint/TableRowPainter.cpp
 | 
| +++ b/third_party/WebKit/Source/core/paint/TableRowPainter.cpp
 | 
| @@ -6,6 +6,8 @@
 | 
|  
 | 
|  #include "core/layout/LayoutTableCell.h"
 | 
|  #include "core/layout/LayoutTableRow.h"
 | 
| +#include "core/paint/BoxPainter.h"
 | 
| +#include "core/paint/LayoutObjectDrawingRecorder.h"
 | 
|  #include "core/paint/ObjectPainter.h"
 | 
|  #include "core/paint/PaintInfo.h"
 | 
|  #include "core/paint/TableCellPainter.h"
 | 
| @@ -23,10 +25,14 @@ void TableRowPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& paint
 | 
|          return;
 | 
|  
 | 
|      PaintInfo paintInfoForCells = paintInfo.forDescendants();
 | 
| -    if (shouldPaintSelfBlockBackground(paintInfo.phase) && m_layoutTableRow.hasBackground()) {
 | 
| -        // Paint row background of behind the cells.
 | 
| -        for (LayoutTableCell* cell = m_layoutTableRow.firstCell(); cell; cell = cell->nextCell())
 | 
| -            TableCellPainter(*cell).paintContainerBackgroundBehindCell(paintInfoForCells, paintOffset, m_layoutTableRow, DisplayItem::TableCellBackgroundFromRow);
 | 
| +    if (shouldPaintSelfBlockBackground(paintInfo.phase)) {
 | 
| +        paintBoxShadow(paintInfo, paintOffset, Normal);
 | 
| +        if (m_layoutTableRow.hasBackground()) {
 | 
| +            // Paint row background of behind the cells.
 | 
| +            for (LayoutTableCell* cell = m_layoutTableRow.firstCell(); cell; cell = cell->nextCell())
 | 
| +                TableCellPainter(*cell).paintContainerBackgroundBehindCell(paintInfoForCells, paintOffset, m_layoutTableRow, DisplayItem::TableCellBackgroundFromRow);
 | 
| +        }
 | 
| +        paintBoxShadow(paintInfo, paintOffset, Inset);
 | 
|      }
 | 
|  
 | 
|      if (paintInfo.phase == PaintPhaseSelfBlockBackgroundOnly)
 | 
| @@ -45,6 +51,22 @@ void TableRowPainter::paintOutline(const PaintInfo& paintInfo, const LayoutPoint
 | 
|      ObjectPainter(m_layoutTableRow).paintOutline(paintInfo, adjustedPaintOffset);
 | 
|  }
 | 
|  
 | 
| +void TableRowPainter::paintBoxShadow(const PaintInfo& paintInfo, const LayoutPoint& paintOffset, ShadowStyle shadowStyle)
 | 
| +{
 | 
| +    DCHECK(shouldPaintSelfBlockBackground(paintInfo.phase));
 | 
| +    if (!m_layoutTableRow.styleRef().boxShadow())
 | 
| +        return;
 | 
| +
 | 
| +    DisplayItem::Type type = shadowStyle == Normal ? DisplayItem::TableRowBoxShadowNormal : DisplayItem::TableRowBoxShadowInset;
 | 
| +    if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(paintInfo.context, m_layoutTableRow, type))
 | 
| +        return;
 | 
| +
 | 
| +    LayoutPoint adjustedPaintOffset = paintOffset + m_layoutTableRow.location();
 | 
| +    LayoutRect bounds = BoxPainter(m_layoutTableRow).boundsForDrawingRecorder(adjustedPaintOffset);
 | 
| +    LayoutObjectDrawingRecorder recorder(paintInfo.context, m_layoutTableRow, type, bounds);
 | 
| +    BoxPainter::paintBoxShadow(paintInfo, LayoutRect(adjustedPaintOffset, m_layoutTableRow.size()), m_layoutTableRow.styleRef(), shadowStyle);
 | 
| +}
 | 
| +
 | 
|  void TableRowPainter::paintBackgroundBehindCell(const LayoutTableCell& cell, const PaintInfo& paintInfo, const LayoutPoint& paintOffset)
 | 
|  {
 | 
|      DCHECK(m_layoutTableRow.hasBackground() && !m_layoutTableRow.hasSelfPaintingLayer());
 | 
| 
 |