From 97376e6d96abcbdfd30f3a91ec5aee7ce2add178 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Mon, 22 Apr 2024 16:23:35 +0200 Subject: [PATCH] layout: Add a basic support for `list-style-position: outside` (#32114) This change adds very basic support for `list-style-position`. Currently, the marker does not do any kind of baseline alignment with the rest of the list item contents and it also doesn't force the list item to be at least as tall as the marker. This adds a few new failures: - Four failures because markers do not ensure that list-items have at least the same block size as they do: - FAIL [expected PASS] /css/CSS2/lists/list-style-applies-to-012.xht - FAIL [expected PASS] /css/CSS2/lists/list-style-applies-to-014.xht - FAIL [expected PASS] /css/CSS2/lists/list-style-type-applies-to-012.xht - FAIL [expected PASS] /css/CSS2/lists/list-style-type-applies-to-014.xht - One failure because we don't yet support the `::marker` pseudo-selector: - FAIL [expected PASS] /css/css-position/position-absolute-dynamic-list-marker.html - One failure because we don't support the list item exception for the line height quirk: - FAIL [expected PASS] /quirks/line-height-in-list-item.tentative.html Co-authored-by: Oriol Brufau Fixes #27383. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #27383. - [ ] There are tests for these changes OR - [ ] These changes do not require tests because ___ Co-authored-by: Oriol Brufau --- Cargo.lock | 26 +++--- Cargo.toml | 2 +- components/layout_2020/flow/construct.rs | 52 +++++++++-- components/layout_2020/flow/mod.rs | 93 ++++++++++++++++++- components/layout_2020/lists.rs | 13 ++- .../lists/list-style-applies-to-012.xht.ini | 2 + .../lists/list-style-applies-to-014.xht.ini | 2 + .../list-style-type-applies-to-012.xht.ini | 2 + .../list-style-type-applies-to-014.xht.ini | 2 + .../blocks/align-content-block-002.html.ini | 18 ---- .../css-lists-no-interpolation.html.ini | 87 ----------------- .../meta/css/css-lists/inheritance.html.ini | 6 -- .../list-and-block-textarea-001.html.ini | 3 - .../list-and-writing-mode-001.html.ini | 3 - .../parsing/list-style-computed.sub.html.ini | 6 -- .../list-style-position-computed.html.ini | 6 -- .../list-style-position-valid.html.ini | 6 -- .../parsing/list-style-shorthand.sub.html.ini | 3 - .../parsing/list-style-valid.html.ini | 33 ------- ...tion-absolute-dynamic-list-marker.html.ini | 2 + .../css-pseudo/marker-text-align-001.html.ini | 2 - .../css-pseudo/marker-text-align-002.html.ini | 2 - .../css-pseudo/marker-text-align-003.html.ini | 2 - .../elementFromPoint-list-001.html.ini | 15 --- .../meta/css/cssom/serialize-values.html.ini | 9 -- .../meta/css/cssom/shorthand-values.html.ini | 3 - .../button-layout/display-other.html.ini | 3 - ...ine-height-in-list-item.tentative.html.ini | 2 + .../css/list_style_image_sizing_a.html.ini | 2 - 29 files changed, 167 insertions(+), 240 deletions(-) create mode 100644 tests/wpt/meta/css/CSS2/lists/list-style-applies-to-012.xht.ini create mode 100644 tests/wpt/meta/css/CSS2/lists/list-style-applies-to-014.xht.ini create mode 100644 tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-012.xht.ini create mode 100644 tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-014.xht.ini delete mode 100644 tests/wpt/meta/css/css-lists/list-and-block-textarea-001.html.ini delete mode 100644 tests/wpt/meta/css/css-lists/list-and-writing-mode-001.html.ini delete mode 100644 tests/wpt/meta/css/css-lists/parsing/list-style-computed.sub.html.ini delete mode 100644 tests/wpt/meta/css/css-lists/parsing/list-style-position-computed.html.ini delete mode 100644 tests/wpt/meta/css/css-lists/parsing/list-style-position-valid.html.ini delete mode 100644 tests/wpt/meta/css/css-lists/parsing/list-style-shorthand.sub.html.ini delete mode 100644 tests/wpt/meta/css/css-lists/parsing/list-style-valid.html.ini create mode 100644 tests/wpt/meta/css/css-position/position-absolute-dynamic-list-marker.html.ini delete mode 100644 tests/wpt/meta/css/css-pseudo/marker-text-align-001.html.ini delete mode 100644 tests/wpt/meta/css/css-pseudo/marker-text-align-002.html.ini delete mode 100644 tests/wpt/meta/css/css-pseudo/marker-text-align-003.html.ini create mode 100644 tests/wpt/meta/quirks/line-height-in-list-item.tentative.html.ini delete mode 100644 tests/wpt/mozilla/meta/css/list_style_image_sizing_a.html.ini diff --git a/Cargo.lock b/Cargo.lock index 3861b4edcdd..3516c8d05f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1206,7 +1206,7 @@ dependencies = [ [[package]] name = "derive_common" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "darling", "proc-macro2", @@ -3550,7 +3550,7 @@ dependencies = [ [[package]] name = "malloc_size_of" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "accountable-refcell", "app_units", @@ -5163,7 +5163,7 @@ dependencies = [ [[package]] name = "selectors" version = "0.24.0" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "bitflags 2.5.0", "cssparser", @@ -5451,7 +5451,7 @@ dependencies = [ [[package]] name = "servo_arc" version = "0.2.0" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "nodrop", "serde", @@ -5461,7 +5461,7 @@ dependencies = [ [[package]] name = "servo_atoms" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "string_cache", "string_cache_codegen", @@ -5659,7 +5659,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "size_of_test" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "static_assertions", ] @@ -5785,7 +5785,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "static_prefs" version = "0.1.0" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" [[package]] name = "strict-num" @@ -5822,7 +5822,7 @@ dependencies = [ [[package]] name = "style" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "app_units", "arrayvec", @@ -5881,7 +5881,7 @@ dependencies = [ [[package]] name = "style_config" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "lazy_static", ] @@ -5889,7 +5889,7 @@ dependencies = [ [[package]] name = "style_derive" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "darling", "derive_common", @@ -5920,7 +5920,7 @@ dependencies = [ [[package]] name = "style_traits" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "app_units", "bitflags 2.5.0", @@ -6283,7 +6283,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "to_shmem" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "cssparser", "servo_arc", @@ -6296,7 +6296,7 @@ dependencies = [ [[package]] name = "to_shmem_derive" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-03-01#df595694fd3182d68ad2f4373795cd3b50eff9ac" +source = "git+https://github.com/servo/stylo?branch=2024-03-01#e26865ed1dee38ad5e750cc4bb3c81cd90bf9810" dependencies = [ "darling", "derive_common", diff --git a/Cargo.toml b/Cargo.toml index f2fd896ef61..3db5be3150c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -105,7 +105,7 @@ string_cache_codegen = "0.5" style = { git = "https://github.com/servo/stylo", branch = "2024-03-01", features = ["servo"] } style_config = { git = "https://github.com/servo/stylo", branch = "2024-03-01" } style_traits = { git = "https://github.com/servo/stylo", branch = "2024-03-01", features = ["servo"] } -# NOTE: the sm-angle feature only enables ANGLE on Windows, not other platforms! +# NOTE: the sm-angle feature only 2024-03-01rms! surfman = { version = "0.9", features = ["chains", "sm-angle", "sm-angle-default"] } syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] } synstructure = "0.13" diff --git a/components/layout_2020/flow/construct.rs b/components/layout_2020/flow/construct.rs index d61804751b0..02595e2b3c6 100644 --- a/components/layout_2020/flow/construct.rs +++ b/components/layout_2020/flow/construct.rs @@ -13,10 +13,13 @@ use style::selector_parser::PseudoElement; use style::str::char_is_whitespace; use style::values::specified::text::TextDecorationLine; +use super::OutsideMarker; use crate::cell::ArcRefCell; use crate::context::LayoutContext; use crate::dom::{BoxSlot, LayoutBox, NodeExt}; -use crate::dom_traversal::{Contents, NodeAndStyleInfo, NonReplacedContents, TraversalHandler}; +use crate::dom_traversal::{ + Contents, NodeAndStyleInfo, NonReplacedContents, PseudoElementContentItem, TraversalHandler, +}; use crate::flow::float::FloatBox; use crate::flow::inline::{InlineBox, InlineFormattingContext, InlineLevelBox}; use crate::flow::text_run::TextRun; @@ -98,6 +101,9 @@ enum BlockLevelCreator { display_inside: DisplayInside, contents: Contents, }, + OutsideMarker { + contents: Vec, + }, AnonymousTable { table_block: ArcRefCell, }, @@ -195,17 +201,12 @@ impl BlockContainer { if is_list_item { if let Some(marker_contents) = crate::lists::make_marker(context, info) { - let _position = info.style.clone_list_style_position(); - // FIXME: implement support for `outside` and remove this: - let position = ListStylePosition::Inside; - match position { + match info.style.clone_list_style_position() { ListStylePosition::Inside => { builder.handle_list_item_marker_inside(info, marker_contents) }, ListStylePosition::Outside => { - // FIXME: implement layout for this case - // https://github.com/servo/servo/issues/27383 - // and enable `list-style-position` and the `list-style` shorthand in Stylo. + builder.handle_list_item_marker_outside(info, marker_contents) }, } } @@ -452,6 +453,18 @@ where ); } + fn handle_list_item_marker_outside( + &mut self, + info: &NodeAndStyleInfo, + contents: Vec, + ) { + self.block_level_boxes.push(BlockLevelJob { + info: info.clone(), + box_slot: BoxSlot::dummy(), + kind: BlockLevelCreator::OutsideMarker { contents }, + }); + } + fn handle_inline_level_element( &mut self, info: &NodeAndStyleInfo, @@ -768,6 +781,29 @@ where display_inside, contents, ))), + BlockLevelCreator::OutsideMarker { contents } => { + let marker_style = context + .shared_context() + .stylist + .style_for_anonymous::( + &context.shared_context().guards, + &PseudoElement::ServoLegacyText, // FIMXE: use `PseudoElement::Marker` when we add it + &info.style, + ); + let info = info.new_replacing_style(marker_style.clone()); + let contents = NonReplacedContents::OfPseudoElement(contents); + let block_container = BlockContainer::construct( + context, + &info, + contents, + TextDecorationLine::empty(), + false, /* is_list_item */ + ); + ArcRefCell::new(BlockLevelBox::OutsideMarker(OutsideMarker { + style: marker_style, + block_container, + })) + }, BlockLevelCreator::AnonymousTable { table_block } => table_block, }; self.box_slot diff --git a/components/layout_2020/flow/mod.rs b/components/layout_2020/flow/mod.rs index 4067489219d..c04f85ae351 100644 --- a/components/layout_2020/flow/mod.rs +++ b/components/layout_2020/flow/mod.rs @@ -71,6 +71,10 @@ impl BlockContainer { #[derive(Debug, Serialize)] pub(crate) enum BlockLevelBox { + Independent(IndependentFormattingContext), + OutOfFlowAbsolutelyPositionedBox(ArcRefCell), + OutOfFlowFloatBox(FloatBox), + OutsideMarker(OutsideMarker), SameFormattingContextBlock { base_fragment_info: BaseFragmentInfo, #[serde(skip_serializing)] @@ -78,9 +82,6 @@ pub(crate) enum BlockLevelBox { contents: BlockContainer, contains_floats: bool, }, - OutOfFlowAbsolutelyPositionedBox(ArcRefCell), - OutOfFlowFloatBox(FloatBox), - Independent(IndependentFormattingContext), } impl BlockLevelBox { @@ -103,6 +104,7 @@ impl BlockLevelBox { BlockLevelBox::SameFormattingContextBlock { ref style, .. } => style, BlockLevelBox::OutOfFlowAbsolutelyPositionedBox(_) | BlockLevelBox::OutOfFlowFloatBox(_) => return true, + BlockLevelBox::OutsideMarker(_) => return false, BlockLevelBox::Independent(ref context) => { // FIXME: If the element doesn't fit next to floats, it will get clearance. // In that case this should be returning false. @@ -205,6 +207,81 @@ struct FlowLayout { #[derive(Clone, Copy)] struct CollapsibleWithParentStartMargin(bool); +/// The contentes of a BlockContainer created to render a list marker +/// for a list that has `list-style-position: outside`. +#[derive(Debug, Serialize)] +pub(crate) struct OutsideMarker { + #[serde(skip_serializing)] + pub style: Arc, + pub block_container: BlockContainer, +} + +impl OutsideMarker { + fn layout( + &self, + layout_context: &LayoutContext<'_>, + containing_block: &ContainingBlock<'_>, + positioning_context: &mut PositioningContext, + sequential_layout_state: Option<&mut SequentialLayoutState>, + collapsible_with_parent_start_margin: Option, + ) -> Fragment { + let content_sizes = self + .block_container + .inline_content_sizes(layout_context, containing_block.style.writing_mode); + let containing_block = ContainingBlock { + inline_size: content_sizes.max_content, + block_size: AuOrAuto::auto(), + style: &self.style, + }; + let flow_layout = self.block_container.layout( + layout_context, + positioning_context, + &containing_block, + sequential_layout_state, + collapsible_with_parent_start_margin.unwrap_or(CollapsibleWithParentStartMargin(false)), + ); + let max_inline_size = flow_layout.fragments.iter().fold( + Length::zero(), + |current_max, fragment| match fragment { + Fragment::Text(text) => current_max.max(text.rect.max_inline_position()), + Fragment::Image(image) => current_max.max(image.rect.max_inline_position()), + Fragment::Positioning(positioning) => { + current_max.max(positioning.rect.max_inline_position()) + }, + Fragment::Box(_) | + Fragment::Float(_) | + Fragment::AbsoluteOrFixedPositioned(_) | + Fragment::IFrame(_) => { + unreachable!("Found unexpected fragment type in outside list marker!"); + }, + }, + ); + + let content_rect = LogicalRect { + start_corner: LogicalVec2 { + inline: -max_inline_size, + block: Zero::zero(), + }, + size: LogicalVec2 { + inline: max_inline_size, + block: Zero::zero(), + }, + }; + + Fragment::Box(BoxFragment::new( + BaseFragmentInfo::anonymous(), + self.style.clone(), + flow_layout.fragments, + content_rect, + LogicalSides::zero(), + LogicalSides::zero(), + LogicalSides::zero(), + None, + CollapsedBlockMargins::zero(), + )) + } +} + impl BlockFormattingContext { pub(super) fn layout( &self, @@ -261,7 +338,8 @@ fn calculate_inline_content_size_for_block_level_boxes( ) -> ContentSizes { let get_box_info = |box_: &ArcRefCell| { match &mut *box_.borrow_mut() { - BlockLevelBox::OutOfFlowAbsolutelyPositionedBox(_) => None, + BlockLevelBox::OutOfFlowAbsolutelyPositionedBox(_) | + BlockLevelBox::OutsideMarker { .. } => None, BlockLevelBox::OutOfFlowFloatBox(ref mut float_box) => { let size = float_box .contents @@ -603,6 +681,13 @@ impl BlockLevelBox { positioning_context, containing_block, )), + BlockLevelBox::OutsideMarker(outside_marker) => outside_marker.layout( + layout_context, + containing_block, + positioning_context, + sequential_layout_state, + collapsible_with_parent_start_margin, + ), } } } diff --git a/components/layout_2020/lists.rs b/components/layout_2020/lists.rs index 6c71b5f34d0..b0e97ab02e3 100644 --- a/components/layout_2020/lists.rs +++ b/components/layout_2020/lists.rs @@ -55,11 +55,14 @@ where fn marker_string(style: &style_structs::List) -> Option<&'static str> { match style.list_style_type { ListStyleType::None => None, - ListStyleType::Disc => Some("• "), - ListStyleType::Circle => Some("◦ "), - ListStyleType::Square => Some("▪ "), - ListStyleType::DisclosureOpen => Some("▾ "), - ListStyleType::DisclosureClosed => Some("‣ "), + // TODO: Using non-breaking space here is a bit of a hack to give a bit of margin to outside + // markers, but really we should be setting `white-space: pre` on them instead. + // See https://github.com/w3c/csswg-drafts/issues/4891. + ListStyleType::Disc => Some("•\u{00a0}"), + ListStyleType::Circle => Some("◦\u{00a0}"), + ListStyleType::Square => Some("▪\u{00a0}"), + ListStyleType::DisclosureOpen => Some("▾\u{00a0}"), + ListStyleType::DisclosureClosed => Some("‣\u{00a0}"), ListStyleType::Decimal | ListStyleType::LowerAlpha | ListStyleType::UpperAlpha | diff --git a/tests/wpt/meta/css/CSS2/lists/list-style-applies-to-012.xht.ini b/tests/wpt/meta/css/CSS2/lists/list-style-applies-to-012.xht.ini new file mode 100644 index 00000000000..027694cbc28 --- /dev/null +++ b/tests/wpt/meta/css/CSS2/lists/list-style-applies-to-012.xht.ini @@ -0,0 +1,2 @@ +[list-style-applies-to-012.xht] + expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/lists/list-style-applies-to-014.xht.ini b/tests/wpt/meta/css/CSS2/lists/list-style-applies-to-014.xht.ini new file mode 100644 index 00000000000..495364a6ee8 --- /dev/null +++ b/tests/wpt/meta/css/CSS2/lists/list-style-applies-to-014.xht.ini @@ -0,0 +1,2 @@ +[list-style-applies-to-014.xht] + expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-012.xht.ini b/tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-012.xht.ini new file mode 100644 index 00000000000..0511dbed796 --- /dev/null +++ b/tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-012.xht.ini @@ -0,0 +1,2 @@ +[list-style-type-applies-to-012.xht] + expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-014.xht.ini b/tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-014.xht.ini new file mode 100644 index 00000000000..b11274a0c79 --- /dev/null +++ b/tests/wpt/meta/css/CSS2/lists/list-style-type-applies-to-014.xht.ini @@ -0,0 +1,2 @@ +[list-style-type-applies-to-014.xht] + expected: FAIL diff --git a/tests/wpt/meta/css/css-align/blocks/align-content-block-002.html.ini b/tests/wpt/meta/css/css-align/blocks/align-content-block-002.html.ini index c3b8af7cb96..08c317b7565 100644 --- a/tests/wpt/meta/css/css-align/blocks/align-content-block-002.html.ini +++ b/tests/wpt/meta/css/css-align/blocks/align-content-block-002.html.ini @@ -1,37 +1,22 @@ [align-content-block-002.html] - [.test 1: start] - expected: FAIL - [.test 2: center] expected: FAIL [.test 3: end] expected: FAIL - [.test 4: baseline] - expected: FAIL - [.test 5: last baseline] expected: FAIL - [.test 6: flex-start] - expected: FAIL - [.test 7: flex-end] expected: FAIL - [.test 8: unsafe start] - expected: FAIL - [.test 9: unsafe center] expected: FAIL [.test 10: unsafe end] expected: FAIL - [.test 11: safe start] - expected: FAIL - [.test 12: safe center] expected: FAIL @@ -41,9 +26,6 @@ [.test 14: space-evenly] expected: FAIL - [.test 15: space-between] - expected: FAIL - [.test 16: space-around] expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/css-lists-no-interpolation.html.ini b/tests/wpt/meta/css/css-lists/css-lists-no-interpolation.html.ini index 3145ad1ca86..d2f81cffb32 100644 --- a/tests/wpt/meta/css/css-lists/css-lists-no-interpolation.html.ini +++ b/tests/wpt/meta/css/css-lists/css-lists-no-interpolation.html.ini @@ -512,18 +512,6 @@ [CSS Transitions with transition-behavior:allow-discrete: property from [initial\] to [inside\] at (0.3) should be [initial\]] expected: FAIL - [CSS Transitions with transition-behavior:allow-discrete: property from [initial\] to [inside\] at (0.5) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition-behavior:allow-discrete: property from [initial\] to [inside\] at (0.6) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition-behavior:allow-discrete: property from [initial\] to [inside\] at (1) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition-behavior:allow-discrete: property from [initial\] to [inside\] at (1.5) should be [inside\]] - expected: FAIL - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property from [initial\] to [inside\] at (-0.3) should be [initial\]] expected: FAIL @@ -533,81 +521,6 @@ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property from [initial\] to [inside\] at (0.3) should be [initial\]] expected: FAIL - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property from [initial\] to [inside\] at (0.5) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property from [initial\] to [inside\] at (0.6) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property from [initial\] to [inside\] at (1) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property from [initial\] to [inside\] at (1.5) should be [inside\]] - expected: FAIL - - [CSS Transitions: property from [initial\] to [inside\] at (-0.3) should be [inside\]] - expected: FAIL - - [CSS Transitions: property from [initial\] to [inside\] at (0) should be [inside\]] - expected: FAIL - - [CSS Transitions: property from [initial\] to [inside\] at (0.3) should be [inside\]] - expected: FAIL - - [CSS Transitions: property from [initial\] to [inside\] at (0.5) should be [inside\]] - expected: FAIL - - [CSS Transitions: property from [initial\] to [inside\] at (0.6) should be [inside\]] - expected: FAIL - - [CSS Transitions: property from [initial\] to [inside\] at (1) should be [inside\]] - expected: FAIL - - [CSS Transitions: property from [initial\] to [inside\] at (1.5) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [initial\] to [inside\] at (-0.3) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [initial\] to [inside\] at (0) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [initial\] to [inside\] at (0.3) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [initial\] to [inside\] at (0.5) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [initial\] to [inside\] at (0.6) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [initial\] to [inside\] at (1) should be [inside\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [initial\] to [inside\] at (1.5) should be [inside\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inside\] at (-0.3) should be [initial\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inside\] at (0) should be [initial\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inside\] at (0.3) should be [initial\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inside\] at (0.5) should be [inside\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inside\] at (0.6) should be [inside\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inside\] at (1) should be [inside\]] - expected: FAIL - - [CSS Animations: property from [initial\] to [inside\] at (1.5) should be [inside\]] - expected: FAIL - [Web Animations: property from [initial\] to [inside\] at (-0.3) should be [initial\]] expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/inheritance.html.ini b/tests/wpt/meta/css/css-lists/inheritance.html.ini index 5daca305d21..5e8c3b35dfc 100644 --- a/tests/wpt/meta/css/css-lists/inheritance.html.ini +++ b/tests/wpt/meta/css/css-lists/inheritance.html.ini @@ -10,9 +10,3 @@ [Property counter-reset does not inherit] expected: FAIL - - [Property list-style-position has initial value outside] - expected: FAIL - - [Property list-style-position inherits] - expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/list-and-block-textarea-001.html.ini b/tests/wpt/meta/css/css-lists/list-and-block-textarea-001.html.ini deleted file mode 100644 index 1316aad4d5c..00000000000 --- a/tests/wpt/meta/css/css-lists/list-and-block-textarea-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[list-and-block-textarea-001.html] - [list and block textarea] - expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/list-and-writing-mode-001.html.ini b/tests/wpt/meta/css/css-lists/list-and-writing-mode-001.html.ini deleted file mode 100644 index 9f1ab7ba156..00000000000 --- a/tests/wpt/meta/css/css-lists/list-and-writing-mode-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[list-and-writing-mode-001.html] - [list and writing-mode] - expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/parsing/list-style-computed.sub.html.ini b/tests/wpt/meta/css/css-lists/parsing/list-style-computed.sub.html.ini deleted file mode 100644 index 61dde8542a9..00000000000 --- a/tests/wpt/meta/css/css-lists/parsing/list-style-computed.sub.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[list-style-computed.sub.html] - [Property list-style value 'inside none disc'] - expected: FAIL - - [Property list-style value 'inside url("https://web-platform.test/") square'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/parsing/list-style-position-computed.html.ini b/tests/wpt/meta/css/css-lists/parsing/list-style-position-computed.html.ini deleted file mode 100644 index b9f4cfcfeea..00000000000 --- a/tests/wpt/meta/css/css-lists/parsing/list-style-position-computed.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[list-style-position-computed.html] - [Property list-style-position value 'inside'] - expected: FAIL - - [Property list-style-position value 'outside'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/parsing/list-style-position-valid.html.ini b/tests/wpt/meta/css/css-lists/parsing/list-style-position-valid.html.ini deleted file mode 100644 index 204a915a6dc..00000000000 --- a/tests/wpt/meta/css/css-lists/parsing/list-style-position-valid.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[list-style-position-valid.html] - [e.style['list-style-position'\] = "inside" should set the property value] - expected: FAIL - - [e.style['list-style-position'\] = "outside" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/parsing/list-style-shorthand.sub.html.ini b/tests/wpt/meta/css/css-lists/parsing/list-style-shorthand.sub.html.ini deleted file mode 100644 index ad619d7368d..00000000000 --- a/tests/wpt/meta/css/css-lists/parsing/list-style-shorthand.sub.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[list-style-shorthand.sub.html] - [e.style['list-style'\] = "square url(\\"https://web-platform.test/\\") inside" should set list-style-position] - expected: FAIL diff --git a/tests/wpt/meta/css/css-lists/parsing/list-style-valid.html.ini b/tests/wpt/meta/css/css-lists/parsing/list-style-valid.html.ini deleted file mode 100644 index d8cd8ac1b4b..00000000000 --- a/tests/wpt/meta/css/css-lists/parsing/list-style-valid.html.ini +++ /dev/null @@ -1,33 +0,0 @@ -[list-style-valid.html] - [e.style['list-style'\] = "disc outside none" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "inside" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "inside disc" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "inside none" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "inside none none" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "none inside none" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "none none inside" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "none inside" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "square url(\\"https://example.com/\\") inside" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "square linear-gradient(red,blue) inside" should set the property value] - expected: FAIL - - [e.style['list-style'\] = "disc radial-gradient(circle, #006, #00a 90%, #0000af 100%,white 100%) inside" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-position/position-absolute-dynamic-list-marker.html.ini b/tests/wpt/meta/css/css-position/position-absolute-dynamic-list-marker.html.ini new file mode 100644 index 00000000000..64d0ec15137 --- /dev/null +++ b/tests/wpt/meta/css/css-position/position-absolute-dynamic-list-marker.html.ini @@ -0,0 +1,2 @@ +[position-absolute-dynamic-list-marker.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-pseudo/marker-text-align-001.html.ini b/tests/wpt/meta/css/css-pseudo/marker-text-align-001.html.ini deleted file mode 100644 index 29540f80251..00000000000 --- a/tests/wpt/meta/css/css-pseudo/marker-text-align-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[marker-text-align-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-pseudo/marker-text-align-002.html.ini b/tests/wpt/meta/css/css-pseudo/marker-text-align-002.html.ini deleted file mode 100644 index 8004bca1c41..00000000000 --- a/tests/wpt/meta/css/css-pseudo/marker-text-align-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[marker-text-align-002.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-pseudo/marker-text-align-003.html.ini b/tests/wpt/meta/css/css-pseudo/marker-text-align-003.html.ini deleted file mode 100644 index 9148be1475a..00000000000 --- a/tests/wpt/meta/css/css-pseudo/marker-text-align-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[marker-text-align-003.html] - expected: FAIL diff --git a/tests/wpt/meta/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/meta/css/cssom-view/elementFromPoint-list-001.html.ini index 25b6bdfe70c..1f892861935 100644 --- a/tests/wpt/meta/css/cssom-view/elementFromPoint-list-001.html.ini +++ b/tests/wpt/meta/css/cssom-view/elementFromPoint-list-001.html.ini @@ -13,18 +13,3 @@ [
  • Outside 1
  • ] expected: FAIL - - [
  • Image Inside 2
  • ] - expected: FAIL - - [
  • Image Inside 1
  • ] - expected: FAIL - - [
  • Inside 1
  • ] - expected: FAIL - - [
  • Inside 2
  • ] - expected: FAIL - - [
  • Inside 3
  • ] - expected: FAIL diff --git a/tests/wpt/meta/css/cssom/serialize-values.html.ini b/tests/wpt/meta/css/cssom/serialize-values.html.ini index 090ecf15c3b..322bac37aee 100644 --- a/tests/wpt/meta/css/cssom/serialize-values.html.ini +++ b/tests/wpt/meta/css/cssom/serialize-values.html.ini @@ -119,15 +119,6 @@ [empty-cells: inherit] expected: FAIL - [list-style-position: inside] - expected: FAIL - - [list-style-position: outside] - expected: FAIL - - [list-style-position: inherit] - expected: FAIL - [table-layout: auto] expected: FAIL diff --git a/tests/wpt/meta/css/cssom/shorthand-values.html.ini b/tests/wpt/meta/css/cssom/shorthand-values.html.ini index 84a78255653..3710426dcc7 100644 --- a/tests/wpt/meta/css/cssom/shorthand-values.html.ini +++ b/tests/wpt/meta/css/cssom/shorthand-values.html.ini @@ -11,8 +11,5 @@ [The serialization of border: 1px; border-top: 1px !important; should be canonical.] expected: FAIL - [The serialization of list-style-type: circle; list-style-position: inside; list-style-image: none; should be canonical.] - expected: FAIL - [The serialization of border-top: 1px; border-right: 1px; border-bottom: 1px; border-left: 1px; border-image: none; should be canonical.] expected: FAIL diff --git a/tests/wpt/meta/html/rendering/widgets/button-layout/display-other.html.ini b/tests/wpt/meta/html/rendering/widgets/button-layout/display-other.html.ini index 9b9b6ddf3dc..c71ab80b55f 100644 --- a/tests/wpt/meta/html/rendering/widgets/button-layout/display-other.html.ini +++ b/tests/wpt/meta/html/rendering/widgets/button-layout/display-other.html.ini @@ -5,9 +5,6 @@ [display: run-in] expected: FAIL - [display: list-item] - expected: FAIL - [display: ruby-base] expected: FAIL diff --git a/tests/wpt/meta/quirks/line-height-in-list-item.tentative.html.ini b/tests/wpt/meta/quirks/line-height-in-list-item.tentative.html.ini new file mode 100644 index 00000000000..d7ad6098d4d --- /dev/null +++ b/tests/wpt/meta/quirks/line-height-in-list-item.tentative.html.ini @@ -0,0 +1,2 @@ +[line-height-in-list-item.tentative.html] + expected: FAIL diff --git a/tests/wpt/mozilla/meta/css/list_style_image_sizing_a.html.ini b/tests/wpt/mozilla/meta/css/list_style_image_sizing_a.html.ini deleted file mode 100644 index 19e1ceccd51..00000000000 --- a/tests/wpt/mozilla/meta/css/list_style_image_sizing_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[list_style_image_sizing_a.html] - expected: FAIL