From 258162fbee65fb894b8aac5dbce5a366f71dc7b3 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Mon, 23 Jan 2017 09:28:38 -0800 Subject: [PATCH] Fix block-direction border collapsing calculation Previously the block-start collapsed borders from rows/cells were written to `preliminary_collapsed_borders` but never read. This fixes the block-direction part of #14834. --- components/layout/table.rs | 19 ++++++++++++------- .../border-conflict-element-001c.htm.ini | 3 --- 2 files changed, 12 insertions(+), 10 deletions(-) delete mode 100644 tests/wpt/metadata-css/css21_dev/html4/border-conflict-element-001c.htm.ini diff --git a/components/layout/table.rs b/components/layout/table.rs index 9ad018f622e..81cde44bba6 100644 --- a/components/layout/table.rs +++ b/components/layout/table.rs @@ -681,13 +681,18 @@ fn perform_border_collapse_for_row(child_table_row: &mut TableRowFlow, } // Compute block-start borders. - match previous_block_borders { - PreviousBlockCollapsedBorders::FromPreviousRow(previous_block_borders) => { - child_table_row.final_collapsed_borders.block_start = previous_block_borders - } - PreviousBlockCollapsedBorders::FromTable(collapsed_border) => { - child_table_row.final_collapsed_borders.block_start = - vec![collapsed_border; child_table_row.block_flow.base.children.len()] + let block_start_borders = &mut child_table_row.final_collapsed_borders.block_start; + *block_start_borders = child_table_row.preliminary_collapsed_borders.block_start.clone(); + for (i, this_border) in block_start_borders.iter_mut().enumerate() { + match previous_block_borders { + PreviousBlockCollapsedBorders::FromPreviousRow(ref previous_block_borders) => { + if previous_block_borders.len() > i { + this_border.combine(&previous_block_borders[i]); + } + } + PreviousBlockCollapsedBorders::FromTable(table_border) => { + this_border.combine(&table_border); + } } } diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-conflict-element-001c.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-conflict-element-001c.htm.ini deleted file mode 100644 index 5a37b1e0193..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-conflict-element-001c.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-conflict-element-001c.htm] - type: reftest - expected: FAIL