From ca10b917cd6caa86442127493e8b106c3427a88b Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 22 Jul 2020 10:52:11 -0700 Subject: [PATCH] Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * The `clear` property is only respected on floats, not on other elements; i.e. regular boxes can't clear past floats yet. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec. * Floats don't respect negative margins yet. * Floats are painted in the same order as regular content, contra spec. --- components/config/prefs.rs | 3 + components/layout_2020/display_list/mod.rs | 4 + .../display_list/stacking_context.rs | 29 ++- components/layout_2020/flow/float.rs | 212 ++++++++++++++++-- components/layout_2020/flow/inline.rs | 35 ++- components/layout_2020/flow/mod.rs | 69 ++++-- components/layout_2020/flow/root.rs | 2 + components/layout_2020/fragments.rs | 30 ++- components/layout_2020/geom.rs | 22 ++ components/layout_2020/positioned.rs | 2 +- components/layout_2020/tests/floats.rs | 46 ++-- .../style/properties/longhands/box.mako.rs | 5 +- components/style/values/computed/length.rs | 9 +- resources/prefs.json | 1 + .../metadata-layout-2020/css/CSS2/__dir__.ini | 1 + .../css/CSS2/css1/c414-flt-fit-006.xht.ini | 2 - .../css/CSS2/css1/c414-flt-wrap-001.xht.ini | 2 - .../css/CSS2/css1/c5525-fltwidth-001.xht.ini | 2 + .../floats-clear/adjacent-floats-001.xht.ini | 2 - ...float-nested-forced-clearance-004.html.ini | 2 + .../clear-001.xht.ini} | 2 +- .../{clear-004.xht.ini => clear-005.xht.ini} | 2 +- .../clear-clearance-calculation-004.xht.ini | 2 - .../clear-default-inheritance-001.xht.ini | 2 - .../CSS2/floats-clear/clear-float-001.xht.ini | 2 - .../CSS2/floats-clear/clear-float-002.xht.ini | 2 - .../CSS2/floats-clear/clear-float-003.xht.ini | 2 - .../CSS2/floats-clear/clear-float-004.xht.ini | 2 - .../CSS2/floats-clear/clear-float-005.xht.ini | 2 - .../CSS2/floats-clear/clear-float-006.xht.ini | 2 - .../CSS2/floats-clear/clear-float-007.xht.ini | 2 - .../CSS2/floats-clear/clear-float-008.xht.ini | 2 - .../CSS2/floats-clear/clear-float-009.xht.ini | 2 - .../floats-clear/clear-initial-001.xht.ini | 2 - .../clear-on-parent-and-child.html.ini | 2 - ...-parent-with-margins-no-clearance.html.ini | 2 - .../floats-clear/clear-on-parent.html.ini | 2 + ...-margin-after-cleared-empty-block.html.ini | 2 + .../float-applies-to-001a.xht.ini | 2 - .../float-applies-to-004a.xht.ini | 2 - .../floats-clear/float-applies-to-005.xht.ini | 2 - .../floats-clear/float-applies-to-006.xht.ini | 2 - .../floats-clear/float-applies-to-007.xht.ini | 2 - .../floats-clear/float-applies-to-009.xht.ini | 2 - .../floats-clear/float-applies-to-012.xht.ini | 2 - .../floats-clear/float-applies-to-015.xht.ini | 2 - .../float-non-replaced-height-001.xht.ini | 2 - .../float-non-replaced-width-001.xht.ini | 2 - .../float-non-replaced-width-003.xht.ini | 2 - .../float-non-replaced-width-004.xht.ini | 2 - .../float-non-replaced-width-005.xht.ini | 2 - .../float-replaced-height-001.xht.ini | 2 + .../float-replaced-height-002.xht.ini | 2 + .../float-replaced-height-003.xht.ini | 2 + .../float-replaced-width-003.xht.ini | 2 - .../float-replaced-width-004.xht.ini | 2 - .../float-replaced-width-006.xht.ini | 2 - .../float-replaced-width-011.xht.ini | 2 - .../css/CSS2/floats-clear/floats-003.xht.ini | 2 - .../css/CSS2/floats-clear/floats-004.xht.ini | 2 - .../css/CSS2/floats-clear/floats-007.xht.ini | 2 - .../css/CSS2/floats-clear/floats-008.xht.ini | 2 - .../css/CSS2/floats-clear/floats-009.xht.ini | 2 - .../css/CSS2/floats-clear/floats-023.xht.ini | 2 - .../css/CSS2/floats-clear/floats-024.xht.ini | 2 - .../css/CSS2/floats-clear/floats-025.xht.ini | 2 - .../css/CSS2/floats-clear/floats-028.xht.ini | 2 - .../css/CSS2/floats-clear/floats-041.xht.ini | 2 - .../css/CSS2/floats-clear/floats-043.xht.ini | 2 - ...{floats-001.xht.ini => floats-118.xht.ini} | 2 +- .../css/CSS2/floats-clear/floats-121.xht.ini | 2 - .../css/CSS2/floats-clear/floats-123.xht.ini | 2 - ...{floats-002.xht.ini => floats-132.xht.ini} | 2 +- .../css/CSS2/floats-clear/floats-135.xht.ini | 2 - .../{clear-002.xht.ini => floats-139.xht.ini} | 2 +- .../css/CSS2/floats-clear/floats-141.xht.ini | 2 - .../css/CSS2/floats-clear/floats-146.xht.ini | 2 - .../css/CSS2/floats-clear/floats-147.xht.ini | 2 - .../CSS2/floats-clear/floats-bfc-001.xht.ini | 2 + .../floats-clear/margin-collapse-018.xht.ini | 2 + .../floats-clear/margin-collapse-027.xht.ini | 2 + .../floats-clear/margin-collapse-165.xht.ini | 2 - .../floats-clear/margin-collapse-166.xht.ini | 2 - ...-to-large-margin-after-left-right.html.ini | 2 - .../no-clearance-due-to-large-margin.html.ini | 2 + .../CSS2/floats/float-nowrap-3-ref.html.ini | 2 - .../css/CSS2/floats/float-nowrap-6.html.ini | 2 + .../floats-in-table-caption-001.html.ini | 2 + .../floats-placement-vertical-001a.xht.ini | 2 + .../floats-placement-vertical-001b.xht.ini | 2 + .../floats-placement-vertical-001c.xht.ini | 2 + .../floats-placement-vertical-003.xht.ini | 2 + .../floats-rule3-outside-left-001.xht.ini | 2 - .../floats-rule3-outside-right-001.xht.ini | 2 - .../floats-wrap-bfc-outside-001.xht.ini | 2 - ...negative-margin-float-positioning.html.ini | 2 - .../inline-negative-margin-001.html.ini | 27 +++ .../CSS2/lists/list-style-image-005.xht.ini | 2 + .../margin-collapse-007.xht.ini | 2 - .../margin-collapse-min-height-001.xht.ini | 2 - ...lock-formatting-context-height-001.xht.ini | 2 + ...lock-formatting-context-height-002.xht.ini | 2 + .../block-formatting-contexts-008.xht.ini | 2 - .../block-formatting-contexts-016.xht.ini | 2 - .../block-non-replaced-height-011.xht.ini | 2 - .../CSS2/normal-flow/max-width-106.xht.ini | 2 + .../CSS2/normal-flow/min-height-106.xht.ini | 2 + .../width-non-replaced-inline-001.xht.ini | 2 + .../css/CSS2/positioning/abspos-028.xht.ini | 2 - .../positioning/positioning-float-002.xht.ini | 2 - .../css/CSS2/zindex/stack-floats-003.xht.ini | 2 + .../css/CSS2/zindex/stack-floats-004.xht.ini | 2 + .../animation-delay-010.html.ini | 2 +- .../background-size-025.html.ini | 2 - ...ent-on-replaced-element.tentative.html.ini | 3 +- .../transform-scale-hittest.html.ini | 1 - .../elementFromPoint-float-in-table.html.ini | 4 - .../cssom-view/elementFromPosition.html.ini | 1 - .../mozilla/meta-layout-2020/css/__dir__.ini | 1 + .../css/abs_float_pref_width.html.ini | 2 - .../background_position_shorthand.html.ini | 2 + .../css/block_formatting_context_a.html.ini | 2 + ...ormatting_context_cleared_float_a.html.ini | 2 + ...lock_formatting_context_complex_a.html.ini | 2 + ...tting_context_containing_floats_a.html.ini | 2 + ...ntext_float_inorder_interaction_a.html.ini | 2 + ...matting_context_float_placement_a.html.ini | 2 + ...formatting_context_margin_inout_a.html.ini | 2 - ...ck_formatting_context_max_width_a.html.ini | 2 - ...ock_formatting_context_relative_a.html.ini | 2 + ..._formatting_context_translation_a.html.ini | 2 + .../css/box_sizing_sanity_check_a.html.ini | 2 + .../clear_generated_content_table_a.html.ini | 2 + .../css/first_child_pseudo_a.html.ini | 2 + .../css/first_of_type_pseudo_a.html.ini | 2 + ...overrides_child_intrinsic_width_a.html.ini | 2 + .../css/float-abspos.html.ini | 4 - .../css/float_clearance_a.html.ini | 2 + ...float_clearance_intrinsic_width_a.html.ini | 2 + .../float_cleared_with_just_height.html.ini | 2 - .../css/float_intrinsic_height.html.ini | 2 + .../css/float_relative_to_position.html.ini | 4 - .../css/float_under_top_margin_a.html.ini | 2 + .../css/floated_list_item_a.html.ini | 2 + .../css/floated_negative_margins_a.html.ini | 2 + .../css/floated_table_with_margin_a.html.ini | 2 + .../css/floats_margin_collapse_a.html.ini | 2 - .../css/floats_percentage_width_a.html.ini | 2 + .../css/incremental_float_a.html.ini | 2 + .../css/input_alignment_a.html.ini | 2 - .../css/intrinsic_border_box.html.ini | 2 + .../css/last_child_pseudo_a.html.ini | 2 + .../css/last_of_type_pseudo_a.html.ini | 2 + .../css/negative_margin_uncle_a.html.ini | 2 + .../css/nth_child_pseudo_a.html.ini | 2 + .../css/nth_last_child_pseudo_a.html.ini | 2 + .../css/nth_last_of_type_pseudo_a.html.ini | 2 + .../css/nth_of_type_pseudo_a.html.ini | 2 + .../css/only_child_pseudo_a.html.ini | 2 + .../css/only_of_type_pseudo_a.html.ini | 2 + .../css/percentage_height_float_a.html.ini | 2 + ...ative_stacking_context_contents_a.html.ini | 2 - .../css/stacked_layers.html.ini | 2 +- .../css/table_float_translation_a.html.ini | 2 + .../mozilla/hit_test_multiple_sc.html.ini | 4 - 165 files changed, 553 insertions(+), 248 deletions(-) create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/__dir__.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-fit-006.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-wrap-001.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/css1/c5525-fltwidth-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjacent-floats-001.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjoining-float-nested-forced-clearance-004.html.ini rename tests/wpt/metadata-layout-2020/css/CSS2/{values/units-005.xht.ini => floats-clear/clear-001.xht.ini} (51%) rename tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/{clear-004.xht.ini => clear-005.xht.ini} (51%) delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-default-inheritance-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-002.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-003.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-004.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-005.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-006.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-007.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-008.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-009.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-initial-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-and-child.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-001a.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-004a.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-005.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-006.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-007.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-009.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-012.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-015.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-height-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-003.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-004.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-005.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-001.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-002.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-003.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-003.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-004.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-006.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-011.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-003.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-004.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-007.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-008.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-009.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-023.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-024.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-025.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-028.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-041.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-043.xht.ini rename tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/{floats-001.xht.ini => floats-118.xht.ini} (50%) delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-121.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-123.xht.ini rename tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/{floats-002.xht.ini => floats-132.xht.ini} (50%) delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-135.xht.ini rename tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/{clear-002.xht.ini => floats-139.xht.ini} (50%) delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-141.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-146.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-147.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-bfc-001.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-018.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-027.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-165.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-166.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin-after-left-right.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-3-ref.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-6.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-in-table-caption-001.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001a.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001b.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001c.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-003.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-left-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-right-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-wrap-bfc-outside-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/negative-margin-float-positioning.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/lists/list-style-image-005.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-007.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-min-height-001.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-001.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-002.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-008.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-016.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-non-replaced-height-011.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/max-width-106.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/min-height-106.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/width-non-replaced-inline-001.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/positioning/abspos-028.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/positioning/positioning-float-002.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-003.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-004.xht.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/css-backgrounds/background-size-025.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/__dir__.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/abs_float_pref_width.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/background_position_shorthand.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_cleared_float_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_complex_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_containing_floats_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_inorder_interaction_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_placement_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_margin_inout_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_max_width_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_relative_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_translation_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/box_sizing_sanity_check_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/clear_generated_content_table_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/first_child_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/first_of_type_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/fixed_width_overrides_child_intrinsic_width_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/float-abspos.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/float_clearance_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/float_clearance_intrinsic_width_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/float_cleared_with_just_height.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/float_intrinsic_height.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/float_relative_to_position.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/float_under_top_margin_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/floated_list_item_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/floated_negative_margins_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/floated_table_with_margin_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/floats_margin_collapse_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/floats_percentage_width_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/incremental_float_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/input_alignment_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/intrinsic_border_box.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/last_child_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/last_of_type_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/negative_margin_uncle_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/nth_child_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/nth_last_child_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/nth_last_of_type_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/nth_of_type_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/only_child_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/only_of_type_pseudo_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/percentage_height_float_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/css/position_relative_stacking_context_contents_a.html.ini create mode 100644 tests/wpt/mozilla/meta-layout-2020/css/table_float_translation_a.html.ini delete mode 100644 tests/wpt/mozilla/meta-layout-2020/mozilla/hit_test_multiple_sc.html.ini diff --git a/components/config/prefs.rs b/components/config/prefs.rs index 26aec4d39d0e..837d230c4d55 100644 --- a/components/config/prefs.rs +++ b/components/config/prefs.rs @@ -445,6 +445,9 @@ mod gen { flexbox: { enabled: bool, }, + floats: { + enabled: bool, + }, #[serde(default = "default_layout_threads")] threads: i64, viewport: { diff --git a/components/layout_2020/display_list/mod.rs b/components/layout_2020/display_list/mod.rs index 4fc0c390d0d9..25e38d6d7c33 100644 --- a/components/layout_2020/display_list/mod.rs +++ b/components/layout_2020/display_list/mod.rs @@ -101,6 +101,10 @@ impl Fragment { Visibility::Hidden => (), Visibility::Collapse => (), }, + Fragment::Float(f) => { + // FIXME(pcwalton): Wrong painting order! + BuilderForBoxFragment::new(&f.box_fragment, containing_block).build(builder) + }, Fragment::AbsoluteOrFixedPositioned(_) => {}, Fragment::Anonymous(_) => {}, Fragment::Image(i) => match i.style.get_inherited_box().visibility { diff --git a/components/layout_2020/display_list/stacking_context.rs b/components/layout_2020/display_list/stacking_context.rs index a76b607fa6d5..285341ba00de 100644 --- a/components/layout_2020/display_list/stacking_context.rs +++ b/components/layout_2020/display_list/stacking_context.rs @@ -6,7 +6,7 @@ use crate::cell::ArcRefCell; use crate::display_list::conversions::ToWebRender; use crate::display_list::DisplayListBuilder; use crate::fragments::{ - AbsoluteOrFixedPositionedFragment, AnonymousFragment, BoxFragment, Fragment, + AbsoluteOrFixedPositionedFragment, AnonymousFragment, BoxFragment, FloatFragment, Fragment, }; use crate::geom::PhysicalRect; use crate::style_ext::ComputedValuesExt; @@ -453,7 +453,7 @@ impl Fragment { return; } - // If this fragment has a transform applied that makes it take up no spae + // If this fragment has a transform applied that makes it take up no space // then we don't need to create any stacking contexts for it. let has_non_invertible_transform = fragment.has_non_invertible_transform(&containing_block_info.rect.to_untyped()); @@ -468,6 +468,14 @@ impl Fragment { stacking_context, ); }, + Fragment::Float(fragment) => { + fragment.build_stacking_context_tree( + fragment_ref, + builder, + containing_block_info, + stacking_context, + ); + }, Fragment::AbsoluteOrFixedPositioned(fragment) => { fragment.build_stacking_context_tree( builder, @@ -937,6 +945,23 @@ impl AnonymousFragment { } } +impl FloatFragment { + fn build_stacking_context_tree( + &self, + fragment: &ArcRefCell, + builder: &mut StackingContextBuilder, + containing_block_info: &ContainingBlockInfo, + stacking_context: &mut StackingContext, + ) { + self.box_fragment.build_stacking_context_tree( + fragment, + builder, + containing_block_info, + stacking_context, + ); + } +} + impl AbsoluteOrFixedPositionedFragment { fn build_stacking_context_tree( &self, diff --git a/components/layout_2020/flow/float.rs b/components/layout_2020/flow/float.rs index d7269cbfc4c2..28c253ae81b5 100644 --- a/components/layout_2020/flow/float.rs +++ b/components/layout_2020/flow/float.rs @@ -9,12 +9,18 @@ use crate::context::LayoutContext; use crate::dom_traversal::{Contents, NodeAndStyleInfo, NodeExt}; use crate::formatting_contexts::IndependentFormattingContext; +use crate::fragments::{BoxFragment, CollapsedBlockMargins, FloatFragment}; use crate::geom::flow_relative::{Rect, Vec2}; -use crate::style_ext::DisplayInside; +use crate::positioned::PositioningContext; +use crate::style_ext::{ComputedValuesExt, DisplayInside}; +use crate::ContainingBlock; use euclid::num::Zero; use servo_arc::Arc; use std::f32; use std::ops::Range; +use style::computed_values::clear::T as ClearProperty; +use style::computed_values::float::T as FloatProperty; +use style::properties::ComputedValues; use style::values::computed::Length; use style::values::specified::text::TextDecorationLine; @@ -39,6 +45,22 @@ pub struct FloatContext { /// The current (logically) vertical position. No new floats may be placed (logically) above /// this line. pub ceiling: Length, + /// The distance from the logical left side of the block formatting context to the logical + /// left side of the current containing block. + pub left_wall: Length, + /// The distance from the logical *left* side of the block formatting context to the logical + /// right side of this object's containing block. + pub right_wall: Length, + /// The distance in the block direction from the top content edge of the block formatting + /// context to the current containing block. Positions are returned relative to + /// `vec2(left_wall, containing_block_position)`. + pub containing_block_position: Length, + /// The distance in the block direction from the top content edge of the block formatting + /// context to the position where the next block will be placed. + /// + /// This is unused by the float context itself, but block layout uses this value to adjust + /// `containing_block_position` appropriately when moving around the tree. + pub current_block_position: Length, } impl FloatContext { @@ -59,6 +81,10 @@ impl FloatContext { FloatContext { bands, ceiling: Length::zero(), + left_wall: Length::zero(), + right_wall: Length::new(f32::INFINITY), + containing_block_position: Length::zero(), + current_block_position: Length::zero(), } } @@ -74,6 +100,15 @@ impl FloatContext { self.ceiling = self.ceiling.max(new_ceiling); } + // Returns the vector from the content edge of the block formatting context to the content + // edge of the containing block. + fn containing_block_position(&self) -> Vec2 { + Vec2 { + inline: self.left_wall, + block: self.containing_block_position, + } + } + /// Determines where a float with the given placement would go, but leaves the float context /// unmodified. Returns the start corner of its margin box. /// @@ -82,7 +117,7 @@ impl FloatContext { pub fn place_object(&self, object: &PlacementInfo) -> Vec2 { // Find the first band this float fits in. let mut first_band = self.bands.find(self.ceiling).unwrap(); - while !first_band.object_fits(&object) { + while !first_band.object_fits(&object, self.left_wall, self.right_wall) { let next_band = self.bands.find_next(first_band.top).unwrap(); if next_band.top.px().is_infinite() { break; @@ -91,11 +126,11 @@ impl FloatContext { } // The object fits perfectly here. Place it. - match object.side { + let global_offset = match object.side { FloatSide::Left => { let left_object_edge = match first_band.left { - Some(band_left) => band_left.max(object.left_wall), - None => object.left_wall, + Some(band_left) => band_left.max(self.left_wall), + None => self.left_wall, }; Vec2 { inline: left_object_edge, @@ -104,21 +139,23 @@ impl FloatContext { }, FloatSide::Right => { let right_object_edge = match first_band.right { - Some(band_right) => band_right.min(object.right_wall), - None => object.right_wall, + Some(band_right) => band_right.min(self.right_wall), + None => self.right_wall, }; Vec2 { inline: right_object_edge - object.size.inline, block: first_band.top.max(self.ceiling), } }, - } + }; + + &global_offset - &self.containing_block_position() } /// Places a new float and adds it to the list. Returns the start corner of its margin box. pub fn add_float(&mut self, new_float: &PlacementInfo) -> Vec2 { // Place the float. - let new_float_origin = self.place_object(new_float); + let new_float_origin = &self.place_object(new_float) + &self.containing_block_position(); let new_float_extent = match new_float.side { FloatSide::Left => new_float_origin.inline + new_float.size.inline, FloatSide::Right => new_float_origin.inline, @@ -150,7 +187,7 @@ impl FloatContext { // CSS 2.1 § 9.5.1 rule 6: The outer top of a floating box may not be higher than the outer // top of any block or floated box generated by an element earlier in the source document. self.ceiling = self.ceiling.max(new_float_rect.start_corner.block); - new_float_rect.start_corner + &new_float_rect.start_corner - &self.containing_block_position() } } @@ -163,12 +200,6 @@ pub struct PlacementInfo { pub side: FloatSide, /// Which side or sides to clear floats on. pub clear: ClearSide, - /// The distance from the logical left side of the block formatting context to the logical - /// left side of this object's containing block. - pub left_wall: Length, - /// The distance from the logical *left* side of the block formatting context to the logical - /// right side of this object's containing block. - pub right_wall: Length, } /// Whether the float is left or right. @@ -209,6 +240,27 @@ pub struct FloatBand { pub right: Option, } +impl FloatSide { + fn from_style(style: &ComputedValues) -> Option { + match style.get_box().float { + FloatProperty::None => None, + FloatProperty::Left => Some(FloatSide::Left), + FloatProperty::Right => Some(FloatSide::Right), + } + } +} + +impl ClearSide { + fn from_style(style: &ComputedValues) -> ClearSide { + match style.get_box().clear { + ClearProperty::None => ClearSide::None, + ClearProperty::Left => ClearSide::Left, + ClearProperty::Right => ClearSide::Right, + ClearProperty::Both => ClearSide::Both, + } + } +} + impl FloatBand { // Returns true if this band is clear of floats on the given side or sides. fn is_clear(&self, side: ClearSide) -> bool { @@ -225,7 +277,7 @@ impl FloatBand { } // Determines whether an object fits in a band. - fn object_fits(&self, object: &PlacementInfo) -> bool { + fn object_fits(&self, object: &PlacementInfo, left_wall: Length, right_wall: Length) -> bool { // If we must be clear on the given side and we aren't, this object doesn't fit. if !self.is_clear(object.clear) { return false; @@ -235,13 +287,13 @@ impl FloatBand { FloatSide::Left => { // Compute a candidate left position for the object. let candidate_left = match self.left { - None => object.left_wall, - Some(left) => left.max(object.left_wall), + None => left_wall, + Some(left) => left.max(left_wall), }; // If this band has an existing left float in it, then make sure that the object // doesn't stick out past the right edge (rule 7). - if self.left.is_some() && candidate_left + object.size.inline > object.right_wall { + if self.left.is_some() && candidate_left + object.size.inline > right_wall { return false; } @@ -256,13 +308,13 @@ impl FloatBand { FloatSide::Right => { // Compute a candidate right position for the object. let candidate_right = match self.right { - None => object.right_wall, - Some(right) => right.min(object.right_wall), + None => right_wall, + Some(right) => right.min(right_wall), }; // If this band has an existing right float in it, then make sure that the new // object doesn't stick out past the left edge (rule 7). - if self.right.is_some() && candidate_right - object.size.inline < object.left_wall { + if self.right.is_some() && candidate_right - object.size.inline < left_wall { return false; } @@ -560,4 +612,118 @@ impl FloatBox { ), } } + + pub fn layout( + &mut self, + layout_context: &LayoutContext, + positioning_context: &mut PositioningContext, + containing_block: &ContainingBlock, + mut float_context: Option<&mut FloatContext>, + ) -> FloatFragment { + let style = match self.contents { + IndependentFormattingContext::Replaced(ref replaced) => replaced.style.clone(), + IndependentFormattingContext::NonReplaced(ref non_replaced) => { + non_replaced.style.clone() + }, + }; + let float_context = float_context + .as_mut() + .expect("Tried to lay out a float with no float context!"); + let box_fragment = positioning_context.layout_maybe_position_relative_fragment( + layout_context, + containing_block, + &style, + |mut positioning_context| { + // Margin is computed this way regardless of whether the element is replaced + // or non-replaced. + let pbm = style.padding_border_margin(containing_block); + let margin = pbm.margin.auto_is(|| Length::zero()); + let pbm_sums = &(&pbm.padding + &pbm.border) + &margin; + + let (content_size, fragments); + match self.contents { + IndependentFormattingContext::NonReplaced(ref mut non_replaced) => { + // Calculate inline size. + // https://drafts.csswg.org/css2/#float-width + let box_size = non_replaced.style.content_box_size(&containing_block, &pbm); + let max_box_size = non_replaced + .style + .content_max_box_size(&containing_block, &pbm); + let min_box_size = non_replaced + .style + .content_min_box_size(&containing_block, &pbm) + .auto_is(Length::zero); + + let tentative_inline_size = box_size.inline.auto_is(|| { + let available_size = + containing_block.inline_size - pbm_sums.inline_sum(); + non_replaced + .inline_content_sizes(layout_context) + .shrink_to_fit(available_size) + }); + let inline_size = tentative_inline_size + .clamp_between_extremums(min_box_size.inline, max_box_size.inline); + + // Calculate block size. + // https://drafts.csswg.org/css2/#block-root-margin + // FIXME(pcwalton): Is a tree rank of zero correct here? + let containing_block_for_children = ContainingBlock { + inline_size, + block_size: box_size.block, + style: &non_replaced.style, + }; + let independent_layout = non_replaced.layout( + layout_context, + &mut positioning_context, + &containing_block_for_children, + 0, + ); + content_size = Vec2 { + inline: inline_size, + block: box_size + .block + .auto_is(|| independent_layout.content_block_size), + }; + fragments = independent_layout.fragments; + }, + IndependentFormattingContext::Replaced(ref replaced) => { + // https://drafts.csswg.org/css2/#float-replaced-width + // https://drafts.csswg.org/css2/#inline-replaced-height + content_size = replaced.contents.used_size_as_if_inline_element( + &containing_block, + &replaced.style, + &pbm, + ); + fragments = replaced + .contents + .make_fragments(&replaced.style, content_size.clone()); + }, + }; + + // Calculate the containing-block-relative float position. + let margin_box_start_corner = float_context.add_float(&PlacementInfo { + size: &content_size + &pbm_sums.sum(), + side: FloatSide::from_style(&style).expect("Float box wasn't floated!"), + clear: ClearSide::from_style(&style), + }); + + let content_rect = Rect { + start_corner: &margin_box_start_corner + &pbm_sums.start_offset(), + size: content_size.clone(), + }; + + BoxFragment::new( + self.contents.tag(), + style.clone(), + fragments, + content_rect, + pbm.padding, + pbm.border, + margin, + CollapsedBlockMargins::zero(), + ) + }, + ); + FloatFragment { box_fragment } + } } diff --git a/components/layout_2020/flow/inline.rs b/components/layout_2020/flow/inline.rs index fa79264db5a1..98446967b894 100644 --- a/components/layout_2020/flow/inline.rs +++ b/components/layout_2020/flow/inline.rs @@ -4,7 +4,7 @@ use crate::cell::ArcRefCell; use crate::context::LayoutContext; -use crate::flow::float::FloatBox; +use crate::flow::float::{FloatBox, FloatContext}; use crate::flow::FlowLayout; use crate::formatting_contexts::IndependentFormattingContext; use crate::fragments::{ @@ -96,6 +96,7 @@ struct InlineFormattingContextState<'box_tree, 'a, 'b> { inline_position: Length, partial_inline_boxes_stack: Vec>, current_nesting_level: InlineNestingLevelState<'box_tree>, + float_context: Option<&'a mut FloatContext>, } impl<'box_tree, 'a, 'b> InlineFormattingContextState<'box_tree, 'a, 'b> { @@ -264,6 +265,7 @@ impl InlineFormattingContext { positioning_context: &mut PositioningContext, containing_block: &ContainingBlock, tree_rank: usize, + float_context: Option<&mut FloatContext>, ) -> FlowLayout { let mut ifc = InlineFormattingContextState { positioning_context, @@ -282,6 +284,7 @@ impl InlineFormattingContext { positioning_context: None, text_decoration_line: self.text_decoration_line, }, + float_context, }; loop { @@ -331,8 +334,15 @@ impl InlineFormattingContext { ), ); }, - InlineLevelBox::OutOfFlowFloatBox(_box_) => { - // TODO + InlineLevelBox::OutOfFlowFloatBox(box_) => { + ifc.current_nesting_level + .fragments_so_far + .push(Fragment::Float(box_.layout( + layout_context, + ifc.positioning_context, + containing_block, + ifc.float_context.as_mut().map(|c| &mut **c), + ))); }, } } else @@ -349,6 +359,7 @@ impl InlineFormattingContext { ifc.lines.finish_line( &mut ifc.current_nesting_level, containing_block, + ifc.float_context, ifc.inline_position, ); return FlowLayout { @@ -366,6 +377,7 @@ impl Lines { &mut self, top_nesting_level: &mut InlineNestingLevelState, containing_block: &ContainingBlock, + mut float_context: Option<&mut FloatContext>, line_content_inline_size: Length, ) { let mut line_contents = std::mem::take(&mut top_nesting_level.fragments_so_far); @@ -421,6 +433,15 @@ impl Lines { }; self.next_line_block_position += size.block; + if let Some(ref mut float_context) = float_context { + // NB(pcwalton): This sets the "containing block position" of the float context to the + // position of the line box, not that of its real containing block, because inline + // fragment positions are relative to the line boxes. I think this is ultimately + // harmless, but it is a bit questionable. + float_context.containing_block_position += size.block; + float_context.lower_ceiling(float_context.containing_block_position); + } + self.fragments .push(Fragment::Anonymous(AnonymousFragment::new( Rect { start_corner, size }, @@ -855,8 +876,12 @@ impl TextRun { partial.parent_nesting_level.inline_start = Length::zero(); nesting_level = &mut partial.parent_nesting_level; } - ifc.lines - .finish_line(nesting_level, ifc.containing_block, ifc.inline_position); + ifc.lines.finish_line( + nesting_level, + ifc.containing_block, + ifc.float_context.as_mut().map(|c| &mut **c), + ifc.inline_position, + ); ifc.inline_position = Length::zero(); } } diff --git a/components/layout_2020/flow/mod.rs b/components/layout_2020/flow/mod.rs index 1813e58daad1..d2f5ec95e81d 100644 --- a/components/layout_2020/flow/mod.rs +++ b/components/layout_2020/flow/mod.rs @@ -12,8 +12,8 @@ use crate::formatting_contexts::{ IndependentFormattingContext, IndependentLayout, NonReplacedFormattingContext, }; use crate::fragments::{ - AbsoluteOrFixedPositionedFragment, AnonymousFragment, BoxFragment, CollapsedBlockMargins, - CollapsedMargin, Fragment, Tag, + AbsoluteOrFixedPositionedFragment, BoxFragment, CollapsedBlockMargins, CollapsedMargin, + Fragment, Tag, }; use crate::geom::flow_relative::{Rect, Sides, Vec2}; use crate::positioned::{AbsolutelyPositionedBox, PositioningContext}; @@ -131,6 +131,7 @@ impl BlockContainer { positioning_context, containing_block, tree_rank, + float_context, ), } } @@ -164,7 +165,11 @@ fn layout_block_level_children( mut float_context: Option<&mut FloatContext>, collapsible_with_parent_start_margin: CollapsibleWithParentStartMargin, ) -> FlowLayout { - fn place_block_level_fragment(fragment: &mut Fragment, placement_state: &mut PlacementState) { + fn place_block_level_fragment( + fragment: &mut Fragment, + placement_state: &mut PlacementState, + mut float_context: Option<&mut FloatContext>, + ) { match fragment { Fragment::Box(fragment) => { let fragment_block_margins = &fragment.block_margins_collapsed_with_children; @@ -200,6 +205,14 @@ fn layout_block_level_children( placement_state.current_block_direction_position += placement_state.current_margin.solve() + fragment_block_size; placement_state.current_margin = fragment_block_margins.end; + + // Update float ceiling if necessary. + // https://drafts.csswg.org/css2/#propdef-float + if let Some(ref mut float_context) = float_context { + float_context.current_block_position = float_context.containing_block_position + + placement_state.current_block_direction_position; + float_context.lower_ceiling(float_context.current_block_position); + } }, Fragment::AbsoluteOrFixedPositioned(fragment) => { let offset = Vec2 { @@ -212,7 +225,7 @@ fn layout_block_level_children( .borrow_mut() .adjust_offsets(offset); }, - Fragment::Anonymous(_) => {}, + Fragment::Anonymous(_) | Fragment::Float(_) => {}, _ => unreachable!(), } } @@ -231,6 +244,7 @@ fn layout_block_level_children( current_margin: CollapsedMargin::zero(), current_block_direction_position: Length::zero(), }; + let fragments = positioning_context.adjust_static_positions(tree_rank, |positioning_context| { if float_context.is_some() || !layout_context.use_rayon { // Because floats are involved, we do layout for this block formatting context @@ -247,7 +261,11 @@ fn layout_block_level_children( tree_rank, float_context.as_mut().map(|c| &mut **c), ); - place_block_level_fragment(&mut fragment, &mut placement_state); + place_block_level_fragment( + &mut fragment, + &mut placement_state, + float_context.as_mut().map(|c| &mut **c), + ); fragment }) .collect() @@ -273,7 +291,7 @@ fn layout_block_level_children( ) .collect(); for fragment in &mut fragments { - place_block_level_fragment(fragment, &mut placement_state) + place_block_level_fragment(fragment, &mut placement_state, None) } fragments } @@ -377,12 +395,12 @@ impl BlockLevelBox { position: box_.borrow().context.style().clone_position(), }) }, - BlockLevelBox::OutOfFlowFloatBox(_box_) => { - // FIXME: call layout_maybe_position_relative_fragment here - Fragment::Anonymous(AnonymousFragment::no_op( - containing_block.style.writing_mode, - )) - }, + BlockLevelBox::OutOfFlowFloatBox(box_) => Fragment::Float(box_.layout( + layout_context, + positioning_context, + containing_block, + float_context, + )), } } @@ -423,7 +441,7 @@ fn layout_in_flow_non_replaced_block_level( style: &Arc, block_level_kind: NonReplacedContents, tree_rank: usize, - float_context: Option<&mut FloatContext>, + mut float_context: Option<&mut FloatContext>, ) -> BoxFragment { let pbm = style.padding_border_margin(containing_block); let box_size = style.content_box_size(containing_block, &pbm); @@ -477,6 +495,21 @@ fn layout_in_flow_non_replaced_block_level( block_size, style, }; + + // We make a new float context to reflect the fact that we're the containing block for our + // kids. + let mut float_context_for_children = match float_context { + None => None, + Some(ref float_context) => { + let mut new_float_context = (*float_context).clone(); + new_float_context.containing_block_position = new_float_context.current_block_position; + new_float_context.left_wall += + pbm.padding.inline_start + pbm.border.inline_start + margin.inline_start; + new_float_context.right_wall = new_float_context.left_wall + inline_size; + Some(new_float_context) + }, + }; + // https://drafts.csswg.org/css-writing-modes/#orthogonal-flows assert_eq!( containing_block.style.writing_mode, containing_block_for_children.style.writing_mode, @@ -501,13 +534,21 @@ fn layout_in_flow_non_replaced_block_level( positioning_context, &containing_block_for_children, tree_rank, - float_context, + float_context_for_children.as_mut(), CollapsibleWithParentStartMargin(start_margin_can_collapse_with_children), ); fragments = flow_layout.fragments; content_block_size = flow_layout.content_block_size; let mut collapsible_margins_in_children = flow_layout.collapsible_margins_in_children; + // Pull out the floats placed by our children. + if let Some(float_context_for_children) = float_context_for_children.take() { + let this_float_context = + float_context.as_mut().expect("Where's our float context?"); + this_float_context.bands = float_context_for_children.bands; + this_float_context.ceiling = float_context_for_children.ceiling; + } + if start_margin_can_collapse_with_children { block_margins_collapsed_with_children .start diff --git a/components/layout_2020/flow/root.rs b/components/layout_2020/flow/root.rs index d84c5bc54953..b30be6d3791b 100644 --- a/components/layout_2020/flow/root.rs +++ b/components/layout_2020/flow/root.rs @@ -473,6 +473,7 @@ impl FragmentTree { Fragment::Text(fragment) => fragment .rect .to_physical(fragment.parent_style.writing_mode, &containing_block), + Fragment::Float(_) | Fragment::AbsoluteOrFixedPositioned(_) | Fragment::Image(_) | Fragment::Anonymous(_) => return None, @@ -502,6 +503,7 @@ impl FragmentTree { Fragment::Box(fragment) if fragment.tag.node() == requested_node => { (&fragment.style, fragment.padding_rect()) }, + Fragment::Float(_) | Fragment::AbsoluteOrFixedPositioned(_) | Fragment::Box(_) | Fragment::Text(_) | diff --git a/components/layout_2020/fragments.rs b/components/layout_2020/fragments.rs index f780ff50d582..4531222cc0d6 100644 --- a/components/layout_2020/fragments.rs +++ b/components/layout_2020/fragments.rs @@ -66,6 +66,7 @@ impl Tag { #[derive(Serialize)] pub(crate) enum Fragment { Box(BoxFragment), + Float(FloatFragment), Anonymous(AnonymousFragment), AbsoluteOrFixedPositioned(AbsoluteOrFixedPositionedFragment), Text(TextFragment), @@ -101,6 +102,11 @@ pub(crate) struct BoxFragment { pub scrollable_overflow_from_children: PhysicalRect, } +#[derive(Serialize)] +pub(crate) struct FloatFragment { + pub box_fragment: BoxFragment, +} + #[derive(Serialize)] pub(crate) struct CollapsedBlockMargins { pub collapsed_through: bool, @@ -178,7 +184,7 @@ impl Fragment { pub fn offset_inline(&mut self, offset: &Length) { let position = match self { Fragment::Box(f) => &mut f.content_rect.start_corner, - Fragment::AbsoluteOrFixedPositioned(_) => return, + Fragment::Float(_) | Fragment::AbsoluteOrFixedPositioned(_) => return, Fragment::Anonymous(f) => &mut f.rect.start_corner, Fragment::Text(f) => &mut f.rect.start_corner, Fragment::Image(f) => &mut f.rect.start_corner, @@ -191,6 +197,7 @@ impl Fragment { match self { Fragment::Box(fragment) => Some(fragment.tag), Fragment::Text(fragment) => Some(fragment.tag), + Fragment::Float(_) | Fragment::AbsoluteOrFixedPositioned(_) | Fragment::Anonymous(_) | Fragment::Image(_) => None, @@ -200,6 +207,7 @@ impl Fragment { pub fn print(&self, tree: &mut PrintTree) { match self { Fragment::Box(fragment) => fragment.print(tree), + Fragment::Float(fragment) => fragment.print(tree), Fragment::AbsoluteOrFixedPositioned(fragment) => fragment.print(tree), Fragment::Anonymous(fragment) => fragment.print(tree), Fragment::Text(fragment) => fragment.print(tree), @@ -213,7 +221,7 @@ impl Fragment { ) -> PhysicalRect { match self { Fragment::Box(fragment) => fragment.scrollable_overflow_for_parent(&containing_block), - Fragment::AbsoluteOrFixedPositioned(_) => PhysicalRect::zero(), + Fragment::Float(_) | Fragment::AbsoluteOrFixedPositioned(_) => PhysicalRect::zero(), Fragment::Anonymous(fragment) => fragment.scrollable_overflow.clone(), Fragment::Text(fragment) => fragment .rect @@ -259,6 +267,14 @@ impl Fragment { } } +impl FloatFragment { + pub fn print(&self, tree: &mut PrintTree) { + tree.new_level(format!("FloatFragment")); + self.box_fragment.print(tree); + tree.end_level(); + } +} + impl AbsoluteOrFixedPositionedFragment { pub fn print(&self, tree: &mut PrintTree) { tree.add_item(format!("AbsoluteOrFixedPositionedFragment")); @@ -266,16 +282,6 @@ impl AbsoluteOrFixedPositionedFragment { } impl AnonymousFragment { - pub fn no_op(mode: WritingMode) -> Self { - Self { - debug_id: DebugId::new(), - children: vec![], - rect: Rect::zero(), - mode, - scrollable_overflow: PhysicalRect::zero(), - } - } - pub fn new(rect: Rect, children: Vec, mode: WritingMode) -> Self { // FIXME(mrobinson, bug 25564): We should be using the containing block // here to properly convert scrollable overflow to physical geometry. diff --git a/components/layout_2020/geom.rs b/components/layout_2020/geom.rs index 7d687069d496..768f7aaf80dc 100644 --- a/components/layout_2020/geom.rs +++ b/components/layout_2020/geom.rs @@ -251,6 +251,16 @@ impl flow_relative::Sides { self.block_start + self.block_end } + pub fn sum(&self) -> flow_relative::Vec2 + where + T: Add + Copy, + { + flow_relative::Vec2 { + inline: self.inline_sum(), + block: self.block_sum(), + } + } + pub fn to_physical(&self, mode: WritingMode) -> PhysicalSides where T: Clone, @@ -290,6 +300,18 @@ impl flow_relative::Sides { } } +impl flow_relative::Sides +where + T: Copy, +{ + pub fn start_offset(&self) -> flow_relative::Vec2 { + flow_relative::Vec2 { + inline: self.inline_start, + block: self.block_start, + } + } +} + impl flow_relative::Sides<&'_ LengthPercentage> { pub fn percentages_relative_to(&self, basis: Length) -> flow_relative::Sides { self.map(|s| s.percentage_relative_to(basis)) diff --git a/components/layout_2020/positioned.rs b/components/layout_2020/positioned.rs index ee4a9a6a4e78..ee17f995e72a 100644 --- a/components/layout_2020/positioned.rs +++ b/components/layout_2020/positioned.rs @@ -686,7 +686,7 @@ fn adjust_static_positions( let child_fragment_rect = match &child_fragments[original_tree_rank] { Fragment::Box(b) => &b.content_rect, - Fragment::AbsoluteOrFixedPositioned(_) => continue, + Fragment::AbsoluteOrFixedPositioned(_) | Fragment::Float(_) => continue, Fragment::Anonymous(a) => &a.rect, _ => unreachable!(), }; diff --git a/components/layout_2020/tests/floats.rs b/components/layout_2020/tests/floats.rs index cae402ac3162..f4618d55f596 100644 --- a/components/layout_2020/tests/floats.rs +++ b/components/layout_2020/tests/floats.rs @@ -341,6 +341,12 @@ struct FloatInput { // The float may be placed no higher than this line. This simulates the effect of line boxes // per CSS 2.1 § 9.5.1 rule 6. ceiling: u32, + /// The distance from the logical left side of the block formatting context to the logical + /// left side of the current containing block. + left_wall: Length, + /// The distance from the logical *left* side of the block formatting context to the logical + /// right side of this object's containing block. + right_wall: Length, } impl Arbitrary for FloatInput { @@ -367,10 +373,10 @@ impl Arbitrary for FloatInput { FloatSide::Right }, clear: new_clear_side(clear), - left_wall: Length::new(left_wall as f32), - right_wall: Length::new(right_wall as f32), }, ceiling, + left_wall: Length::new(left_wall as f32), + right_wall: Length::new(right_wall as f32), } } @@ -389,12 +395,12 @@ impl Arbitrary for FloatInput { this.info.clear = new_clear_side(clear_side); shrunk = true; } - if let Some(left_wall) = self.info.left_wall.px().shrink().next() { - this.info.left_wall = Length::new(left_wall); + if let Some(left_wall) = self.left_wall.px().shrink().next() { + this.left_wall = Length::new(left_wall); shrunk = true; } - if let Some(right_wall) = self.info.right_wall.px().shrink().next() { - this.info.right_wall = Length::new(right_wall); + if let Some(right_wall) = self.right_wall.px().shrink().next() { + this.right_wall = Length::new(right_wall); shrunk = true; } if let Some(ceiling) = self.ceiling.shrink().next() { @@ -430,6 +436,8 @@ struct PlacedFloat { origin: Vec2, info: PlacementInfo, ceiling: Length, + left_wall: Length, + right_wall: Length, } impl Drop for FloatPlacement { @@ -442,8 +450,12 @@ impl Drop for FloatPlacement { eprintln!("Failing float placement:"); for placed_float in &self.placed_floats { eprintln!( - " * {:?} @ {:?}, {:?}", - placed_float.info, placed_float.origin, placed_float.ceiling + " * {:?} @ {:?}, T {:?} L {:?} R {:?}", + placed_float.info, + placed_float.origin, + placed_float.ceiling, + placed_float.left_wall, + placed_float.right_wall, ); } eprintln!("Bands:\n{:?}\n", self.float_context.bands); @@ -466,10 +478,18 @@ impl FloatPlacement { for float in floats { let ceiling = Length::new(float.ceiling as f32); float_context.lower_ceiling(ceiling); + float_context.left_wall = float.left_wall; + float_context.right_wall = float.right_wall; + let placement_offset = Vec2 { + inline: float.left_wall, + block: Length::zero(), + }; placed_floats.push(PlacedFloat { - origin: float_context.add_float(&float.info), + origin: &float_context.add_float(&float.info) + &placement_offset, info: float.info, ceiling, + left_wall: float.left_wall, + right_wall: float.right_wall, }) } FloatPlacement { @@ -488,9 +508,9 @@ impl FloatPlacement { fn check_floats_rule_1(placement: &FloatPlacement) { for placed_float in &placement.placed_floats { match placed_float.info.side { - FloatSide::Left => assert!(placed_float.origin.inline >= placed_float.info.left_wall), + FloatSide::Left => assert!(placed_float.origin.inline >= placed_float.left_wall), FloatSide::Right => { - assert!(placed_float.rect().max_inline_position() <= placed_float.info.right_wall) + assert!(placed_float.rect().max_inline_position() <= placed_float.right_wall) }, } } @@ -596,12 +616,12 @@ fn check_floats_rule_7(placement: &FloatPlacement) { // Only consider floats that stick out. match placed_float.info.side { FloatSide::Left => { - if placed_float.rect().max_inline_position() <= placed_float.info.right_wall { + if placed_float.rect().max_inline_position() <= placed_float.right_wall { continue; } }, FloatSide::Right => { - if placed_float.origin.inline >= placed_float.info.left_wall { + if placed_float.origin.inline >= placed_float.left_wall { continue; } }, diff --git a/components/style/properties/longhands/box.mako.rs b/components/style/properties/longhands/box.mako.rs index 943bd0f27ffb..b95839c038a3 100644 --- a/components/style/properties/longhands/box.mako.rs +++ b/components/style/properties/longhands/box.mako.rs @@ -67,8 +67,8 @@ ${helpers.predefined_type( "Float", "computed::Float::None", engines="gecko servo-2013 servo-2020", - servo_2020_pref="layout.2020.unimplemented", initial_specified_value="specified::Float::None", + servo_2020_pref="layout.floats.enabled", spec="https://drafts.csswg.org/css-box/#propdef-float", animation_value_type="discrete", needs_context=False, @@ -80,7 +80,8 @@ ${helpers.predefined_type( "clear", "Clear", "computed::Clear::None", - engines="gecko servo-2013", + engines="gecko servo-2013 servo-2020", + servo_2020_pref="layout.floats.enabled", animation_value_type="discrete", needs_context=False, gecko_ffi_name="mBreakType", diff --git a/components/style/values/computed/length.rs b/components/style/values/computed/length.rs index 9a7e2cbb1a4d..804b624da44d 100644 --- a/components/style/values/computed/length.rs +++ b/components/style/values/computed/length.rs @@ -17,7 +17,7 @@ use crate::values::{specified, CSSFloat}; use crate::Zero; use app_units::Au; use std::fmt::{self, Write}; -use std::ops::{Add, AddAssign, Div, Mul, MulAssign, Neg, Sub}; +use std::ops::{Add, AddAssign, Div, Mul, MulAssign, Neg, Sub, SubAssign}; use style_traits::{CSSPixel, CssWriter, ToCss}; pub use super::image::Image; @@ -381,6 +381,13 @@ impl Sub for CSSPixelLength { } } +impl SubAssign for CSSPixelLength { + #[inline] + fn sub_assign(&mut self, other: Self) { + self.0 -= other.0; + } +} + impl From for Au { #[inline] fn from(len: CSSPixelLength) -> Self { diff --git a/resources/prefs.json b/resources/prefs.json index 6aef2c5f292e..64f12ee4ca1b 100644 --- a/resources/prefs.json +++ b/resources/prefs.json @@ -100,6 +100,7 @@ "layout.animations.test.enabled": false, "layout.columns.enabled": false, "layout.flexbox.enabled": false, + "layout.floats.enabled": false, "layout.threads": 3, "layout.viewport.enabled": false, "layout.writing-mode.enabled": false, diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/__dir__.ini b/tests/wpt/metadata-layout-2020/css/CSS2/__dir__.ini new file mode 100644 index 000000000000..43a774a6216c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/__dir__.ini @@ -0,0 +1 @@ +prefs: ["layout.floats.enabled:true"] diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-fit-006.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-fit-006.xht.ini deleted file mode 100644 index a306acbd9b66..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-fit-006.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[c414-flt-fit-006.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-wrap-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-wrap-001.xht.ini deleted file mode 100644 index b07643272b67..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/css1/c414-flt-wrap-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[c414-flt-wrap-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/css1/c5525-fltwidth-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/css1/c5525-fltwidth-001.xht.ini new file mode 100644 index 000000000000..87f64e42a644 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/css1/c5525-fltwidth-001.xht.ini @@ -0,0 +1,2 @@ +[c5525-fltwidth-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjacent-floats-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjacent-floats-001.xht.ini deleted file mode 100644 index 25e42ff44896..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjacent-floats-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[adjacent-floats-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjoining-float-nested-forced-clearance-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjoining-float-nested-forced-clearance-004.html.ini new file mode 100644 index 000000000000..beef5d43bec6 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/adjoining-float-nested-forced-clearance-004.html.ini @@ -0,0 +1,2 @@ +[adjoining-float-nested-forced-clearance-004.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/values/units-005.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-001.xht.ini similarity index 51% rename from tests/wpt/metadata-layout-2020/css/CSS2/values/units-005.xht.ini rename to tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-001.xht.ini index d1604bb05859..e19ce2364c70 100644 --- a/tests/wpt/metadata-layout-2020/css/CSS2/values/units-005.xht.ini +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-001.xht.ini @@ -1,2 +1,2 @@ -[units-005.xht] +[clear-001.xht] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-004.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-005.xht.ini similarity index 51% rename from tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-004.xht.ini rename to tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-005.xht.ini index 363f550fa3b5..d916deca9151 100644 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-004.xht.ini +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-005.xht.ini @@ -1,2 +1,2 @@ -[clear-004.xht] +[clear-005.xht] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini deleted file mode 100644 index 6e5799fc5855..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-clearance-calculation-004.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-default-inheritance-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-default-inheritance-001.xht.ini deleted file mode 100644 index e6429447b764..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-default-inheritance-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-default-inheritance-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-001.xht.ini deleted file mode 100644 index 129cffa434ca..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-002.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-002.xht.ini deleted file mode 100644 index c68786b2fafd..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-002.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-002.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-003.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-003.xht.ini deleted file mode 100644 index 2a3dc9e10f61..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-003.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-003.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-004.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-004.xht.ini deleted file mode 100644 index 827fb8b043a5..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-004.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-004.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-005.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-005.xht.ini deleted file mode 100644 index 835feca1dca4..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-005.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-005.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-006.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-006.xht.ini deleted file mode 100644 index 27f26309c4d6..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-006.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-006.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-007.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-007.xht.ini deleted file mode 100644 index 60cb4e21a6f0..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-007.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-007.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-008.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-008.xht.ini deleted file mode 100644 index ae6f85d2fe8b..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-008.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-008.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-009.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-009.xht.ini deleted file mode 100644 index 89180886c24d..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-float-009.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-float-009.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-initial-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-initial-001.xht.ini deleted file mode 100644 index 9bfe5f3baef2..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-initial-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-initial-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-and-child.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-and-child.html.ini deleted file mode 100644 index 415e4eb73a93..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-and-child.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-on-parent-and-child.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini deleted file mode 100644 index 216939d78396..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[clear-on-parent-with-margins-no-clearance.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent.html.ini new file mode 100644 index 000000000000..3dc6956b7402 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-on-parent.html.ini @@ -0,0 +1,2 @@ +[clear-on-parent.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini new file mode 100644 index 000000000000..c1602cdda563 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini @@ -0,0 +1,2 @@ +[clear-with-top-margin-after-cleared-empty-block.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-001a.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-001a.xht.ini deleted file mode 100644 index f21a6c98c3af..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-001a.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-001a.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-004a.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-004a.xht.ini deleted file mode 100644 index de0c81bbade7..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-004a.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-004a.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-005.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-005.xht.ini deleted file mode 100644 index a883902a4782..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-005.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-005.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-006.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-006.xht.ini deleted file mode 100644 index 8a0aad4475a7..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-006.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-006.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-007.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-007.xht.ini deleted file mode 100644 index 4deb4443f9f5..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-007.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-007.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-009.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-009.xht.ini deleted file mode 100644 index 62561de0f677..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-009.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-009.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-012.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-012.xht.ini deleted file mode 100644 index 273de32776ef..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-012.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-012.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-015.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-015.xht.ini deleted file mode 100644 index 93b007b2849f..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-applies-to-015.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-applies-to-015.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-height-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-height-001.xht.ini deleted file mode 100644 index 86a252266e85..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-height-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-non-replaced-height-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-001.xht.ini deleted file mode 100644 index 2a53227a5daa..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-non-replaced-width-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-003.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-003.xht.ini deleted file mode 100644 index 5aae804edb76..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-003.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-non-replaced-width-003.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-004.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-004.xht.ini deleted file mode 100644 index ba7944663aa9..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-004.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-non-replaced-width-004.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-005.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-005.xht.ini deleted file mode 100644 index 7b141145aec8..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-non-replaced-width-005.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-non-replaced-width-005.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-001.xht.ini new file mode 100644 index 000000000000..a04702deda69 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-001.xht.ini @@ -0,0 +1,2 @@ +[float-replaced-height-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-002.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-002.xht.ini new file mode 100644 index 000000000000..c6a38f7de0f8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-002.xht.ini @@ -0,0 +1,2 @@ +[float-replaced-height-002.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-003.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-003.xht.ini new file mode 100644 index 000000000000..cd6b4e8006f5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-height-003.xht.ini @@ -0,0 +1,2 @@ +[float-replaced-height-003.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-003.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-003.xht.ini deleted file mode 100644 index 00a2629e4806..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-003.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-replaced-width-003.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-004.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-004.xht.ini deleted file mode 100644 index 3cd20e6c9797..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-004.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-replaced-width-004.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-006.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-006.xht.ini deleted file mode 100644 index f7a953c673c3..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-006.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-replaced-width-006.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-011.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-011.xht.ini deleted file mode 100644 index bf876293d1c9..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/float-replaced-width-011.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-replaced-width-011.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-003.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-003.xht.ini deleted file mode 100644 index 4ea240af7655..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-003.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-003.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-004.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-004.xht.ini deleted file mode 100644 index b1d5785a3d3f..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-004.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-004.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-007.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-007.xht.ini deleted file mode 100644 index c8d3156abcba..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-007.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-007.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-008.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-008.xht.ini deleted file mode 100644 index b4997d88ab0a..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-008.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-008.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-009.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-009.xht.ini deleted file mode 100644 index cefc075835d2..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-009.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-009.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-023.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-023.xht.ini deleted file mode 100644 index d2970edef2ee..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-023.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-023.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-024.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-024.xht.ini deleted file mode 100644 index a35e3d8c5516..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-024.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-024.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-025.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-025.xht.ini deleted file mode 100644 index d31574fc40a5..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-025.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-025.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-028.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-028.xht.ini deleted file mode 100644 index de3e7f49b021..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-028.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-028.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-041.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-041.xht.ini deleted file mode 100644 index b21db4dcaa72..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-041.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-041.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-043.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-043.xht.ini deleted file mode 100644 index d53c0472c864..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-043.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-043.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-118.xht.ini similarity index 50% rename from tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-001.xht.ini rename to tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-118.xht.ini index d8f17a071941..1351cdb4c73d 100644 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-001.xht.ini +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-118.xht.ini @@ -1,2 +1,2 @@ -[floats-001.xht] +[floats-118.xht] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-121.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-121.xht.ini deleted file mode 100644 index a446bc1d86e1..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-121.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-121.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-123.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-123.xht.ini deleted file mode 100644 index d8a11c286023..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-123.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-123.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-002.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-132.xht.ini similarity index 50% rename from tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-002.xht.ini rename to tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-132.xht.ini index 6c0961e88f69..981a921e1e3b 100644 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-002.xht.ini +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-132.xht.ini @@ -1,2 +1,2 @@ -[floats-002.xht] +[floats-132.xht] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-135.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-135.xht.ini deleted file mode 100644 index 13e9f34b789c..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-135.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-135.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-002.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-139.xht.ini similarity index 50% rename from tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-002.xht.ini rename to tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-139.xht.ini index 263945fcd727..326d5e0545f1 100644 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/clear-002.xht.ini +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-139.xht.ini @@ -1,2 +1,2 @@ -[clear-002.xht] +[floats-139.xht] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-141.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-141.xht.ini deleted file mode 100644 index 0ad11b3c5cb8..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-141.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-141.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-146.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-146.xht.ini deleted file mode 100644 index 447aaf2c7f14..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-146.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-146.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-147.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-147.xht.ini deleted file mode 100644 index fc980a2963e0..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-147.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-147.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-bfc-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-bfc-001.xht.ini new file mode 100644 index 000000000000..fe8adde8fbdd --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-bfc-001.xht.ini @@ -0,0 +1,2 @@ +[floats-bfc-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-018.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-018.xht.ini new file mode 100644 index 000000000000..27f65ceefa2a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-018.xht.ini @@ -0,0 +1,2 @@ +[margin-collapse-018.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-027.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-027.xht.ini new file mode 100644 index 000000000000..519aa8a80eb0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-027.xht.ini @@ -0,0 +1,2 @@ +[margin-collapse-027.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-165.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-165.xht.ini deleted file mode 100644 index 4591f167f7e7..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-165.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-165.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-166.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-166.xht.ini deleted file mode 100644 index 65dcb5d674c8..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/margin-collapse-166.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-166.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin-after-left-right.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin-after-left-right.html.ini deleted file mode 100644 index d4a609c99752..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin-after-left-right.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[no-clearance-due-to-large-margin-after-left-right.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin.html.ini new file mode 100644 index 000000000000..245967fc42da --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/no-clearance-due-to-large-margin.html.ini @@ -0,0 +1,2 @@ +[no-clearance-due-to-large-margin.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-3-ref.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-3-ref.html.ini deleted file mode 100644 index 6d647b8e949e..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-3-ref.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float-nowrap-3-ref.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-6.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-6.html.ini new file mode 100644 index 000000000000..7b863cf49e64 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/float-nowrap-6.html.ini @@ -0,0 +1,2 @@ +[float-nowrap-6.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-in-table-caption-001.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-in-table-caption-001.html.ini new file mode 100644 index 000000000000..86715ffc9c20 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-in-table-caption-001.html.ini @@ -0,0 +1,2 @@ +[floats-in-table-caption-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001a.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001a.xht.ini new file mode 100644 index 000000000000..b0c8a8783e5b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001a.xht.ini @@ -0,0 +1,2 @@ +[floats-placement-vertical-001a.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001b.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001b.xht.ini new file mode 100644 index 000000000000..bd706c1a2cb8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001b.xht.ini @@ -0,0 +1,2 @@ +[floats-placement-vertical-001b.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001c.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001c.xht.ini new file mode 100644 index 000000000000..ef7c5a18c805 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-001c.xht.ini @@ -0,0 +1,2 @@ +[floats-placement-vertical-001c.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-003.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-003.xht.ini new file mode 100644 index 000000000000..6b7cb570a8a4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-placement-vertical-003.xht.ini @@ -0,0 +1,2 @@ +[floats-placement-vertical-003.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-left-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-left-001.xht.ini deleted file mode 100644 index f919d0205c54..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-left-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-rule3-outside-left-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-right-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-right-001.xht.ini deleted file mode 100644 index fdbae1835ea3..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-rule3-outside-right-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-rule3-outside-right-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-wrap-bfc-outside-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-wrap-bfc-outside-001.xht.ini deleted file mode 100644 index 4b1faaafa76c..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/floats-wrap-bfc-outside-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats-wrap-bfc-outside-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/negative-margin-float-positioning.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/negative-margin-float-positioning.html.ini deleted file mode 100644 index fdf1350fbbfa..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/negative-margin-float-positioning.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[negative-margin-float-positioning.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/linebox/inline-negative-margin-001.html.ini index 5e4d523cef97..461e4a1d84b4 100644 --- a/tests/wpt/metadata-layout-2020/css/CSS2/linebox/inline-negative-margin-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/CSS2/linebox/inline-negative-margin-001.html.ini @@ -2,9 +2,36 @@ [[data-expected-height\] 3] expected: FAIL + [[data-expected-height\] 4] + expected: FAIL + + [[data-expected-height\] 5] + expected: FAIL + + [[data-expected-height\] 6] + expected: FAIL + [[data-expected-height\] 7] expected: FAIL + [[data-expected-height\] 8] + expected: FAIL + + [[data-expected-height\] 9] + expected: FAIL + + [[data-expected-height\] 10] + expected: FAIL + + [[data-expected-height\] 11] + expected: FAIL + + [[data-expected-height\] 12] + expected: FAIL + + [[data-expected-height\] 13] + expected: FAIL + [[data-expected-height\] 1] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/lists/list-style-image-005.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/lists/list-style-image-005.xht.ini new file mode 100644 index 000000000000..ef77b04fd86a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/lists/list-style-image-005.xht.ini @@ -0,0 +1,2 @@ +[list-style-image-005.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-007.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-007.xht.ini deleted file mode 100644 index 3422b2ee7074..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-007.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-007.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-min-height-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-min-height-001.xht.ini deleted file mode 100644 index b2b41d98c21f..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/margin-padding-clear/margin-collapse-min-height-001.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-min-height-001.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-001.xht.ini new file mode 100644 index 000000000000..6efb0c8c2c6d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-001.xht.ini @@ -0,0 +1,2 @@ +[block-formatting-context-height-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-002.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-002.xht.ini new file mode 100644 index 000000000000..78396ee399ce --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-context-height-002.xht.ini @@ -0,0 +1,2 @@ +[block-formatting-context-height-002.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-008.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-008.xht.ini deleted file mode 100644 index a76ac3c0bff1..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-008.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[block-formatting-contexts-008.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-016.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-016.xht.ini deleted file mode 100644 index 5ec72be121ce..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-formatting-contexts-016.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[block-formatting-contexts-016.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-non-replaced-height-011.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-non-replaced-height-011.xht.ini deleted file mode 100644 index 9a6c179052f8..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-non-replaced-height-011.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[block-non-replaced-height-011.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/max-width-106.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/max-width-106.xht.ini new file mode 100644 index 000000000000..bb0bd22b3042 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/max-width-106.xht.ini @@ -0,0 +1,2 @@ +[max-width-106.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/min-height-106.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/min-height-106.xht.ini new file mode 100644 index 000000000000..bed0c772d235 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/min-height-106.xht.ini @@ -0,0 +1,2 @@ +[min-height-106.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/width-non-replaced-inline-001.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/width-non-replaced-inline-001.xht.ini new file mode 100644 index 000000000000..4890f7308ad3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/width-non-replaced-inline-001.xht.ini @@ -0,0 +1,2 @@ +[width-non-replaced-inline-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/positioning/abspos-028.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/positioning/abspos-028.xht.ini deleted file mode 100644 index 904d7e5379c9..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/positioning/abspos-028.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[abspos-028.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/positioning/positioning-float-002.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/positioning/positioning-float-002.xht.ini deleted file mode 100644 index 1fa701e8c6d7..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/positioning/positioning-float-002.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[positioning-float-002.xht] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-003.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-003.xht.ini new file mode 100644 index 000000000000..1eb716de2a95 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-003.xht.ini @@ -0,0 +1,2 @@ +[stack-floats-003.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-004.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-004.xht.ini new file mode 100644 index 000000000000..0e8029cf3cbc --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/zindex/stack-floats-004.xht.ini @@ -0,0 +1,2 @@ +[stack-floats-004.xht] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/animation-delay-010.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/animation-delay-010.html.ini index fc9b4b878ccb..e163339dcde6 100644 --- a/tests/wpt/metadata-layout-2020/css/css-animations/animation-delay-010.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-animations/animation-delay-010.html.ini @@ -1,2 +1,2 @@ [animation-delay-010.html] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-size-025.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-size-025.html.ini deleted file mode 100644 index 4143512af62b..000000000000 --- a/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-size-025.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[background-size-025.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-content/element-replacement-on-replaced-element.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-content/element-replacement-on-replaced-element.tentative.html.ini index 2f5ce8f80b30..7bd1c2d41647 100644 --- a/tests/wpt/metadata-layout-2020/css/css-content/element-replacement-on-replaced-element.tentative.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-content/element-replacement-on-replaced-element.tentative.html.ini @@ -1,3 +1,2 @@ [element-replacement-on-replaced-element.tentative.html] - expected: - if os == "linux": FAIL + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini index f8e7e539aae9..4a1232b3c224 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini @@ -4,4 +4,3 @@ [Hit test within unscaled box] expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini deleted file mode 100644 index 87ccfe19bb4d..000000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[elementFromPoint-float-in-table.html] - [float-in-div] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini index 35c0730f5a13..1a06450c5c18 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini @@ -19,4 +19,3 @@ [test the top of layer] expected: FAIL - diff --git a/tests/wpt/mozilla/meta-layout-2020/css/__dir__.ini b/tests/wpt/mozilla/meta-layout-2020/css/__dir__.ini new file mode 100644 index 000000000000..43a774a6216c --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/__dir__.ini @@ -0,0 +1 @@ +prefs: ["layout.floats.enabled:true"] diff --git a/tests/wpt/mozilla/meta-layout-2020/css/abs_float_pref_width.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/abs_float_pref_width.html.ini deleted file mode 100644 index c6455058c8ce..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/abs_float_pref_width.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[abs_float_pref_width.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/background_position_shorthand.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/background_position_shorthand.html.ini new file mode 100644 index 000000000000..032c59f959f5 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/background_position_shorthand.html.ini @@ -0,0 +1,2 @@ +[background_position_shorthand.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_a.html.ini new file mode 100644 index 000000000000..766e4b3cd9d2 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_cleared_float_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_cleared_float_a.html.ini new file mode 100644 index 000000000000..6248b681b958 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_cleared_float_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_cleared_float_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_complex_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_complex_a.html.ini new file mode 100644 index 000000000000..5498e467c6ef --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_complex_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_complex_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_containing_floats_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_containing_floats_a.html.ini new file mode 100644 index 000000000000..433da8446067 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_containing_floats_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_containing_floats_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_inorder_interaction_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_inorder_interaction_a.html.ini new file mode 100644 index 000000000000..d4170437ae98 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_inorder_interaction_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_float_inorder_interaction_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_placement_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_placement_a.html.ini new file mode 100644 index 000000000000..21e5b2e4fb50 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_float_placement_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_float_placement_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_margin_inout_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_margin_inout_a.html.ini deleted file mode 100644 index 7bb6c05416f1..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_margin_inout_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[block_formatting_context_margin_inout_a.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_max_width_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_max_width_a.html.ini deleted file mode 100644 index 72df7976703f..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_max_width_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[block_formatting_context_max_width_a.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_relative_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_relative_a.html.ini new file mode 100644 index 000000000000..27d6a36d72ed --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_relative_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_relative_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_translation_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_translation_a.html.ini new file mode 100644 index 000000000000..787730d24d06 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/block_formatting_context_translation_a.html.ini @@ -0,0 +1,2 @@ +[block_formatting_context_translation_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/box_sizing_sanity_check_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/box_sizing_sanity_check_a.html.ini new file mode 100644 index 000000000000..4b2eb3c32dc6 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/box_sizing_sanity_check_a.html.ini @@ -0,0 +1,2 @@ +[box_sizing_sanity_check_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/clear_generated_content_table_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/clear_generated_content_table_a.html.ini new file mode 100644 index 000000000000..c1692bba6b29 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/clear_generated_content_table_a.html.ini @@ -0,0 +1,2 @@ +[clear_generated_content_table_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/first_child_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/first_child_pseudo_a.html.ini new file mode 100644 index 000000000000..d3a6e42c59ef --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/first_child_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[first_child_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/first_of_type_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/first_of_type_pseudo_a.html.ini new file mode 100644 index 000000000000..a00dc9daf30d --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/first_of_type_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[first_of_type_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/fixed_width_overrides_child_intrinsic_width_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/fixed_width_overrides_child_intrinsic_width_a.html.ini new file mode 100644 index 000000000000..85e60ef47e57 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/fixed_width_overrides_child_intrinsic_width_a.html.ini @@ -0,0 +1,2 @@ +[fixed_width_overrides_child_intrinsic_width_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/float-abspos.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/float-abspos.html.ini deleted file mode 100644 index 50046a020469..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/float-abspos.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[float-abspos.html] - [A positioned element's float value computes to none] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta-layout-2020/css/float_clearance_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/float_clearance_a.html.ini new file mode 100644 index 000000000000..b364decba15d --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/float_clearance_a.html.ini @@ -0,0 +1,2 @@ +[float_clearance_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/float_clearance_intrinsic_width_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/float_clearance_intrinsic_width_a.html.ini new file mode 100644 index 000000000000..f8d91241d5a3 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/float_clearance_intrinsic_width_a.html.ini @@ -0,0 +1,2 @@ +[float_clearance_intrinsic_width_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/float_cleared_with_just_height.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/float_cleared_with_just_height.html.ini deleted file mode 100644 index f36539484891..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/float_cleared_with_just_height.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[float_cleared_with_just_height.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/float_intrinsic_height.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/float_intrinsic_height.html.ini new file mode 100644 index 000000000000..195358c73b42 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/float_intrinsic_height.html.ini @@ -0,0 +1,2 @@ +[float_intrinsic_height.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/float_relative_to_position.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/float_relative_to_position.html.ini deleted file mode 100644 index fa68160e6434..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/float_relative_to_position.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[float_relative_to_position.html] - [Tests the relationship between float and position] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta-layout-2020/css/float_under_top_margin_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/float_under_top_margin_a.html.ini new file mode 100644 index 000000000000..4ff77391b715 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/float_under_top_margin_a.html.ini @@ -0,0 +1,2 @@ +[float_under_top_margin_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/floated_list_item_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/floated_list_item_a.html.ini new file mode 100644 index 000000000000..0b72c548d719 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/floated_list_item_a.html.ini @@ -0,0 +1,2 @@ +[floated_list_item_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/floated_negative_margins_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/floated_negative_margins_a.html.ini new file mode 100644 index 000000000000..318e3cca6ea9 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/floated_negative_margins_a.html.ini @@ -0,0 +1,2 @@ +[floated_negative_margins_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/floated_table_with_margin_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/floated_table_with_margin_a.html.ini new file mode 100644 index 000000000000..06ce4557c80d --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/floated_table_with_margin_a.html.ini @@ -0,0 +1,2 @@ +[floated_table_with_margin_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/floats_margin_collapse_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/floats_margin_collapse_a.html.ini deleted file mode 100644 index 6460fdb80363..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/floats_margin_collapse_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[floats_margin_collapse_a.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/floats_percentage_width_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/floats_percentage_width_a.html.ini new file mode 100644 index 000000000000..9822997db62a --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/floats_percentage_width_a.html.ini @@ -0,0 +1,2 @@ +[floats_percentage_width_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/incremental_float_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/incremental_float_a.html.ini new file mode 100644 index 000000000000..49abdc5cab93 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/incremental_float_a.html.ini @@ -0,0 +1,2 @@ +[incremental_float_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/input_alignment_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/input_alignment_a.html.ini deleted file mode 100644 index 0e2cd2e610f8..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/input_alignment_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[input_alignment_a.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/intrinsic_border_box.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/intrinsic_border_box.html.ini new file mode 100644 index 000000000000..fc40b2cc92b2 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/intrinsic_border_box.html.ini @@ -0,0 +1,2 @@ +[intrinsic_border_box.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/last_child_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/last_child_pseudo_a.html.ini new file mode 100644 index 000000000000..58734a209972 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/last_child_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[last_child_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/last_of_type_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/last_of_type_pseudo_a.html.ini new file mode 100644 index 000000000000..b96002a4a135 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/last_of_type_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[last_of_type_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/negative_margin_uncle_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/negative_margin_uncle_a.html.ini new file mode 100644 index 000000000000..2e06085fa09d --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/negative_margin_uncle_a.html.ini @@ -0,0 +1,2 @@ +[negative_margin_uncle_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/nth_child_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/nth_child_pseudo_a.html.ini new file mode 100644 index 000000000000..1c7622d3563d --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/nth_child_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[nth_child_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/nth_last_child_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/nth_last_child_pseudo_a.html.ini new file mode 100644 index 000000000000..56966cd3d784 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/nth_last_child_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[nth_last_child_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/nth_last_of_type_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/nth_last_of_type_pseudo_a.html.ini new file mode 100644 index 000000000000..94178c8d4d1d --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/nth_last_of_type_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[nth_last_of_type_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/nth_of_type_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/nth_of_type_pseudo_a.html.ini new file mode 100644 index 000000000000..f8216f754f9d --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/nth_of_type_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[nth_of_type_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/only_child_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/only_child_pseudo_a.html.ini new file mode 100644 index 000000000000..5d9266f67b99 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/only_child_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[only_child_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/only_of_type_pseudo_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/only_of_type_pseudo_a.html.ini new file mode 100644 index 000000000000..8a6734a82665 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/only_of_type_pseudo_a.html.ini @@ -0,0 +1,2 @@ +[only_of_type_pseudo_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/percentage_height_float_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/percentage_height_float_a.html.ini new file mode 100644 index 000000000000..81adaf011d0e --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/percentage_height_float_a.html.ini @@ -0,0 +1,2 @@ +[percentage_height_float_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/position_relative_stacking_context_contents_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/position_relative_stacking_context_contents_a.html.ini deleted file mode 100644 index 63c286cb005c..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/css/position_relative_stacking_context_contents_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[position_relative_stacking_context_contents_a.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/css/stacked_layers.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/stacked_layers.html.ini index e13feb290c61..c9e9e5fb7058 100644 --- a/tests/wpt/mozilla/meta-layout-2020/css/stacked_layers.html.ini +++ b/tests/wpt/mozilla/meta-layout-2020/css/stacked_layers.html.ini @@ -1,2 +1,2 @@ [stacked_layers.html] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/mozilla/meta-layout-2020/css/table_float_translation_a.html.ini b/tests/wpt/mozilla/meta-layout-2020/css/table_float_translation_a.html.ini new file mode 100644 index 000000000000..dfe4ec5cf4d1 --- /dev/null +++ b/tests/wpt/mozilla/meta-layout-2020/css/table_float_translation_a.html.ini @@ -0,0 +1,2 @@ +[table_float_translation_a.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta-layout-2020/mozilla/hit_test_multiple_sc.html.ini b/tests/wpt/mozilla/meta-layout-2020/mozilla/hit_test_multiple_sc.html.ini deleted file mode 100644 index 8ed8088a59f5..000000000000 --- a/tests/wpt/mozilla/meta-layout-2020/mozilla/hit_test_multiple_sc.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit_test_multiple_sc.html] - [Hit testing works for following stacking contexts] - expected: FAIL -