diff --git a/components/layout_2020/table/layout.rs b/components/layout_2020/table/layout.rs index 931a1da618c..f49c1d82c5c 100644 --- a/components/layout_2020/table/layout.rs +++ b/components/layout_2020/table/layout.rs @@ -203,7 +203,7 @@ impl<'a> TableLayout<'a> { block: padding.block_sum() + border.block_sum(), }; - let (size, min_size, max_size) = + let (size, min_size, max_size, inline_size_is_auto) = get_outer_sizes_from_style(&cell.style, writing_mode, &padding_border_sums); let percentage_contribution = get_size_percentage_contribution_from_style(&cell.style, writing_mode); @@ -233,7 +233,13 @@ impl<'a> TableLayout<'a> { // These formulas differ from the spec, but seem to match Gecko and Blink. let outer_min_content_width = if is_in_fixed_mode { - size.inline.min(max_size.inline).max(min_size.inline) + if inline_size_is_auto { + // This is an outer size, but we deliberately ignore borders and padding. + // This is like allowing the content-box width to be negative. + Au::zero() + } else { + size.inline.min(max_size.inline).max(min_size.inline) + } } else { inline_content_sizes .min_content @@ -714,7 +720,7 @@ impl<'a> TableLayout<'a> { block: padding.block_sum() + border.block_sum() + margin.block_sum(), }; - let (size, min_size, max_size) = + let (size, min_size, max_size, _) = get_outer_sizes_from_style(&context.style, writing_mode, &padding_border_sums); let size_is_auto = context.style.box_size(writing_mode).inline.is_auto(); @@ -2566,7 +2572,7 @@ impl Table { None => return CellOrTrackMeasure::zero(), }; - let (size, min_size, max_size) = + let (size, min_size, max_size, _) = get_outer_sizes_from_style(&column.style, writing_mode, &LogicalVec2::zero()); let percentage_contribution = get_size_percentage_contribution_from_style(&column.style, writing_mode); @@ -2755,7 +2761,7 @@ fn get_outer_sizes_from_style( style: &Arc, writing_mode: WritingMode, padding_border_sums: &LogicalVec2, -) -> (LogicalVec2, LogicalVec2, LogicalVec2) { +) -> (LogicalVec2, LogicalVec2, LogicalVec2, bool) { let box_sizing = style.get_position().box_sizing; let outer_size = |size: LogicalVec2| match box_sizing { BoxSizing::ContentBox => size + *padding_border_sums, @@ -2774,10 +2780,12 @@ fn get_outer_sizes_from_style( .map_or(MAX_AU, Au::from) }; + let size = style.box_size(writing_mode); ( - outer_size(style.box_size(writing_mode).map(get_size_for_axis)), + outer_size(size.map(get_size_for_axis)), outer_size(style.min_box_size(writing_mode).map(get_size_for_axis)), outer_size(style.max_box_size(writing_mode).map(get_max_size_for_axis)), + size.inline.is_auto(), ) } diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a01.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a01.xht.ini deleted file mode 100644 index 520059fb85d..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a01.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003a01.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a02.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a02.xht.ini deleted file mode 100644 index 0e16108b883..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a02.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003a02.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a03.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a03.xht.ini deleted file mode 100644 index 44083ca295d..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a03.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003a03.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a04.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a04.xht.ini deleted file mode 100644 index 0dc9004be45..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a04.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003a04.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a05.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a05.xht.ini deleted file mode 100644 index 4b17e46b7a8..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a05.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003a05.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a06.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a06.xht.ini deleted file mode 100644 index fa50c3011ae..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003a06.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003a06.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d01.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d01.xht.ini deleted file mode 100644 index b04612af63e..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d01.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003d01.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d02.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d02.xht.ini deleted file mode 100644 index 521d83c6bbf..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d02.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003d02.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d03.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d03.xht.ini deleted file mode 100644 index 4d133e4ecb6..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d03.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003d03.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d04.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d04.xht.ini deleted file mode 100644 index 0dc73e7a7fc..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d04.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003d04.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d05.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d05.xht.ini deleted file mode 100644 index 2e95996169c..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d05.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003d05.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d06.xht.ini b/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d06.xht.ini deleted file mode 100644 index d644433e7fc..00000000000 --- a/tests/wpt/meta/css/CSS2/tables/fixed-table-layout-003d06.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[fixed-table-layout-003d06.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/tentative/table-width-redistribution-fixed-padding.html.ini b/tests/wpt/meta/css/css-tables/tentative/table-width-redistribution-fixed-padding.html.ini index e6a00f04b98..e234381178a 100644 --- a/tests/wpt/meta/css/css-tables/tentative/table-width-redistribution-fixed-padding.html.ini +++ b/tests/wpt/meta/css/css-tables/tentative/table-width-redistribution-fixed-padding.html.ini @@ -1,7 +1,4 @@ [table-width-redistribution-fixed-padding.html] - [table 6] - expected: FAIL - [table 10] expected: FAIL