Index: third_party/WebKit/Source/core/layout/LayoutTable.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTable.cpp b/third_party/WebKit/Source/core/layout/LayoutTable.cpp |
index 1f2289c777b675937a03db1a95f2ac09b97639e3..0366220e38a9f37d690e74443172ff85dbde38f9 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTable.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutTable.cpp |
@@ -69,6 +69,7 @@ LayoutTable::LayoutTable(Element* element) |
border_end_(0) { |
DCHECK(!ChildrenInline()); |
effective_column_positions_.Fill(0, 1); |
+ position_of_repeating_footer_group_on_page_.Fill(LayoutUnit(), 1); |
} |
LayoutTable::~LayoutTable() {} |
@@ -645,6 +646,15 @@ void LayoutTable::UpdateLayout() { |
: kTableHeightNotChanging; |
old_available_logical_height_ = current_available_logical_height; |
+ // Lay out table footer. |
mstensho (USE GERRIT)
2017/04/24 11:57:15
Is it necessary to do this out-of-order? We should
|
+ if (LayoutTableSection* section = Footer()) { |
+ if (section->GetPaginationBreakability() != kAllowAnyBreaks) { |
+ section->LayoutIfNeeded(); |
+ int section_logical_height = section->CalcRowLogicalHeight(); |
+ section->SetLogicalHeight(LayoutUnit(section_logical_height)); |
+ } |
+ } |
+ |
// Lay out table header group. |
if (LayoutTableSection* section = Header()) { |
LayoutSection(*section, layouter, section_logical_left, |
@@ -846,7 +856,7 @@ void LayoutTable::PaintObject(const PaintInfo& paint_info, |
TablePainter(*this).PaintObject(paint_info, paint_offset); |
} |
-void LayoutTable::SubtractCaptionRect(LayoutRect& rect) const { |
+void LayoutTable::SubtractCaptionRect(LayoutRect& rect, bool after_only) const { |
for (unsigned i = 0; i < captions_.size(); i++) { |
LayoutUnit caption_logical_height = captions_[i]->LogicalHeight() + |
captions_[i]->MarginBefore() + |
@@ -854,6 +864,8 @@ void LayoutTable::SubtractCaptionRect(LayoutRect& rect) const { |
bool caption_is_before = |
(captions_[i]->Style()->CaptionSide() != ECaptionSide::kBottom) ^ |
Style()->IsFlippedBlocksWritingMode(); |
+ if (caption_is_before && after_only) |
+ continue; |
if (Style()->IsHorizontalWritingMode()) { |
rect.SetHeight(rect.Height() - caption_logical_height); |
if (caption_is_before) |