| Index: third_party/WebKit/Source/core/paint/TableCellPainter.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/TableCellPainter.cpp b/third_party/WebKit/Source/core/paint/TableCellPainter.cpp
|
| index 2fc5973ee3b9f7a2d94a19dc07925adb6f5f3e76..46d8c686393379abe176a48ac8d205cc63d71249 100644
|
| --- a/third_party/WebKit/Source/core/paint/TableCellPainter.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/TableCellPainter.cpp
|
| @@ -5,6 +5,7 @@
|
| #include "core/paint/TableCellPainter.h"
|
|
|
| #include "core/layout/LayoutTableCell.h"
|
| +#include "core/layout/LayoutTableCol.h"
|
| #include "core/paint/BlockPainter.h"
|
| #include "core/paint/BoxPainter.h"
|
| #include "core/paint/LayoutObjectDrawingRecorder.h"
|
| @@ -68,10 +69,31 @@ static EBorderStyle collapsedBorderStyle(EBorderStyle style) {
|
| return style;
|
| }
|
|
|
| +const DisplayItemClient& TableCellPainter::displayItemClientForBackground(
|
| + const LayoutObject& backgroundObject) const {
|
| + if (!m_layoutTableCell.usesCompositedCellDisplayItemClients())
|
| + return m_layoutTableCell;
|
| + if (backgroundObject.isTableRow()) {
|
| + return static_cast<const DisplayItemClient&>(
|
| + *m_layoutTableCell.rowBackgroundDisplayItemClient());
|
| + } else if (backgroundObject.isLayoutTableCol()) {
|
| + if (toLayoutTableCol(backgroundObject).isTableColumnGroup()) {
|
| + return static_cast<const DisplayItemClient&>(
|
| + *m_layoutTableCell.colGroupBackgroundDisplayItemClient());
|
| + }
|
| + return static_cast<const DisplayItemClient&>(
|
| + *m_layoutTableCell.colBackgroundDisplayItemClient());
|
| + } else if (backgroundObject.isTableSection()) {
|
| + return static_cast<const DisplayItemClient&>(
|
| + *m_layoutTableCell.sectionBackgroundDisplayItemClient());
|
| + }
|
| + return m_layoutTableCell;
|
| +}
|
| +
|
| const DisplayItemClient& TableCellPainter::displayItemClientForBorders() const {
|
| // TODO(wkorman): We may need to handle PaintInvalidationDelayedFull.
|
| // http://crbug.com/657186
|
| - return m_layoutTableCell.usesTableAsAdditionalDisplayItemClient()
|
| + return m_layoutTableCell.usesCompositedCellDisplayItemClients()
|
| ? static_cast<const DisplayItemClient&>(
|
| *m_layoutTableCell.collapsedBorderValues())
|
| : m_layoutTableCell;
|
| @@ -195,14 +217,16 @@ void TableCellPainter::paintContainerBackgroundBehindCell(
|
| !m_layoutTableCell.firstChild())
|
| return;
|
|
|
| - if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(
|
| - paintInfo.context, m_layoutTableCell, type))
|
| + const DisplayItemClient& client =
|
| + displayItemClientForBackground(backgroundObject);
|
| + if (DrawingRecorder::useCachedDrawingIfPossible(paintInfo.context, client,
|
| + type))
|
| return;
|
|
|
| LayoutRect paintRect =
|
| paintRectNotIncludingVisualOverflow(adjustedPaintOffset);
|
| - LayoutObjectDrawingRecorder recorder(paintInfo.context, m_layoutTableCell,
|
| - type, paintRect);
|
| + DrawingRecorder recorder(paintInfo.context, client, type,
|
| + FloatRect(paintRect));
|
| paintBackground(paintInfo, paintRect, backgroundObject);
|
| }
|
|
|
|
|