Index: third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
index 36cdfe6537f2b5c110527b888b857cebd0ddd057..3a49ddd78677c9df903085d077a56100f3d35289 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
@@ -1130,7 +1130,8 @@ void LayoutBlockFlow::AdjustLinePositionForPagination(RootInlineBox& line_box, |
logical_offset += delta; |
line_box.SetPaginationStrut(LayoutUnit()); |
line_box.SetIsFirstAfterPageBreak(false); |
- if (!View()->GetLayoutState()->IsPaginated()) |
+ LayoutState* layout_state = View()->GetLayoutState(); |
+ if (!layout_state->IsPaginated()) |
return; |
LayoutUnit page_logical_height = PageLogicalHeightForOffset(logical_offset); |
if (!page_logical_height) |
@@ -1194,14 +1195,22 @@ void LayoutBlockFlow::AdjustLinePositionForPagination(RootInlineBox& line_box, |
// up in the next column or page. Setting a strut on the block is also |
// important when it comes to satisfying orphan requirements. |
if (ShouldSetStrutOnBlock(*this, line_box, logical_offset, line_index, |
- page_logical_height)) |
- strut_to_propagate = logical_offset; |
+ page_logical_height)) { |
+ DCHECK(!IsTableCell()); |
+ strut_to_propagate = |
+ logical_offset + layout_state->HeightOffsetForTableHeaders(); |
+ } else if (LayoutUnit pagination_strut = |
+ layout_state->HeightOffsetForTableHeaders()) { |
+ delta += pagination_strut; |
+ line_box.SetPaginationStrut(pagination_strut); |
+ } |
} else if (line_box == FirstRootBox() && AllowsPaginationStrut()) { |
// This is the first line in the block. The block may still start in the |
// previous column or page, and if that's the case, attempt to pull it over |
// to where this line is, so that we don't split the top border or padding. |
- LayoutUnit strut = |
- remaining_logical_height + logical_offset - page_logical_height; |
+ LayoutUnit strut = remaining_logical_height + logical_offset + |
+ layout_state->HeightOffsetForTableHeaders() - |
+ page_logical_height; |
if (strut > LayoutUnit()) { |
// The block starts in a previous column or page. Set a strut on the block |
// if there's room for the top border, padding and the line in one column |