aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/layout_2020/flexbox/geom.rs2
-rw-r--r--components/layout_2020/flexbox/layout.rs515
-rw-r--r--components/layout_2020/flow/inline/mod.rs1
-rw-r--r--components/layout_2020/flow/mod.rs13
-rw-r--r--components/layout_2020/formatting_contexts.rs46
-rw-r--r--components/layout_2020/sizing.rs26
-rw-r--r--tests/wpt/meta/MANIFEST.json13
-rw-r--r--tests/wpt/meta/css/css-align/self-alignment/self-align-safe-unsafe-flex-003.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/align-content-wrap-002.html.ini9
-rw-r--r--tests/wpt/meta/css/css-flexbox/align-items-009.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/align-self-015.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-001.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-006.html.ini6
-rw-r--r--tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-007.html.ini6
-rw-r--r--tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini6
-rw-r--r--tests/wpt/meta/css/css-flexbox/auto-height-column-with-border-and-padding.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/box-sizing-001.html.ini8
-rw-r--r--tests/wpt/meta/css/css-flexbox/box-sizing-min-max-sizes-001.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/change-column-flex-width.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/column-flex-child-with-overflow-scroll.html.ini6
-rw-r--r--tests/wpt/meta/css/css-flexbox/columns-height-set-via-top-bottom.html.ini4
-rw-r--r--tests/wpt/meta/css/css-flexbox/fieldset-as-container-justify-center.tentative.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-004.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-basis-010.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-basis-011.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-basis-intrinsics-001.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-column-relayout-assert.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-direction-column-overlap-001.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-factor-less-than-one.html.ini14
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-flow-007.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-flow-008.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-flow-009.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-flow-010.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-flow-011.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-flow-012.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-flow-013.html.ini12
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-item-compressible-002.html.ini12
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-item-contains-strict.html.ini14
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-margin-no-collapse.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-012.html.ini4
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-014.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-022.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-024.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-026.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-028.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-030.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-size-001.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-minimum-width-flex-items-015.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini9
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-outer-flexbox-column-recalculate-height-on-resize-001.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-wrap-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-align-self-stretch-vert-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002a.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002b.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-005.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-006.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004a.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004b.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-percentage-ignored.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-reverse.htm.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column.htm.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-003.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-004.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap-reverse.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox_order.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-002-lr.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-002-ltr.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-002-rl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-002-rtl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-003-lr.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-003-rl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-005-lr.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-005-ltr.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-005-rl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/gap-005-rtl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002.html.ini21
-rw-r--r--tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002v.html.ini21
-rw-r--r--tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004.html.ini19
-rw-r--r--tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004v.html.ini19
-rw-r--r--tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006.html.ini30
-rw-r--r--tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006v.html.ini33
-rw-r--r--tests/wpt/meta/css/css-flexbox/intrinsic-size/col-wrap-009.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/item-with-max-height-and-scrollbar.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/justify-content-006.html.ini4
-rw-r--r--tests/wpt/meta/css/css-flexbox/layout-algorithm_algo-cross-line-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/orthogonal-writing-modes-and-intrinsic-sizing.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/overflow-auto-006.html.ini12
-rw-r--r--tests/wpt/meta/css/css-flexbox/overflow-auto-008.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-000.html.ini9
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-003.html.ini5
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-004.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-005.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-006.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-007.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-008.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-016.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-017.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-018.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-heights-019.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-margins-001.html.ini4
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-max-height-004.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-max-width-cross-axis.html.ini3
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-size-quirks.html.ini6
-rw-r--r--tests/wpt/meta/css/css-flexbox/percentage-size.html.ini6
-rw-r--r--tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-003.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/stretched-child-shrink-on-relayout.html.ini9
-rw-r--r--tests/wpt/meta/css/css-flexbox/table-as-item-change-cell.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/table-as-item-specified-height.html.ini2
-rw-r--r--tests/wpt/tests/css/css-flexbox/column-flex-child-with-max-width.html20
124 files changed, 535 insertions, 599 deletions
diff --git a/components/layout_2020/flexbox/geom.rs b/components/layout_2020/flexbox/geom.rs
index 623c031585b..ac80f451f70 100644
--- a/components/layout_2020/flexbox/geom.rs
+++ b/components/layout_2020/flexbox/geom.rs
@@ -67,7 +67,7 @@ impl<T> FlexRelativeSides<T> {
/// One of the two bits set by the `flex-direction` property
/// (The other is "forward" v.s. reverse.)
-#[derive(Clone, Copy, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq)]
pub(super) enum FlexAxis {
/// The main axis is the inline axis of the container (not necessarily of flex items!),
/// cross is block.
diff --git a/components/layout_2020/flexbox/layout.rs b/components/layout_2020/flexbox/layout.rs
index 25c2bec24eb..bbe22d9556f 100644
--- a/components/layout_2020/flexbox/layout.rs
+++ b/components/layout_2020/flexbox/layout.rs
@@ -205,14 +205,61 @@ impl FlexContainer {
layout_context: &LayoutContext,
writing_mode: WritingMode,
) -> ContentSizes {
+ let flex_axis = FlexAxis::from(used_flex_direction(&*self.style));
+ match flex_axis {
+ FlexAxis::Row => self.main_content_sizes(layout_context, flex_axis, writing_mode),
+ FlexAxis::Column => self.cross_content_sizes(layout_context, flex_axis),
+ }
+ }
+
+ fn cross_content_sizes(
+ &mut self,
+ layout_context: &LayoutContext,
+ flex_axis: FlexAxis,
+ ) -> ContentSizes {
+ // <https://drafts.csswg.org/css-flexbox/#intrinsic-cross-sizes>
+ assert_eq!(
+ flex_axis,
+ FlexAxis::Column,
+ "The cross axis should be the inline one"
+ );
+ let mut content_sizes = ContentSizes::zero();
+ for kid in self.children.iter() {
+ let kid = &mut *kid.borrow_mut();
+ match kid {
+ FlexLevelBox::FlexItem(item) => {
+ // TODO: For the max-content size we should distribute items into
+ // columns, and sum the column sizes and gaps.
+ content_sizes.max_assign(
+ item.independent_formatting_context
+ .inline_content_sizes(layout_context),
+ );
+ },
+ FlexLevelBox::OutOfFlowAbsolutelyPositionedBox(_) => {},
+ }
+ }
+ content_sizes
+ }
+
+ fn main_content_sizes(
+ &mut self,
+ layout_context: &LayoutContext,
+ flex_axis: FlexAxis,
+ writing_mode: WritingMode,
+ ) -> ContentSizes {
// - TODO: calculate intrinsic cross sizes when container is a column
// (and check for ‘writing-mode’?)
// - TODO: Collapsed flex items need to be skipped for intrinsic size calculation.
- // <https://drafts.csswg.org/css-flexbox/#intrinsic-cross-sizes>
+ // <https://drafts.csswg.org/css-flexbox-1/#intrinsic-main-sizes>
// > It is calculated, considering only non-collapsed flex items, by:
// > 1. For each flex item, subtract its outer flex base size from its max-content
// > contribution size.
+ assert_eq!(
+ flex_axis,
+ FlexAxis::Row,
+ "The main axis should be the inline one"
+ );
let mut chosen_max_flex_fraction = f32::NEG_INFINITY;
let mut chosen_min_flex_fraction = f32::NEG_INFINITY;
let mut sum_of_flex_grow_factors = 0.0;
@@ -236,7 +283,7 @@ impl FlexContainer {
sum_of_flex_grow_factors += item.style().get_position().flex_grow.0;
sum_of_flex_shrink_factors += item.style().get_position().flex_shrink.0;
- let info = item.inline_content_size_info(
+ let info = item.main_content_size_info(
layout_context,
writing_mode,
container_is_horizontal,
@@ -455,7 +502,7 @@ impl FlexContainer {
// https://github.com/w3c/csswg-drafts/issues/4905
// Gecko reportedly uses `block-size: fit-content` in this case
// (which requires running another pass of the "full" layout algorithm)
- todo!()
+ containing_block.block_size.auto_is(Au::zero)
// Note: this panic shouldn’t happen since the start of `FlexContainer::layout`
// forces `FlexAxis::Row`.
},
@@ -842,9 +889,11 @@ impl<'a> FlexItem<'a> {
box_.automatic_min_size(
flex_context.layout_context,
cross_axis_is_item_block_axis,
- content_box_size,
- min_size,
- max_size,
+ flex_context
+ .flex_axis
+ .vec2_to_flex_relative(content_box_size),
+ flex_context.flex_axis.vec2_to_flex_relative(min_size),
+ flex_context.flex_axis.vec2_to_flex_relative(max_size),
)
}),
block: min_size.block.auto_is(Au::zero),
@@ -969,7 +1018,7 @@ fn flex_base_size(
} else {
// FIXME: block-axis content sizing requires another pass
// of "full" layout
- todo!()
+ Au::zero()
// Note: this panic shouldn’t happen since the start of `FlexContainer::layout`
// forces `FlexAxis::Row` and the `writing-mode` property is disabled.
}
@@ -989,13 +1038,7 @@ fn cross_axis_is_item_block_axis(
}
fn used_flex_direction(container_style: &ComputedValues) -> FlexDirection {
- // Column flex containers are not fully implemented yet,
- // so give a different layout instead of panicking.
- // FIXME: implement `todo!`s for FlexAxis::Column below, and remove this
- match container_style.clone_flex_direction() {
- FlexDirection::Row | FlexDirection::Column => FlexDirection::Row,
- FlexDirection::RowReverse | FlexDirection::ColumnReverse => FlexDirection::RowReverse,
- }
+ container_style.clone_flex_direction()
}
// “Collect flex items into flex lines”
@@ -1596,112 +1639,140 @@ impl FlexItem<'_> {
.positioning_context
.collects_for_nearest_positioned_ancestor(),
);
- match flex_context.flex_axis {
- FlexAxis::Row => {
- // The main axis is the container’s inline axis
- // https://drafts.csswg.org/css-writing-modes/#orthogonal-flows
- assert_eq!(
- flex_context.containing_block.style.writing_mode,
- self.box_.style().writing_mode,
- "Mixed writing modes are not supported yet"
+ // https://drafts.csswg.org/css-writing-modes/#orthogonal-flows
+ let container_writing_mode = flex_context.containing_block.style.writing_mode;
+ assert_eq!(
+ container_writing_mode,
+ self.box_.style().writing_mode,
+ "Mixed writing modes are not supported yet"
+ );
+ // … and also the item’s inline axis.
+
+ match self.box_ {
+ IndependentFormattingContext::Replaced(replaced) => {
+ let pbm = replaced
+ .style
+ .padding_border_margin(flex_context.containing_block);
+ let box_size = used_cross_size_override.map(|size| LogicalVec2 {
+ inline: replaced
+ .style
+ .content_box_size(flex_context.containing_block, &pbm)
+ .inline
+ .map(Au::from),
+ block: AuOrAuto::LengthPercentage(size),
+ });
+ let size = replaced.contents.used_size_as_if_inline_element(
+ flex_context.containing_block,
+ &replaced.style,
+ box_size,
+ &pbm,
);
- // … and also the item’s inline axis.
-
- match self.box_ {
- IndependentFormattingContext::Replaced(replaced) => {
- let pbm = replaced
- .style
- .padding_border_margin(flex_context.containing_block);
- let box_size = used_cross_size_override.map(|size| LogicalVec2 {
- inline: replaced
- .style
- .content_box_size(flex_context.containing_block, &pbm)
- .inline
- .map(Au::from),
- block: AuOrAuto::LengthPercentage(size),
- });
- let size = replaced.contents.used_size_as_if_inline_element(
- flex_context.containing_block,
- &replaced.style,
- box_size,
- &pbm,
- );
- let cross_size = flex_context.vec2_to_flex_relative(size).cross;
- let container_writing_mode =
- flex_context.containing_block.style.writing_mode;
- let fragments = replaced.contents.make_fragments(
- &replaced.style,
- size.to_physical_size(container_writing_mode),
- );
-
- FlexItemLayoutResult {
- hypothetical_cross_size: cross_size,
- fragments,
- positioning_context,
-
- // We will need to synthesize the baseline, but since the used cross
- // size can differ from the hypothetical cross size, we should defer
- // synthesizing until needed.
- baseline_relative_to_margin_box: None,
- }
- },
- IndependentFormattingContext::NonReplaced(non_replaced) => {
- let block_size = match used_cross_size_override {
- Some(s) => AuOrAuto::LengthPercentage(s),
- None => self.content_box_size.cross.map(|t| t),
- };
-
- let item_as_containing_block = ContainingBlock {
- inline_size: used_main_size,
- block_size,
- style: &non_replaced.style,
- };
- let IndependentLayout {
- fragments,
- content_block_size,
- baselines: content_box_baselines,
- ..
- } = non_replaced.layout(
- flex_context.layout_context,
- &mut positioning_context,
- &item_as_containing_block,
- flex_context.containing_block,
- );
-
- let baselines_relative_to_margin_box =
- self.layout_baselines_relative_to_margin_box(&content_box_baselines);
-
- let baseline_relative_to_margin_box = match self.align_self.0.value() {
- // ‘baseline’ computes to ‘first baseline’.
- AlignFlags::BASELINE => baselines_relative_to_margin_box.first,
- AlignFlags::LAST_BASELINE => baselines_relative_to_margin_box.last,
- _ => None,
- };
-
- let hypothetical_cross_size = self
- .content_box_size
- .cross
- .auto_is(|| content_block_size)
- .clamp_between_extremums(
- self.content_min_size.cross,
- self.content_max_size.cross,
+ let cross_size = flex_context.vec2_to_flex_relative(size).cross;
+ let container_writing_mode = flex_context.containing_block.style.writing_mode;
+ let fragments = replaced.contents.make_fragments(
+ &replaced.style,
+ size.to_physical_size(container_writing_mode),
+ );
+
+ FlexItemLayoutResult {
+ hypothetical_cross_size: cross_size,
+ fragments,
+ positioning_context,
+
+ // We will need to synthesize the baseline, but since the used cross
+ // size can differ from the hypothetical cross size, we should defer
+ // synthesizing until needed.
+ baseline_relative_to_margin_box: None,
+ }
+ },
+ IndependentFormattingContext::NonReplaced(non_replaced) => {
+ let cross_size = match used_cross_size_override {
+ Some(s) => AuOrAuto::LengthPercentage(s),
+ None => self.content_box_size.cross.map(|t| t),
+ };
+
+ let item_writing_mode = non_replaced.style.writing_mode;
+ let item_is_horizontal = item_writing_mode.is_horizontal();
+ let cross_axis_is_item_block_axis = cross_axis_is_item_block_axis(
+ flex_context
+ .containing_block
+ .style
+ .writing_mode
+ .is_horizontal(),
+ item_is_horizontal,
+ flex_context.flex_axis,
+ );
+ let (inline_size, block_size) = if cross_axis_is_item_block_axis {
+ (used_main_size, cross_size)
+ } else {
+ (
+ cross_size.auto_is(|| {
+ let content_contributions = non_replaced.outer_inline_content_sizes(
+ flex_context.layout_context,
+ container_writing_mode,
+ Au::zero,
);
+ flex_context
+ .containing_block
+ .inline_size
+ .min(content_contributions.max_content)
+ .max(content_contributions.min_content) -
+ self.pbm_auto_is_zero.cross
+ }),
+ AuOrAuto::LengthPercentage(used_main_size),
+ )
+ };
- FlexItemLayoutResult {
- hypothetical_cross_size,
- fragments,
- positioning_context,
- baseline_relative_to_margin_box,
+ let item_as_containing_block = ContainingBlock {
+ inline_size,
+ block_size,
+ style: &non_replaced.style,
+ };
+ let IndependentLayout {
+ fragments,
+ content_block_size,
+ baselines: content_box_baselines,
+ ..
+ } = non_replaced.layout(
+ flex_context.layout_context,
+ &mut positioning_context,
+ &item_as_containing_block,
+ flex_context.containing_block,
+ );
+
+ let baselines_relative_to_margin_box =
+ self.layout_baselines_relative_to_margin_box(&content_box_baselines);
+
+ let baseline_relative_to_margin_box = match self.align_self.0.value() {
+ // ‘baseline’ computes to ‘first baseline’.
+ AlignFlags::BASELINE => baselines_relative_to_margin_box.first,
+ AlignFlags::LAST_BASELINE => baselines_relative_to_margin_box.last,
+ _ => None,
+ };
+
+ let hypothetical_cross_size = self
+ .content_box_size
+ .cross
+ .auto_is(|| {
+ if cross_axis_is_item_block_axis {
+ content_block_size
+ } else {
+ inline_size
}
- },
+ })
+ .clamp_between_extremums(
+ self.content_min_size.cross,
+ self.content_max_size.cross,
+ );
+
+ FlexItemLayoutResult {
+ hypothetical_cross_size,
+ fragments,
+ positioning_context,
+ baseline_relative_to_margin_box,
}
},
- FlexAxis::Column => {
- todo!()
- // Note: this panic shouldn’t happen since the start of `FlexContainer::layout`
- // forces `FlexAxis::Row`.
- },
}
}
@@ -1841,7 +1912,7 @@ impl FlexItem<'_> {
}
impl FlexItemBox {
- fn inline_content_size_info(
+ fn main_content_size_info(
&mut self,
layout_context: &LayoutContext,
container_writing_mode: WritingMode,
@@ -1877,9 +1948,9 @@ impl FlexItemBox {
let automatic_min_size = self.automatic_min_size(
layout_context,
cross_axis_is_item_block_axis,
- content_box_size,
- content_min_size,
- content_max_size,
+ flex_axis.vec2_to_flex_relative(content_box_size),
+ flex_axis.vec2_to_flex_relative(content_min_size),
+ flex_axis.vec2_to_flex_relative(content_max_size),
);
let content_box_size = flex_axis.vec2_to_flex_relative(content_box_size);
@@ -1913,14 +1984,19 @@ impl FlexItemBox {
padding_border,
);
- let content_contribution_sizes = self.inline_content_sizes(
- layout_context,
- container_writing_mode,
- content_box_size,
- content_min_size_no_auto,
- content_max_size,
- pbm_auto_is_zero,
+ // Compute the min-content and max-content contributions of the item.
+ // <https://drafts.csswg.org/css-flexbox/#intrinsic-item-contributions>
+ assert_eq!(
+ flex_axis,
+ FlexAxis::Row,
+ "The main axis should be the inline one"
);
+ let content_contribution_sizes = self
+ .independent_formatting_context
+ .outer_inline_content_sizes(layout_context, container_writing_mode, || {
+ automatic_min_size
+ });
+
let outer_flex_base_size = flex_base_size + pbm_auto_is_zero.main;
let max_flex_factors = self.desired_flex_factors_for_preferred_width(
content_contribution_sizes.max_content,
@@ -2012,69 +2088,14 @@ impl FlexItemBox {
}
}
- fn inline_content_sizes(
- &mut self,
- layout_context: &LayoutContext,
- writing_mode: WritingMode,
- content_box_size: FlexRelativeVec2<GenericLengthPercentageOrAuto<Au>>,
- content_min_size: FlexRelativeVec2<Au>,
- content_max_size: FlexRelativeVec2<Option<Au>>,
- pbm_auto_is_zero: FlexRelativeVec2<Au>,
- ) -> ContentSizes {
- // TODO: use cross sizes when container is a column
- // (and check for ‘writing-mode’?)
-
- // <https://drafts.csswg.org/css-flexbox/#intrinsic-item-contributions>
- let outer_inline_content_sizes = self
- .independent_formatting_context
- .outer_inline_content_sizes(layout_context, writing_mode);
- let outer_preferred_size = content_box_size
- .main
- .non_auto()
- .map(|preferred_size| preferred_size + pbm_auto_is_zero.main);
- let outer_min_main_size = content_min_size.main + pbm_auto_is_zero.main;
- let outer_max_main_size = content_max_size
- .main
- .map(|max_main_size| max_main_size + pbm_auto_is_zero.main);
-
- // > The main-size min-content contribution of a flex item is the larger of its
- // > outer min-content size and outer preferred size if that is not auto, clamped by
- // > its min/max main size.
- let min_content_contribution = outer_preferred_size
- .map_or(
- outer_inline_content_sizes.min_content,
- |outer_preferred_size| {
- outer_preferred_size.max(outer_inline_content_sizes.min_content)
- },
- )
- .clamp_between_extremums(outer_min_main_size, outer_max_main_size);
-
- // > The main-size max-content contribution of a flex item is the larger of its
- // > outer max-content size and outer preferred size if that is not auto, clamped by
- // > its min/max main size.
- let max_content_contribution = outer_preferred_size
- .map_or(
- outer_inline_content_sizes.max_content,
- |outer_preferred_size| {
- outer_preferred_size.max(outer_inline_content_sizes.max_content)
- },
- )
- .clamp_between_extremums(outer_min_main_size, outer_max_main_size);
-
- ContentSizes {
- min_content: min_content_contribution,
- max_content: max_content_contribution,
- }
- }
-
/// This is an implementation of <https://drafts.csswg.org/css-flexbox/#min-size-auto>.
fn automatic_min_size(
&mut self,
layout_context: &LayoutContext,
cross_axis_is_item_block_axis: bool,
- content_box_size: LogicalVec2<AuOrAuto>,
- min_size: LogicalVec2<GenericLengthPercentageOrAuto<Au>>,
- max_size: LogicalVec2<Option<Au>>,
+ content_box_size: FlexRelativeVec2<AuOrAuto>,
+ min_size: FlexRelativeVec2<GenericLengthPercentageOrAuto<Au>>,
+ max_size: FlexRelativeVec2<Option<Au>>,
) -> Au {
// FIXME(stshine): Consider more situations when auto min size is not needed.
if self
@@ -2085,80 +2106,78 @@ impl FlexItemBox {
return Au::zero();
}
- if cross_axis_is_item_block_axis {
- // > **specified size suggestion**
- // > If the item’s preferred main size is definite and not automatic, then the specified
- // > size suggestion is that size. It is otherwise undefined.
- let specified_size_suggestion = content_box_size.inline.non_auto();
-
- // > **transferred size suggestion**
- // > If the item has a preferred aspect ratio and its preferred cross size is definite, then the
- // > transferred size suggestion is that size (clamped by its minimum and maximum cross sizes if they
- // > are definite), converted through the aspect ratio. It is otherwise undefined.
- let transferred_size_suggestion = match self.independent_formatting_context {
- IndependentFormattingContext::NonReplaced(_) => None,
- IndependentFormattingContext::Replaced(ref bfc) => {
- match (
- bfc.contents.inline_size_over_block_size_intrinsic_ratio(
- self.independent_formatting_context.style(),
- ),
- content_box_size.block,
- ) {
- (Some(ratio), AuOrAuto::LengthPercentage(block_size)) => {
- let block_size = block_size.clamp_between_extremums(
- min_size.block.auto_is(Au::zero),
- max_size.block,
- );
- Some(block_size.scale_by(ratio))
- },
- _ => None,
- }
- },
- };
+ // > **specified size suggestion**
+ // > If the item’s preferred main size is definite and not automatic, then the specified
+ // > size suggestion is that size. It is otherwise undefined.
+ let specified_size_suggestion = content_box_size.main.non_auto();
- // > **content size suggestion**
- // > The content size suggestion is the min-content size in the main axis, clamped, if it has a
- // > preferred aspect ratio, by any definite minimum and maximum cross sizes converted through the
- // > aspect ratio.
- let inline_content_size = self
- .independent_formatting_context
- .inline_content_sizes(layout_context)
- .min_content;
- let (is_replaced, aspect_ratio) = match self.independent_formatting_context {
+ let (is_replaced, main_size_over_cross_size_intrinsic_ratio) =
+ match self.independent_formatting_context {
IndependentFormattingContext::NonReplaced(_) => (false, None),
- IndependentFormattingContext::Replaced(ref replaced) => (
- true,
- replaced
+ IndependentFormattingContext::Replaced(ref replaced) => {
+ let ratio = replaced
.contents
.inline_size_over_block_size_intrinsic_ratio(
self.independent_formatting_context.style(),
- ),
- ),
+ )
+ .map(|ratio| {
+ if cross_axis_is_item_block_axis {
+ ratio
+ } else {
+ 1.0 / ratio
+ }
+ });
+ (true, ratio)
+ },
};
- let content_size_suggestion = aspect_ratio
- .map(|aspect_ratio| {
- inline_content_size.clamp_between_extremums(
- min_size.block.auto_is(Au::zero).scale_by(aspect_ratio),
- max_size.block.map(|l| l.scale_by(aspect_ratio)),
- )
- })
- .unwrap_or(inline_content_size);
-
- // > The content-based minimum size of a flex item is the smaller of its specified size
- // > suggestion and its content size suggestion if its specified size suggestion exists;
- // > otherwise, the smaller of its transferred size suggestion and its content size
- // > suggestion if the element is replaced and its transferred size suggestion exists;
- // > otherwise its content size suggestion. In all cases, the size is clamped by the maximum
- // > main size if it’s definite.
- match (specified_size_suggestion, transferred_size_suggestion) {
- (Some(specified), _) => specified.min(content_size_suggestion),
- (_, Some(transferred)) if is_replaced => transferred.min(content_size_suggestion),
- _ => content_size_suggestion,
- }
- .clamp_below_max(max_size.inline)
+
+ // > **transferred size suggestion**
+ // > If the item has a preferred aspect ratio and its preferred cross size is definite, then the
+ // > transferred size suggestion is that size (clamped by its minimum and maximum cross sizes if they
+ // > are definite), converted through the aspect ratio. It is otherwise undefined.
+ let transferred_size_suggestion = match (
+ main_size_over_cross_size_intrinsic_ratio,
+ content_box_size.cross,
+ ) {
+ (Some(ratio), AuOrAuto::LengthPercentage(cross_size)) => {
+ let cross_size = cross_size
+ .clamp_between_extremums(min_size.cross.auto_is(Au::zero), max_size.cross);
+ Some(cross_size.scale_by(ratio))
+ },
+ _ => None,
+ };
+
+ // > **content size suggestion**
+ // > The content size suggestion is the min-content size in the main axis, clamped, if it has a
+ // > preferred aspect ratio, by any definite minimum and maximum cross sizes converted through the
+ // > aspect ratio.
+ let main_content_size = if cross_axis_is_item_block_axis {
+ self.independent_formatting_context
+ .inline_content_sizes(layout_context)
+ .min_content
} else {
- // FIXME(stshine): Implement this when main axis is item's block axis.
Au::zero()
+ };
+ let content_size_suggestion = main_size_over_cross_size_intrinsic_ratio
+ .map(|ratio| {
+ main_content_size.clamp_between_extremums(
+ min_size.cross.auto_is(Au::zero).scale_by(ratio),
+ max_size.cross.map(|l| l.scale_by(ratio)),
+ )
+ })
+ .unwrap_or(main_content_size);
+
+ // > The content-based minimum size of a flex item is the smaller of its specified size
+ // > suggestion and its content size suggestion if its specified size suggestion exists;
+ // > otherwise, the smaller of its transferred size suggestion and its content size
+ // > suggestion if the element is replaced and its transferred size suggestion exists;
+ // > otherwise its content size suggestion. In all cases, the size is clamped by the maximum
+ // > main size if it’s definite.
+ match (specified_size_suggestion, transferred_size_suggestion) {
+ (Some(specified), _) => specified.min(content_size_suggestion),
+ (_, Some(transferred)) if is_replaced => transferred.min(content_size_suggestion),
+ _ => content_size_suggestion,
}
+ .clamp_below_max(max_size.main)
}
}
diff --git a/components/layout_2020/flow/inline/mod.rs b/components/layout_2020/flow/inline/mod.rs
index 88447a87e33..cc444cc3e7e 100644
--- a/components/layout_2020/flow/inline/mod.rs
+++ b/components/layout_2020/flow/inline/mod.rs
@@ -2389,6 +2389,7 @@ impl<'a> ContentSizesComputation<'a> {
let outer = atomic.outer_inline_content_sizes(
self.layout_context,
self.containing_block_writing_mode,
+ Au::zero,
);
if !inline_formatting_context
diff --git a/components/layout_2020/flow/mod.rs b/components/layout_2020/flow/mod.rs
index d6a647c62cb..81d043e4024 100644
--- a/components/layout_2020/flow/mod.rs
+++ b/components/layout_2020/flow/mod.rs
@@ -366,7 +366,7 @@ fn calculate_inline_content_size_for_block_level_boxes(
BlockLevelBox::OutOfFlowFloatBox(ref mut float_box) => {
let size = float_box
.contents
- .outer_inline_content_sizes(layout_context, writing_mode)
+ .outer_inline_content_sizes(layout_context, writing_mode, Au::zero)
.max(ContentSizes::zero());
let style_box = &float_box.contents.style().get_box();
Some((size, style_box.float, style_box.clear))
@@ -374,9 +374,12 @@ fn calculate_inline_content_size_for_block_level_boxes(
BlockLevelBox::SameFormattingContextBlock {
style, contents, ..
} => {
- let size = sizing::outer_inline(style, writing_mode, || {
- contents.inline_content_sizes(layout_context, style.writing_mode)
- })
+ let size = sizing::outer_inline(
+ style,
+ writing_mode,
+ || contents.inline_content_sizes(layout_context, style.writing_mode),
+ Au::zero,
+ )
.max(ContentSizes::zero());
// A block in the same BFC can overlap floats, it's not moved next to them,
// so we shouldn't add its size to the size of the floats.
@@ -385,7 +388,7 @@ fn calculate_inline_content_size_for_block_level_boxes(
},
BlockLevelBox::Independent(ref mut independent) => {
let size = independent
- .outer_inline_content_sizes(layout_context, writing_mode)
+ .outer_inline_content_sizes(layout_context, writing_mode, Au::zero)
.max(ContentSizes::zero());
Some((size, Float::None, independent.style().get_box().clear))
},
diff --git a/components/layout_2020/formatting_contexts.rs b/components/layout_2020/formatting_contexts.rs
index 43c8427bcec..7138f007dc6 100644
--- a/components/layout_2020/formatting_contexts.rs
+++ b/components/layout_2020/formatting_contexts.rs
@@ -189,23 +189,20 @@ impl IndependentFormattingContext {
&mut self,
layout_context: &LayoutContext,
containing_block_writing_mode: WritingMode,
+ get_auto_minimum: impl FnOnce() -> Au,
) -> ContentSizes {
match self {
- Self::NonReplaced(non_replaced) => {
- let style = &non_replaced.style;
- let content_sizes = &mut non_replaced.content_sizes;
- let contents = &mut non_replaced.contents;
- sizing::outer_inline(style, containing_block_writing_mode, || {
- *content_sizes.get_or_insert_with(|| {
- contents.inline_content_sizes(layout_context, style.writing_mode)
- })
- })
- },
- Self::Replaced(replaced) => {
- sizing::outer_inline(&replaced.style, containing_block_writing_mode, || {
- replaced.contents.inline_content_sizes(&replaced.style)
- })
- },
+ Self::NonReplaced(non_replaced) => non_replaced.outer_inline_content_sizes(
+ layout_context,
+ containing_block_writing_mode,
+ get_auto_minimum,
+ ),
+ Self::Replaced(replaced) => sizing::outer_inline(
+ &replaced.style,
+ containing_block_writing_mode,
+ || replaced.contents.inline_content_sizes(&replaced.style),
+ get_auto_minimum,
+ ),
}
}
}
@@ -246,6 +243,25 @@ impl NonReplacedFormattingContext {
.content_sizes
.get_or_insert_with(|| contents.inline_content_sizes(layout_context, writing_mode))
}
+
+ pub fn outer_inline_content_sizes(
+ &mut self,
+ layout_context: &LayoutContext,
+ containing_block_writing_mode: WritingMode,
+ get_auto_minimum: impl FnOnce() -> Au,
+ ) -> ContentSizes {
+ sizing::outer_inline(
+ &self.style,
+ containing_block_writing_mode,
+ || {
+ *self.content_sizes.get_or_insert_with(|| {
+ self.contents
+ .inline_content_sizes(layout_context, self.style.writing_mode)
+ })
+ },
+ get_auto_minimum,
+ )
+ }
}
impl NonReplacedFormattingContextContents {
diff --git a/components/layout_2020/sizing.rs b/components/layout_2020/sizing.rs
index 9f9b0ec5d90..f35af94c34f 100644
--- a/components/layout_2020/sizing.rs
+++ b/components/layout_2020/sizing.rs
@@ -91,6 +91,7 @@ pub(crate) fn outer_inline(
style: &ComputedValues,
containing_block_writing_mode: WritingMode,
get_content_size: impl FnOnce() -> ContentSizes,
+ get_auto_minimum: impl FnOnce() -> Au,
) -> ContentSizes {
let padding = style.padding(containing_block_writing_mode);
let border = style.border_width(containing_block_writing_mode);
@@ -100,9 +101,11 @@ pub(crate) fn outer_inline(
// for determining intrinsic size contributions.
// https://drafts.csswg.org/css-sizing-3/#min-percentage-contribution
let zero = Length::zero();
- let pb_lengths = border.inline_sum() +
- padding.inline_start.percentage_relative_to(zero) +
- padding.inline_end.percentage_relative_to(zero);
+ let pb_lengths = Au::from(
+ border.inline_sum() +
+ padding.inline_start.percentage_relative_to(zero) +
+ padding.inline_end.percentage_relative_to(zero),
+ );
let mut m_lengths = zero;
if let Some(m) = margin.inline_start.non_auto() {
m_lengths += m.percentage_relative_to(zero)
@@ -123,22 +126,21 @@ pub(crate) fn outer_inline(
.inline
// Percentages for 'min-width' are treated as zero
.percentage_relative_to(zero)
- // FIXME: 'auto' is not zero in Flexbox
- .auto_is(Length::zero);
+ .map(Au::from)
+ .auto_is(get_auto_minimum);
let max_inline_size = style
.max_box_size(containing_block_writing_mode)
.inline
// Percentages for 'max-width' are treated as 'none'
- .and_then(|lp| lp.to_length());
- let clamp = |l: Au| {
- l.clamp_between_extremums(min_inline_size.into(), max_inline_size.map(|t| t.into()))
- };
+ .and_then(|lp| lp.to_length())
+ .map(Au::from);
+ let clamp = |l: Au| l.clamp_between_extremums(min_inline_size, max_inline_size);
let border_box_sizes = match inline_size {
Some(non_auto) => {
let clamped = clamp(non_auto.into());
let border_box_size = match box_sizing {
- BoxSizing::ContentBox => clamped + pb_lengths.into(),
+ BoxSizing::ContentBox => clamped + pb_lengths,
BoxSizing::BorderBox => clamped,
};
ContentSizes {
@@ -149,8 +151,8 @@ pub(crate) fn outer_inline(
None => get_content_size().map(|content_box_size| {
match box_sizing {
// Clamp to 'min-width' and 'max-width', which are sizing the…
- BoxSizing::ContentBox => clamp(content_box_size) + pb_lengths.into(),
- BoxSizing::BorderBox => clamp(content_box_size + pb_lengths.into()),
+ BoxSizing::ContentBox => clamp(content_box_size) + pb_lengths,
+ BoxSizing::BorderBox => clamp(content_box_size + pb_lengths),
}
}),
};
diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json
index 118f0770a06..e537af17ef9 100644
--- a/tests/wpt/meta/MANIFEST.json
+++ b/tests/wpt/meta/MANIFEST.json
@@ -166126,6 +166126,19 @@
{}
]
],
+ "column-flex-child-with-max-width.html": [
+ "b1a6a84ded65341c37d7048c07de2fb5ee9036a9",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"content-height-with-scrollbars.html": [
"1872d5f81d7f9a9fc5ae004f71b63d94b71df19a",
[
diff --git a/tests/wpt/meta/css/css-align/self-alignment/self-align-safe-unsafe-flex-003.html.ini b/tests/wpt/meta/css/css-align/self-alignment/self-align-safe-unsafe-flex-003.html.ini
new file mode 100644
index 00000000000..5abadcfb746
--- /dev/null
+++ b/tests/wpt/meta/css/css-align/self-alignment/self-align-safe-unsafe-flex-003.html.ini
@@ -0,0 +1,2 @@
+[self-align-safe-unsafe-flex-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/align-content-wrap-002.html.ini b/tests/wpt/meta/css/css-flexbox/align-content-wrap-002.html.ini
deleted file mode 100644
index 39c38cc02d4..00000000000
--- a/tests/wpt/meta/css/css-flexbox/align-content-wrap-002.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[align-content-wrap-002.html]
- [.flex-horizontal, .flex-vertical 4]
- expected: FAIL
-
- [.flex-horizontal, .flex-vertical 5]
- expected: FAIL
-
- [.flex-horizontal, .flex-vertical 6]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/align-items-009.html.ini b/tests/wpt/meta/css/css-flexbox/align-items-009.html.ini
deleted file mode 100644
index e458bf92a62..00000000000
--- a/tests/wpt/meta/css/css-flexbox/align-items-009.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[align-items-009.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/align-self-015.html.ini b/tests/wpt/meta/css/css-flexbox/align-self-015.html.ini
deleted file mode 100644
index 8153e4a71ce..00000000000
--- a/tests/wpt/meta/css/css-flexbox/align-self-015.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[align-self-015.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-001.html.ini b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-001.html.ini
index d629409f0b2..a9623e23540 100644
--- a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-001.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-001.html.ini
@@ -13,6 +13,3 @@
[#target > div 6]
expected: FAIL
-
- [#target > div 4]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-006.html.ini b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-006.html.ini
index a723ce303cf..9a794eb40c7 100644
--- a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-006.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-006.html.ini
@@ -1,3 +1,9 @@
[flex-align-baseline-006.html]
[#target > div 3]
expected: FAIL
+
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-007.html.ini b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-007.html.ini
index 83a1091c7d9..0865de28829 100644
--- a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-007.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-007.html.ini
@@ -1,3 +1,9 @@
[flex-align-baseline-007.html]
[#target > div 3]
expected: FAIL
+
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini
index 959542f3d71..2fb4ee173c0 100644
--- a/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/alignment/flex-align-baseline-flex-001.html.ini
@@ -49,3 +49,9 @@
[.target > * 25]
expected: FAIL
+
+ [.target > * 43]
+ expected: FAIL
+
+ [.target > * 47]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/auto-height-column-with-border-and-padding.html.ini b/tests/wpt/meta/css/css-flexbox/auto-height-column-with-border-and-padding.html.ini
new file mode 100644
index 00000000000..83ee363e759
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/auto-height-column-with-border-and-padding.html.ini
@@ -0,0 +1,2 @@
+[auto-height-column-with-border-and-padding.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/box-sizing-001.html.ini b/tests/wpt/meta/css/css-flexbox/box-sizing-001.html.ini
index a1bedc69444..15520422a4d 100644
--- a/tests/wpt/meta/css/css-flexbox/box-sizing-001.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/box-sizing-001.html.ini
@@ -1,9 +1,3 @@
[box-sizing-001.html]
- [.flexbox 10]
- expected: FAIL
-
- [.flexbox 8]
- expected: FAIL
-
- [.flexbox 9]
+ [.flexbox 7]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/box-sizing-min-max-sizes-001.html.ini b/tests/wpt/meta/css/css-flexbox/box-sizing-min-max-sizes-001.html.ini
new file mode 100644
index 00000000000..598ff1b7df4
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/box-sizing-min-max-sizes-001.html.ini
@@ -0,0 +1,3 @@
+[box-sizing-min-max-sizes-001.html]
+ [.flexbox 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/change-column-flex-width.html.ini b/tests/wpt/meta/css/css-flexbox/change-column-flex-width.html.ini
new file mode 100644
index 00000000000..df8814f72bc
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/change-column-flex-width.html.ini
@@ -0,0 +1,3 @@
+[change-column-flex-width.html]
+ [#container 1]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/column-flex-child-with-overflow-scroll.html.ini b/tests/wpt/meta/css/css-flexbox/column-flex-child-with-overflow-scroll.html.ini
new file mode 100644
index 00000000000..80e3e8f8829
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/column-flex-child-with-overflow-scroll.html.ini
@@ -0,0 +1,6 @@
+[column-flex-child-with-overflow-scroll.html]
+ [.flexbox 1]
+ expected: FAIL
+
+ [.flexbox 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/columns-height-set-via-top-bottom.html.ini b/tests/wpt/meta/css/css-flexbox/columns-height-set-via-top-bottom.html.ini
index 225caf3afdb..3d86d2f26c5 100644
--- a/tests/wpt/meta/css/css-flexbox/columns-height-set-via-top-bottom.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/columns-height-set-via-top-bottom.html.ini
@@ -1,7 +1,3 @@
[columns-height-set-via-top-bottom.html]
- [.flexbox 1]
- expected: FAIL
-
[.flexbox 2]
expected: FAIL
-
diff --git a/tests/wpt/meta/css/css-flexbox/fieldset-as-container-justify-center.tentative.html.ini b/tests/wpt/meta/css/css-flexbox/fieldset-as-container-justify-center.tentative.html.ini
deleted file mode 100644
index 3363b8e7b91..00000000000
--- a/tests/wpt/meta/css/css-flexbox/fieldset-as-container-justify-center.tentative.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[fieldset-as-container-justify-center.tentative.html]
- [.item 1]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini b/tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini
deleted file mode 100644
index 9a99c2d9f53..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-aspect-ratio-img-column-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-004.html.ini b/tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-004.html.ini
deleted file mode 100644
index c62249a6aba..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-aspect-ratio-img-column-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-aspect-ratio-img-column-004.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-basis-010.html.ini b/tests/wpt/meta/css/css-flexbox/flex-basis-010.html.ini
deleted file mode 100644
index b7a615c78ee..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-basis-010.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-basis-010.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-basis-011.html.ini b/tests/wpt/meta/css/css-flexbox/flex-basis-011.html.ini
deleted file mode 100644
index 03b30d6b482..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-basis-011.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-basis-011.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-basis-intrinsics-001.html.ini b/tests/wpt/meta/css/css-flexbox/flex-basis-intrinsics-001.html.ini
index c7592731081..375e94113f2 100644
--- a/tests/wpt/meta/css/css-flexbox/flex-basis-intrinsics-001.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/flex-basis-intrinsics-001.html.ini
@@ -25,3 +25,6 @@
[.flex-item 11]
expected: FAIL
+
+ [.flex-item 12]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-column-relayout-assert.html.ini b/tests/wpt/meta/css/css-flexbox/flex-column-relayout-assert.html.ini
new file mode 100644
index 00000000000..e9814e63a00
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-column-relayout-assert.html.ini
@@ -0,0 +1,3 @@
+[flex-column-relayout-assert.html]
+ [.flexbox 1]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-direction-column-overlap-001.html.ini b/tests/wpt/meta/css/css-flexbox/flex-direction-column-overlap-001.html.ini
new file mode 100644
index 00000000000..ac4e87af90d
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-direction-column-overlap-001.html.ini
@@ -0,0 +1,3 @@
+[flex-direction-column-overlap-001.html]
+ [#container 1]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-factor-less-than-one.html.ini b/tests/wpt/meta/css/css-flexbox/flex-factor-less-than-one.html.ini
index b854b40129e..50743c27f97 100644
--- a/tests/wpt/meta/css/css-flexbox/flex-factor-less-than-one.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/flex-factor-less-than-one.html.ini
@@ -2,23 +2,23 @@
[.flexbox 5]
expected: FAIL
- [.flexbox 7]
+ [.flexbox 8]
expected: FAIL
- [.flexbox 3]
+ [.flexbox 17]
expected: FAIL
- [.flexbox 8]
+ [.flexbox 14]
expected: FAIL
- [.flexbox 16]
+ [.flexbox 4]
expected: FAIL
- [.flexbox 17]
+ [.flexbox 9]
expected: FAIL
- [.flexbox 14]
+ [.flexbox 13]
expected: FAIL
- [.flexbox 12]
+ [.flexbox 18]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-flow-007.html.ini b/tests/wpt/meta/css/css-flexbox/flex-flow-007.html.ini
deleted file mode 100644
index 330189cf79c..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-flow-007.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-flow-007.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-flow-008.html.ini b/tests/wpt/meta/css/css-flexbox/flex-flow-008.html.ini
deleted file mode 100644
index f90a0f438c0..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-flow-008.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-flow-008.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-flow-009.html.ini b/tests/wpt/meta/css/css-flexbox/flex-flow-009.html.ini
deleted file mode 100644
index 30abebe2bf8..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-flow-009.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-flow-009.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-flow-010.html.ini b/tests/wpt/meta/css/css-flexbox/flex-flow-010.html.ini
deleted file mode 100644
index f1c16fc859e..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-flow-010.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-flow-010.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-flow-011.html.ini b/tests/wpt/meta/css/css-flexbox/flex-flow-011.html.ini
deleted file mode 100644
index 3987cd6fa46..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-flow-011.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-flow-011.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-flow-012.html.ini b/tests/wpt/meta/css/css-flexbox/flex-flow-012.html.ini
deleted file mode 100644
index a2965c2da3c..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-flow-012.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-flow-012.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-flow-013.html.ini b/tests/wpt/meta/css/css-flexbox/flex-flow-013.html.ini
index fe74f4f7bd3..959eaa7d215 100644
--- a/tests/wpt/meta/css/css-flexbox/flex-flow-013.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/flex-flow-013.html.ini
@@ -8,12 +8,6 @@
[.flexbox 4]
expected: FAIL
- [.flexbox 5]
- expected: FAIL
-
- [.flexbox 6]
- expected: FAIL
-
[.flexbox 7]
expected: FAIL
@@ -28,3 +22,9 @@
[.flexbox 3]
expected: FAIL
+
+ [.flexbox 9]
+ expected: FAIL
+
+ [.flexbox 10]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-height-min-content.html.ini b/tests/wpt/meta/css/css-flexbox/flex-height-min-content.html.ini
new file mode 100644
index 00000000000..39676bbfc93
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[flex-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-item-compressible-002.html.ini b/tests/wpt/meta/css/css-flexbox/flex-item-compressible-002.html.ini
index 9d3189f7b35..6b610b8589e 100644
--- a/tests/wpt/meta/css/css-flexbox/flex-item-compressible-002.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/flex-item-compressible-002.html.ini
@@ -23,18 +23,6 @@
[.flexbox 5]
expected: FAIL
- [.flexbox 6]
- expected: FAIL
-
- [.flexbox 7]
- expected: FAIL
-
- [.flexbox 1]
- expected: FAIL
-
- [.flexbox 2]
- expected: FAIL
-
[.flexbox 3]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-item-contains-strict.html.ini b/tests/wpt/meta/css/css-flexbox/flex-item-contains-strict.html.ini
index 101816d35fb..17ab2c3a118 100644
--- a/tests/wpt/meta/css/css-flexbox/flex-item-contains-strict.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/flex-item-contains-strict.html.ini
@@ -1,12 +1,18 @@
[flex-item-contains-strict.html]
- [.inline-flex 1]
+ [.inline-flex 2]
expected: FAIL
- [.inline-flex 2]
+ [.inline-flex 6]
expected: FAIL
- [.inline-flex 5]
+ [.inline-flex 3]
expected: FAIL
- [.inline-flex 6]
+ [.inline-flex 7]
+ expected: FAIL
+
+ [.inline-flex 1]
+ expected: FAIL
+
+ [.inline-flex 5]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-margin-no-collapse.html.ini b/tests/wpt/meta/css/css-flexbox/flex-margin-no-collapse.html.ini
deleted file mode 100644
index e50c94ca20a..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-margin-no-collapse.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-margin-no-collapse.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini
new file mode 100644
index 00000000000..ce42094fb6e
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-002.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini
deleted file mode 100644
index ac4180f61a7..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-height-flex-items-004.xht]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini
deleted file mode 100644
index ca977d8203d..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-height-flex-items-007.xht]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini
deleted file mode 100644
index 06b866be1a0..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-height-flex-items-008.xht]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-012.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-012.html.ini
deleted file mode 100644
index d44903a09de..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-012.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[flex-minimum-height-flex-items-012.html]
- [.flexbox 1]
- expected: FAIL
-
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-014.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-014.html.ini
deleted file mode 100644
index bcb5b133a34..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-014.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-height-flex-items-014.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini
new file mode 100644
index 00000000000..959661fa8c0
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-019.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-022.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-022.html.ini
deleted file mode 100644
index 3e8f11fced8..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-022.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-height-flex-items-022.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-024.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-024.html.ini
new file mode 100644
index 00000000000..0562c3f3605
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-024.html.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-024.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-026.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-026.html.ini
deleted file mode 100644
index cadef46110d..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-026.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-height-flex-items-026.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-028.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-028.html.ini
deleted file mode 100644
index 89dfb9f5ece..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-028.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-height-flex-items-028.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-030.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-030.html.ini
new file mode 100644
index 00000000000..52441ddb68b
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-minimum-height-flex-items-030.html.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-030.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-size-001.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-size-001.html.ini
index 9d15b554a94..b9fd02ebde7 100644
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-size-001.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/flex-minimum-size-001.html.ini
@@ -1,3 +1,6 @@
[flex-minimum-size-001.html]
[.flexbox, .inline-flexbox 2]
expected: FAIL
+
+ [.flexbox, .inline-flexbox 3]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-minimum-width-flex-items-015.html.ini b/tests/wpt/meta/css/css-flexbox/flex-minimum-width-flex-items-015.html.ini
deleted file mode 100644
index d011fb8fc5d..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-minimum-width-flex-items-015.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-minimum-width-flex-items-015.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini b/tests/wpt/meta/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini
index 523d5da3d96..e219bec7f2d 100644
--- a/tests/wpt/meta/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html.ini
@@ -1,7 +1,4 @@
[flex-one-sets-flex-basis-to-zero-px.html]
- [.flexbox 3]
- expected: FAIL
-
[.flexbox 4]
expected: FAIL
@@ -10,3 +7,9 @@
[.flexbox 6]
expected: FAIL
+
+ [.flexbox 1]
+ expected: FAIL
+
+ [.flexbox 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-outer-flexbox-column-recalculate-height-on-resize-001.html.ini b/tests/wpt/meta/css/css-flexbox/flex-outer-flexbox-column-recalculate-height-on-resize-001.html.ini
new file mode 100644
index 00000000000..892d5256837
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-outer-flexbox-column-recalculate-height-on-resize-001.html.ini
@@ -0,0 +1,3 @@
+[flex-outer-flexbox-column-recalculate-height-on-resize-001.html]
+ [.OuterFlexbox 1]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-wrap-002.html.ini b/tests/wpt/meta/css/css-flexbox/flex-wrap-002.html.ini
deleted file mode 100644
index 4de5819c0b2..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flex-wrap-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flex-wrap-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-align-self-stretch-vert-001.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-align-self-stretch-vert-001.html.ini
deleted file mode 100644
index 099b439b271..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-align-self-stretch-vert-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-align-self-stretch-vert-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002a.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002a.html.ini
deleted file mode 100644
index 8cc9d834de2..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002a.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-break-request-vert-002a.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002b.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002b.html.ini
deleted file mode 100644
index 6b8f967725e..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-break-request-vert-002b.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-break-request-vert-002b.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-005.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-005.html.ini
deleted file mode 100644
index 114ce712ac4..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-005.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-definite-sizes-005.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-006.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-006.html.ini
new file mode 100644
index 00000000000..b9ad99f46e2
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-definite-sizes-006.html.ini
@@ -0,0 +1,2 @@
+[flexbox-definite-sizes-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004a.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004a.html.ini
new file mode 100644
index 00000000000..07ae8a1f0d8
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004a.html.ini
@@ -0,0 +1,2 @@
+[flexbox-flex-basis-content-004a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004b.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004b.html.ini
new file mode 100644
index 00000000000..473babe7d40
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-flex-basis-content-004b.html.ini
@@ -0,0 +1,2 @@
+[flexbox-flex-basis-content-004b.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-percentage-ignored.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-percentage-ignored.html.ini
new file mode 100644
index 00000000000..9ef8a2d553b
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-percentage-ignored.html.ini
@@ -0,0 +1,2 @@
+[flexbox-flex-direction-column-percentage-ignored.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-reverse.htm.ini b/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-reverse.htm.ini
deleted file mode 100644
index 4ad5191c809..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column-reverse.htm.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-flex-direction-column-reverse.htm]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column.htm.ini b/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column.htm.ini
deleted file mode 100644
index 4c11499dd7a..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-flex-direction-column.htm.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-flex-direction-column.htm]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-001.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-001.html.ini
deleted file mode 100644
index 268e9474749..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-flex-flow-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-002.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-002.html.ini
deleted file mode 100644
index 7e6594850eb..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-flex-flow-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-flex-flow-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-001.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-001.html.ini
deleted file mode 100644
index 5c0f0370da5..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-overflow-vert-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-002.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-002.html.ini
deleted file mode 100644
index c87b85e2596..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-overflow-vert-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-003.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-003.html.ini
deleted file mode 100644
index 02622e0b6d6..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-003.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-overflow-vert-003.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-004.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-004.html.ini
deleted file mode 100644
index 2ba772d0507..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-overflow-vert-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-overflow-vert-004.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-001.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-001.html.ini
deleted file mode 100644
index 4da5307bbfa..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox-writing-mode-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap-reverse.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap-reverse.html.ini
deleted file mode 100644
index ab5ee513a94..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap-reverse.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox_flow-column-reverse-wrap-reverse.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap.html.ini
deleted file mode 100644
index 193375c3e4c..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox_flow-column-reverse-wrap.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox_flow-column-reverse-wrap.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox_order.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox_order.html.ini
deleted file mode 100644
index 81c44a1f84e..00000000000
--- a/tests/wpt/meta/css/css-flexbox/flexbox_order.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[flexbox_order.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-002-lr.html.ini b/tests/wpt/meta/css/css-flexbox/gap-002-lr.html.ini
deleted file mode 100644
index 19e0fe80e00..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-002-lr.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-002-lr.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-002-ltr.html.ini b/tests/wpt/meta/css/css-flexbox/gap-002-ltr.html.ini
deleted file mode 100644
index 5a85eb91c13..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-002-ltr.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-002-ltr.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-002-rl.html.ini b/tests/wpt/meta/css/css-flexbox/gap-002-rl.html.ini
deleted file mode 100644
index 63aeeea2535..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-002-rl.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-002-rl.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-002-rtl.html.ini b/tests/wpt/meta/css/css-flexbox/gap-002-rtl.html.ini
deleted file mode 100644
index 63b80da1951..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-002-rtl.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-002-rtl.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-003-lr.html.ini b/tests/wpt/meta/css/css-flexbox/gap-003-lr.html.ini
deleted file mode 100644
index 771a5e7aff5..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-003-lr.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-003-lr.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-003-rl.html.ini b/tests/wpt/meta/css/css-flexbox/gap-003-rl.html.ini
deleted file mode 100644
index 6bc3fda7303..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-003-rl.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-003-rl.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-005-lr.html.ini b/tests/wpt/meta/css/css-flexbox/gap-005-lr.html.ini
deleted file mode 100644
index 28f325c2436..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-005-lr.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-005-lr.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-005-ltr.html.ini b/tests/wpt/meta/css/css-flexbox/gap-005-ltr.html.ini
deleted file mode 100644
index 3e25a242af5..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-005-ltr.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-005-ltr.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-005-rl.html.ini b/tests/wpt/meta/css/css-flexbox/gap-005-rl.html.ini
deleted file mode 100644
index 653612df4dd..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-005-rl.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-005-rl.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/gap-005-rtl.html.ini b/tests/wpt/meta/css/css-flexbox/gap-005-rtl.html.ini
deleted file mode 100644
index 04dd81cbf28..00000000000
--- a/tests/wpt/meta/css/css-flexbox/gap-005-rtl.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[gap-005-rtl.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002.html.ini b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002.html.ini
index ff6b87c71d2..17b81e4a8d4 100644
--- a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002.html.ini
@@ -8,11 +8,26 @@
[.flexbox > img 10]
expected: FAIL
- [.flexbox > img 7]
+ [.flexbox > img 1]
expected: FAIL
- [.flexbox > img 6]
+ [.flexbox > img 2]
expected: FAIL
- [.flexbox > img 3]
+ [.flexbox > img 5]
+ expected: FAIL
+
+ [.flexbox > img 8]
+ expected: FAIL
+
+ [.flexbox > img 9]
+ expected: FAIL
+
+ [.flexbox > img 12]
+ expected: FAIL
+
+ [.flexbox > img 13]
+ expected: FAIL
+
+ [.flexbox > img 16]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002v.html.ini b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002v.html.ini
index f110c6de4b0..6045f795c23 100644
--- a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002v.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-002v.html.ini
@@ -8,11 +8,26 @@
[.flexbox > img 10]
expected: FAIL
- [.flexbox > img 7]
+ [.flexbox > img 1]
expected: FAIL
- [.flexbox > img 6]
+ [.flexbox > img 2]
expected: FAIL
- [.flexbox > img 3]
+ [.flexbox > img 5]
+ expected: FAIL
+
+ [.flexbox > img 8]
+ expected: FAIL
+
+ [.flexbox > img 9]
+ expected: FAIL
+
+ [.flexbox > img 12]
+ expected: FAIL
+
+ [.flexbox > img 13]
+ expected: FAIL
+
+ [.flexbox > img 16]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004.html.ini b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004.html.ini
index b454f4429ce..cf6aa403b5c 100644
--- a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004.html.ini
@@ -1,7 +1,4 @@
[image-as-flexitem-size-004.html]
- [.flexbox > img 15]
- expected: FAIL
-
[.flexbox > img 10]
expected: FAIL
@@ -14,9 +11,6 @@
[.flexbox > img 5]
expected: FAIL
- [.flexbox > img 4]
- expected: FAIL
-
[.flexbox > img 7]
expected: FAIL
@@ -26,20 +20,17 @@
[.flexbox > img 1]
expected: FAIL
- [.flexbox > img 3]
- expected: FAIL
-
- [.flexbox > img 14]
+ [.flexbox > img 12]
expected: FAIL
- [.flexbox > img 12]
+ [.flexbox > img 9]
expected: FAIL
- [.flexbox > img 18]
+ [.flexbox > img 2]
expected: FAIL
- [.flexbox > img 9]
+ [.flexbox > img 11]
expected: FAIL
- [.flexbox > img 2]
+ [.flexbox > img 16]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004v.html.ini b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004v.html.ini
index 51c00c3efb0..ef5e3556760 100644
--- a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004v.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-004v.html.ini
@@ -1,7 +1,4 @@
[image-as-flexitem-size-004v.html]
- [.flexbox > img 15]
- expected: FAIL
-
[.flexbox > img 10]
expected: FAIL
@@ -14,9 +11,6 @@
[.flexbox > img 5]
expected: FAIL
- [.flexbox > img 4]
- expected: FAIL
-
[.flexbox > img 7]
expected: FAIL
@@ -26,20 +20,17 @@
[.flexbox > img 1]
expected: FAIL
- [.flexbox > img 3]
- expected: FAIL
-
- [.flexbox > img 14]
+ [.flexbox > img 12]
expected: FAIL
- [.flexbox > img 12]
+ [.flexbox > img 9]
expected: FAIL
- [.flexbox > img 18]
+ [.flexbox > img 2]
expected: FAIL
- [.flexbox > img 9]
+ [.flexbox > img 11]
expected: FAIL
- [.flexbox > img 2]
+ [.flexbox > img 16]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006.html.ini b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006.html.ini
index 076b1aaaec1..06abc6d01b2 100644
--- a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006.html.ini
@@ -2,21 +2,6 @@
[.flexbox > img 15]
expected: FAIL
- [.flexbox > img 14]
- expected: FAIL
-
- [.flexbox > img 17]
- expected: FAIL
-
- [.flexbox > img 12]
- expected: FAIL
-
- [.flexbox > img 18]
- expected: FAIL
-
- [.flexbox > img 9]
- expected: FAIL
-
[.flexbox > img 8]
expected: FAIL
@@ -37,18 +22,3 @@
[.flexbox > img 3]
expected: FAIL
-
- [.flexbox > img 2]
- expected: FAIL
-
- [.flexbox > img 16]
- expected: FAIL
-
- [.flexbox > img 11]
- expected: FAIL
-
- [.flexbox > img 10]
- expected: FAIL
-
- [.flexbox > img 13]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006v.html.ini b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006v.html.ini
index 43cd6a991d8..8a9f569d366 100644
--- a/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006v.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/image-as-flexitem-size-006v.html.ini
@@ -1,34 +1,7 @@
[image-as-flexitem-size-006v.html]
- [.flexbox > img 10]
- expected: FAIL
-
- [.flexbox > img 11]
- expected: FAIL
-
- [.flexbox > img 13]
- expected: FAIL
-
- [.flexbox > img 10]
- expected: FAIL
-
[.flexbox > img 15]
expected: FAIL
- [.flexbox > img 14]
- expected: FAIL
-
- [.flexbox > img 17]
- expected: FAIL
-
- [.flexbox > img 12]
- expected: FAIL
-
- [.flexbox > img 18]
- expected: FAIL
-
- [.flexbox > img 9]
- expected: FAIL
-
[.flexbox > img 8]
expected: FAIL
@@ -49,9 +22,3 @@
[.flexbox > img 3]
expected: FAIL
-
- [.flexbox > img 2]
- expected: FAIL
-
- [.flexbox > img 16]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/intrinsic-size/col-wrap-009.html.ini b/tests/wpt/meta/css/css-flexbox/intrinsic-size/col-wrap-009.html.ini
new file mode 100644
index 00000000000..ebcc481649f
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/intrinsic-size/col-wrap-009.html.ini
@@ -0,0 +1,2 @@
+[col-wrap-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/item-with-max-height-and-scrollbar.html.ini b/tests/wpt/meta/css/css-flexbox/item-with-max-height-and-scrollbar.html.ini
new file mode 100644
index 00000000000..58c2f7fbcf5
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/item-with-max-height-and-scrollbar.html.ini
@@ -0,0 +1,2 @@
+[item-with-max-height-and-scrollbar.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/justify-content-006.html.ini b/tests/wpt/meta/css/css-flexbox/justify-content-006.html.ini
deleted file mode 100644
index eb5dadc9bc9..00000000000
--- a/tests/wpt/meta/css/css-flexbox/justify-content-006.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[justify-content-006.html]
- [.middle > div 1]
- expected: FAIL
-
diff --git a/tests/wpt/meta/css/css-flexbox/layout-algorithm_algo-cross-line-002.html.ini b/tests/wpt/meta/css/css-flexbox/layout-algorithm_algo-cross-line-002.html.ini
deleted file mode 100644
index e724aaff1ff..00000000000
--- a/tests/wpt/meta/css/css-flexbox/layout-algorithm_algo-cross-line-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[layout-algorithm_algo-cross-line-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/orthogonal-writing-modes-and-intrinsic-sizing.html.ini b/tests/wpt/meta/css/css-flexbox/orthogonal-writing-modes-and-intrinsic-sizing.html.ini
new file mode 100644
index 00000000000..61e8a9048fa
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/orthogonal-writing-modes-and-intrinsic-sizing.html.ini
@@ -0,0 +1,3 @@
+[orthogonal-writing-modes-and-intrinsic-sizing.html]
+ [.flexbox 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/overflow-auto-006.html.ini b/tests/wpt/meta/css/css-flexbox/overflow-auto-006.html.ini
new file mode 100644
index 00000000000..b40844fd0cf
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/overflow-auto-006.html.ini
@@ -0,0 +1,12 @@
+[overflow-auto-006.html]
+ [.flexbox, .inline-flexbox 7]
+ expected: FAIL
+
+ [.flexbox, .inline-flexbox 8]
+ expected: FAIL
+
+ [.flexbox, .inline-flexbox 9]
+ expected: FAIL
+
+ [.flexbox, .inline-flexbox 10]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/overflow-auto-008.html.ini b/tests/wpt/meta/css/css-flexbox/overflow-auto-008.html.ini
new file mode 100644
index 00000000000..0e380912ae8
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/overflow-auto-008.html.ini
@@ -0,0 +1,3 @@
+[overflow-auto-008.html]
+ [hbox dimensions]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-000.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-000.html.ini
index 04066312687..d6c8326668e 100644
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-000.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/percentage-heights-000.html.ini
@@ -7,12 +7,3 @@
[.flexbox 6]
expected: FAIL
-
- [.flexbox 1]
- expected: FAIL
-
- [.flexbox 2]
- expected: FAIL
-
- [.flexbox 3]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-002.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-002.html.ini
deleted file mode 100644
index 8cccb4a6841..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[percentage-heights-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-003.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-003.html.ini
index 17cc488a50e..f9bedcb7712 100644
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-003.html.ini
+++ b/tests/wpt/meta/css/css-flexbox/percentage-heights-003.html.ini
@@ -1,6 +1,3 @@
[percentage-heights-003.html]
- [.flexbox 2]
- expected: FAIL
-
- [.flexbox 3]
+ [.flexbox 6]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-004.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-004.html.ini
new file mode 100644
index 00000000000..988af23e1f6
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/percentage-heights-004.html.ini
@@ -0,0 +1,2 @@
+[percentage-heights-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-005.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-005.html.ini
new file mode 100644
index 00000000000..43dbfda9eb4
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/percentage-heights-005.html.ini
@@ -0,0 +1,2 @@
+[percentage-heights-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-006.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-006.html.ini
deleted file mode 100644
index 52dd6f54795..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-006.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[percentage-heights-006.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-007.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-007.html.ini
deleted file mode 100644
index 79181470f1c..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-007.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[percentage-heights-007.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-008.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-008.html.ini
new file mode 100644
index 00000000000..95ad315960d
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/percentage-heights-008.html.ini
@@ -0,0 +1,2 @@
+[percentage-heights-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-016.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-016.html.ini
deleted file mode 100644
index 56d3527440a..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-016.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[percentage-heights-016.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-017.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-017.html.ini
deleted file mode 100644
index 03e616b0ae4..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-017.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[percentage-heights-017.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-018.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-018.html.ini
deleted file mode 100644
index ea9bef8beed..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-018.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[percentage-heights-018.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-heights-019.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-heights-019.html.ini
deleted file mode 100644
index e6b2ec9beb5..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-heights-019.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[percentage-heights-019.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-margins-001.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-margins-001.html.ini
deleted file mode 100644
index 2527dc22c4b..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-margins-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[percentage-margins-001.html]
- [.flexbox 1]
- expected: FAIL
-
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-max-height-004.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-max-height-004.html.ini
new file mode 100644
index 00000000000..8514e2647bf
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/percentage-max-height-004.html.ini
@@ -0,0 +1,2 @@
+[percentage-max-height-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-max-width-cross-axis.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-max-width-cross-axis.html.ini
deleted file mode 100644
index b5c6e7a37f8..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-max-width-cross-axis.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[percentage-max-width-cross-axis.html]
- [.flexbox 2]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-size-quirks.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-size-quirks.html.ini
deleted file mode 100644
index f8950451ec2..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-size-quirks.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[percentage-size-quirks.html]
- [.flexbox 8]
- expected: FAIL
-
- [.flexbox 3]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/percentage-size.html.ini b/tests/wpt/meta/css/css-flexbox/percentage-size.html.ini
deleted file mode 100644
index 7b73cea1696..00000000000
--- a/tests/wpt/meta/css/css-flexbox/percentage-size.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[percentage-size.html]
- [.flexbox 8]
- expected: FAIL
-
- [.flexbox 3]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-001.html.ini b/tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-001.html.ini
new file mode 100644
index 00000000000..4c9cbcc8ff4
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-001.html.ini
@@ -0,0 +1,2 @@
+[stretch-obeys-min-max-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-003.html.ini b/tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-003.html.ini
new file mode 100644
index 00000000000..c3b53364e9b
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/stretch-obeys-min-max-003.html.ini
@@ -0,0 +1,2 @@
+[stretch-obeys-min-max-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/stretched-child-shrink-on-relayout.html.ini b/tests/wpt/meta/css/css-flexbox/stretched-child-shrink-on-relayout.html.ini
deleted file mode 100644
index ceff1bfa619..00000000000
--- a/tests/wpt/meta/css/css-flexbox/stretched-child-shrink-on-relayout.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[stretched-child-shrink-on-relayout.html]
- [.flexbox 4]
- expected: FAIL
-
- [.flexbox 6]
- expected: FAIL
-
- [.flexbox 2]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/table-as-item-change-cell.html.ini b/tests/wpt/meta/css/css-flexbox/table-as-item-change-cell.html.ini
new file mode 100644
index 00000000000..e8672a3bd87
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/table-as-item-change-cell.html.ini
@@ -0,0 +1,2 @@
+[table-as-item-change-cell.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/table-as-item-specified-height.html.ini b/tests/wpt/meta/css/css-flexbox/table-as-item-specified-height.html.ini
deleted file mode 100644
index 1c5a7778fc0..00000000000
--- a/tests/wpt/meta/css/css-flexbox/table-as-item-specified-height.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[table-as-item-specified-height.html]
- expected: FAIL
diff --git a/tests/wpt/tests/css/css-flexbox/column-flex-child-with-max-width.html b/tests/wpt/tests/css/css-flexbox/column-flex-child-with-max-width.html
new file mode 100644
index 00000000000..b1a6a84ded6
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/column-flex-child-with-max-width.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<title>Item in column flex container with max-width</title>
+<link rel="author" title="Oriol Brufau" href="obrufau@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-direction-property">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-items">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#align-items-property">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="assert" content="Contents of a flex item with max-width should be laid out within the decreased containing block.">
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width: 100px; height: 100px; background: red">
+ <div style="display: flex; flex-direction: column; width: 200px; height: 100px">
+ <div style="align-self: start; max-width: 100px">
+ <div style="display: flow-root; background: green">
+ <div style="float: left; width: 100px; height: 50px"></div>
+ <div style="float: left; width: 100px; height: 50px"></div>
+ </div>
+ </div>
+ </div>
+</div>