Index: third_party/WebKit/Source/core/layout/LayoutTableSection.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp b/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp |
index 8818174333d8c7f1919c86b9828c49c0b86756d7..9f33002234582d0a62c3ae6c3c992a7aa1b01236 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp |
@@ -90,10 +90,6 @@ LayoutTableSection::LayoutTableSection(Element* element) |
: LayoutTableBoxComponent(element), |
c_col_(0), |
c_row_(0), |
- outer_border_start_(0), |
- outer_border_end_(0), |
- outer_border_before_(0), |
- outer_border_after_(0), |
needs_cell_recalc_(false), |
force_full_paint_(false), |
has_multiple_cell_levels_(false), |
@@ -1343,147 +1339,6 @@ void LayoutTableSection::MarkAllCellsWidthsDirtyAndOrNeedsLayout( |
} |
} |
-int LayoutTableSection::CalcBlockDirectionOuterBorder( |
- BlockBorderSide side) const { |
- // TODO(wangxianzhu): There are several issues in this function: |
- // 1. Row borders are not respected; |
- // 2. Column borders should be ignored if this section is not at the top or |
- // the bottom. |
- // 3. It's unnecessarily complex. |
- // I think we should just use cell's calculated collapsed border values to |
- // avoid all of the problems. |
- if (!grid_.size() || !Table()->NumEffectiveColumns()) |
- return 0; |
- |
- int border_width = 0; |
- |
- const BorderValue& sb = |
- side == kBorderBefore ? Style()->BorderBefore() : Style()->BorderAfter(); |
- if (sb.Style() == kBorderStyleHidden) |
- return -1; |
- if (sb.Style() > kBorderStyleHidden) |
- border_width = sb.Width(); |
- |
- const BorderValue& rb = side == kBorderBefore |
- ? FirstRow()->Style()->BorderBefore() |
- : LastRow()->Style()->BorderAfter(); |
- if (rb.Style() == kBorderStyleHidden) |
- return -1; |
- if (rb.Style() > kBorderStyleHidden && rb.Width() > border_width) |
- border_width = rb.Width(); |
- |
- bool all_hidden = true; |
- unsigned r = side == kBorderBefore ? 0 : grid_.size() - 1; |
- unsigned n_cols = NumEffectiveColumns(r); |
- for (unsigned c = 0; c < n_cols; c++) { |
- const auto& grid_cell = GridCellAt(r, c); |
- if (grid_cell.InColSpan() || !grid_cell.HasCells()) |
- continue; |
- const ComputedStyle& primary_cell_style = |
- grid_cell.PrimaryCell()->StyleRef(); |
- // FIXME: Make this work with perpendicular and flipped cells. |
- const BorderValue& cb = side == kBorderBefore |
- ? primary_cell_style.BorderBefore() |
- : primary_cell_style.BorderAfter(); |
- // FIXME: Don't repeat for the same col group |
- LayoutTableCol* col = |
- Table()->ColElementAtEffectiveColumn(c).InnermostColOrColGroup(); |
- if (col) { |
- const BorderValue& gb = side == kBorderBefore |
- ? col->Style()->BorderBefore() |
- : col->Style()->BorderAfter(); |
- if (gb.Style() == kBorderStyleHidden || cb.Style() == kBorderStyleHidden) |
- continue; |
- all_hidden = false; |
- if (gb.Style() > kBorderStyleHidden && gb.Width() > border_width) |
- border_width = gb.Width(); |
- if (cb.Style() > kBorderStyleHidden && cb.Width() > border_width) |
- border_width = cb.Width(); |
- } else { |
- if (cb.Style() == kBorderStyleHidden) |
- continue; |
- all_hidden = false; |
- if (cb.Style() > kBorderStyleHidden && cb.Width() > border_width) |
- border_width = cb.Width(); |
- } |
- } |
- if (all_hidden) |
- return -1; |
- |
- if (side == kBorderAfter) |
- border_width++; // Distribute rounding error |
- return border_width / 2; |
-} |
- |
-int LayoutTableSection::CalcInlineDirectionOuterBorder( |
- InlineBorderSide side) const { |
- unsigned total_cols = Table()->NumEffectiveColumns(); |
- if (!grid_.size() || !total_cols) |
- return 0; |
- unsigned col_index = side == kBorderStart ? 0 : total_cols - 1; |
- |
- int border_width = 0; |
- |
- const BorderValue& sb = |
- side == kBorderStart ? Style()->BorderStart() : Style()->BorderEnd(); |
- if (sb.Style() == kBorderStyleHidden) |
- return -1; |
- if (sb.Style() > kBorderStyleHidden) |
- border_width = sb.Width(); |
- |
- if (LayoutTableCol* col = Table() |
- ->ColElementAtEffectiveColumn(col_index) |
- .InnermostColOrColGroup()) { |
- const BorderValue& gb = side == kBorderStart ? col->Style()->BorderStart() |
- : col->Style()->BorderEnd(); |
- if (gb.Style() == kBorderStyleHidden) |
- return -1; |
- if (gb.Style() > kBorderStyleHidden && gb.Width() > border_width) |
- border_width = gb.Width(); |
- } |
- |
- bool all_hidden = true; |
- for (unsigned r = 0; r < grid_.size(); r++) { |
- if (col_index >= NumEffectiveColumns(r)) |
- continue; |
- const auto& grid_cell = GridCellAt(r, col_index); |
- if (!grid_cell.HasCells()) |
- continue; |
- // FIXME: Don't repeat for the same cell |
- const ComputedStyle& primary_cell_style = |
- grid_cell.PrimaryCell()->StyleRef(); |
- const ComputedStyle& primary_cell_parent_style = |
- grid_cell.PrimaryCell()->Parent()->StyleRef(); |
- // FIXME: Make this work with perpendicular and flipped cells. |
- const BorderValue& cb = side == kBorderStart |
- ? primary_cell_style.BorderStart() |
- : primary_cell_style.BorderEnd(); |
- const BorderValue& rb = side == kBorderStart |
- ? primary_cell_parent_style.BorderStart() |
- : primary_cell_parent_style.BorderEnd(); |
- if (cb.Style() == kBorderStyleHidden || rb.Style() == kBorderStyleHidden) |
- continue; |
- all_hidden = false; |
- if (cb.Style() > kBorderStyleHidden && cb.Width() > border_width) |
- border_width = cb.Width(); |
- if (rb.Style() > kBorderStyleHidden && rb.Width() > border_width) |
- border_width = rb.Width(); |
- } |
- if (all_hidden) |
- return -1; |
- |
- if ((side == kBorderStart) != Table()->Style()->IsLeftToRightDirection()) |
- border_width++; // Distribute rounding error |
- return border_width / 2; |
-} |
- |
-void LayoutTableSection::RecalcOuterBorder() { |
- outer_border_before_ = CalcBlockDirectionOuterBorder(kBorderBefore); |
- outer_border_after_ = CalcBlockDirectionOuterBorder(kBorderAfter); |
- outer_border_start_ = CalcInlineDirectionOuterBorder(kBorderStart); |
- outer_border_end_ = CalcInlineDirectionOuterBorder(kBorderEnd); |
-} |
- |
int LayoutTableSection::FirstLineBoxBaseline() const { |
if (!grid_.size()) |
return -1; |