diff --git a/Cargo.lock b/Cargo.lock index a1c3ad202c1..5d9d24f98bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1265,7 +1265,7 @@ dependencies = [ [[package]] name = "derive_common" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "darling", "proc-macro2", @@ -3454,7 +3454,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -3625,7 +3625,7 @@ dependencies = [ [[package]] name = "malloc_size_of" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "accountable-refcell", "app_units", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "selectors" version = "0.24.0" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "bitflags 2.5.0", "cssparser", @@ -5509,7 +5509,7 @@ dependencies = [ [[package]] name = "servo_arc" version = "0.2.0" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "nodrop", "serde", @@ -5519,7 +5519,7 @@ dependencies = [ [[package]] name = "servo_atoms" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "string_cache", "string_cache_codegen", @@ -5717,7 +5717,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "size_of_test" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "static_assertions", ] @@ -5858,7 +5858,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "static_prefs" version = "0.1.0" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" [[package]] name = "strict-num" @@ -5895,7 +5895,7 @@ dependencies = [ [[package]] name = "style" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "app_units", "arrayvec", @@ -5953,7 +5953,7 @@ dependencies = [ [[package]] name = "style_config" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "lazy_static", ] @@ -5961,7 +5961,7 @@ dependencies = [ [[package]] name = "style_derive" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "darling", "derive_common", @@ -5992,7 +5992,7 @@ dependencies = [ [[package]] name = "style_traits" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "app_units", "bitflags 2.5.0", @@ -6356,7 +6356,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "to_shmem" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "cssparser", "servo_arc", @@ -6369,7 +6369,7 @@ dependencies = [ [[package]] name = "to_shmem_derive" version = "0.0.1" -source = "git+https://github.com/servo/stylo?branch=2024-05-15#5e112c7bc6bf6dc78d2b5eeb0251b5ddb3e6585f" +source = "git+https://github.com/servo/stylo?branch=2024-05-15#71b0b0ac1d42b221fccee9034da06bfbf481f0d0" dependencies = [ "darling", "derive_common", diff --git a/components/gfx/tests/text_util.rs b/components/gfx/tests/text_util.rs index cb5a1d5c253..e5fef94f646 100644 --- a/components/gfx/tests/text_util.rs +++ b/components/gfx/tests/text_util.rs @@ -2,108 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use gfx::text::util::{is_cjk, transform_text, CompressionMode}; - -#[test] -fn test_transform_compress_none() { - let test_strs = [ - " foo bar", - "foo bar ", - "foo\n bar", - "foo \nbar", - " foo bar \nbaz", - "foo bar baz", - "foobarbaz\n\n", - ]; - - let mode = CompressionMode::CompressNone; - for &test in test_strs.iter() { - let mut trimmed_str = String::new(); - transform_text(test, mode, true, &mut trimmed_str); - assert_eq!(trimmed_str, test) - } -} - -#[test] -fn test_transform_discard_newline() { - let test_strs = [ - (" foo bar", " foo bar"), - ("foo bar ", "foo bar "), - ("foo\n bar", "foo bar"), - ("foo \nbar", "foo bar"), - (" foo bar \nbaz", " foo bar baz"), - ("foo bar baz", "foo bar baz"), - ("foobarbaz\n\n", "foobarbaz"), - ]; - - let mode = CompressionMode::DiscardNewline; - for &(test, oracle) in test_strs.iter() { - let mut trimmed_str = String::new(); - transform_text(test, mode, true, &mut trimmed_str); - assert_eq!(trimmed_str, oracle) - } -} - -#[test] -fn test_transform_compress_whitespace() { - let test_strs = [ - (" foo bar", "foo bar"), - ("foo bar ", "foo bar "), - ("foo\n bar", "foo\n bar"), - ("foo \nbar", "foo \nbar"), - (" foo bar \nbaz", "foo bar \nbaz"), - ("foo bar baz", "foo bar baz"), - ("foobarbaz\n\n", "foobarbaz\n\n"), - ]; - - let mode = CompressionMode::CompressWhitespace; - for &(test, oracle) in test_strs.iter() { - let mut trimmed_str = String::new(); - transform_text(test, mode, true, &mut trimmed_str); - assert_eq!(&*trimmed_str, oracle) - } -} - -#[test] -fn test_transform_compress_whitespace_newline() { - let test_strs = vec![ - (" foo bar", "foo bar"), - ("foo bar ", "foo bar "), - ("foo\n bar", "foo bar"), - ("foo \nbar", "foo bar"), - (" foo bar \nbaz", "foo bar baz"), - ("foo bar baz", "foo bar baz"), - ("foobarbaz\n\n", "foobarbaz "), - ]; - - let mode = CompressionMode::CompressWhitespaceNewline; - for &(test, oracle) in test_strs.iter() { - let mut trimmed_str = String::new(); - transform_text(test, mode, true, &mut trimmed_str); - assert_eq!(&*trimmed_str, oracle) - } -} - -#[test] -fn test_transform_compress_whitespace_newline_no_incoming() { - let test_strs = [ - (" foo bar", " foo bar"), - ("\nfoo bar", " foo bar"), - ("foo bar ", "foo bar "), - ("foo\n bar", "foo bar"), - ("foo \nbar", "foo bar"), - (" foo bar \nbaz", " foo bar baz"), - ("foo bar baz", "foo bar baz"), - ("foobarbaz\n\n", "foobarbaz "), - ]; - - let mode = CompressionMode::CompressWhitespaceNewline; - for &(test, oracle) in test_strs.iter() { - let mut trimmed_str = String::new(); - transform_text(test, mode, false, &mut trimmed_str); - assert_eq!(trimmed_str, oracle) - } -} +use gfx::text::util::is_cjk; #[test] fn test_is_cjk() { diff --git a/components/gfx/text/glyph.rs b/components/gfx/text/glyph.rs index 5be5af3708a..30705ab9d0f 100644 --- a/components/gfx/text/glyph.rs +++ b/components/gfx/text/glyph.rs @@ -3,6 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use std::cmp::{Ordering, PartialOrd}; +use std::sync::Arc; use std::vec::Vec; use std::{fmt, mem, u16}; @@ -773,3 +774,24 @@ impl<'a> Iterator for GlyphIterator<'a> { } } } + +/// A single series of glyphs within a text run. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct GlyphRun { + /// The glyphs. + pub glyph_store: Arc, + /// The byte range of characters in the containing run. + pub range: Range, +} + +impl GlyphRun { + pub fn compare(&self, key: &ByteIndex) -> Ordering { + if *key < self.range.begin() { + Ordering::Greater + } else if *key >= self.range.end() { + Ordering::Less + } else { + Ordering::Equal + } + } +} diff --git a/components/gfx/text/mod.rs b/components/gfx/text/mod.rs index bd8707615ba..ae61aab1031 100644 --- a/components/gfx/text/mod.rs +++ b/components/gfx/text/mod.rs @@ -5,11 +5,9 @@ use unicode_properties::{emoji, UnicodeEmoji}; pub use crate::text::shaping::Shaper; -pub use crate::text::text_run::TextRun; pub mod glyph; pub mod shaping; -pub mod text_run; pub mod util; #[derive(Clone, Copy, Debug)] diff --git a/components/gfx/text/util.rs b/components/gfx/text/util.rs index 016e18f2b56..0efa16cec7b 100644 --- a/components/gfx/text/util.rs +++ b/components/gfx/text/util.rs @@ -4,106 +4,6 @@ use ucd::{Codepoint, UnicodeBlock}; -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub enum CompressionMode { - CompressNone, - CompressWhitespace, - CompressWhitespaceNewline, - DiscardNewline, -} - -// ported from Gecko's nsTextFrameUtils::TransformText. -// -// High level TODOs: -// -// * Issue #113: consider incoming text state (arabic, etc) -// and propagate outgoing text state (dual of above) -// -// * Issue #114: record skipped and kept chars for mapping original to new text -// -// * Untracked: various edge cases for bidi, CJK, etc. -pub fn transform_text( - text: &str, - mode: CompressionMode, - incoming_whitespace: bool, - output_text: &mut String, -) -> bool { - let out_whitespace = match mode { - CompressionMode::CompressNone | CompressionMode::DiscardNewline => { - for ch in text.chars() { - if is_discardable_char(ch, mode) { - // TODO: record skipped char - } else { - // TODO: record kept char - if ch == '\t' { - // TODO: set "has tab" flag - } - output_text.push(ch); - } - } - false - }, - - CompressionMode::CompressWhitespace | CompressionMode::CompressWhitespaceNewline => { - let mut in_whitespace: bool = incoming_whitespace; - for ch in text.chars() { - // TODO: discard newlines between CJK chars - let mut next_in_whitespace: bool = is_in_whitespace(ch, mode); - - if !next_in_whitespace { - if is_always_discardable_char(ch) { - // revert whitespace setting, since this char was discarded - next_in_whitespace = in_whitespace; - // TODO: record skipped char - } else { - // TODO: record kept char - output_text.push(ch); - } - } else { - /* next_in_whitespace; possibly add a space char */ - if in_whitespace { - // TODO: record skipped char - } else { - // TODO: record kept char - output_text.push(' '); - } - } - // save whitespace context for next char - in_whitespace = next_in_whitespace; - } /* /for str::each_char */ - in_whitespace - }, - }; - - return out_whitespace; - - fn is_in_whitespace(ch: char, mode: CompressionMode) -> bool { - match (ch, mode) { - (' ', _) => true, - ('\t', _) => true, - ('\n', CompressionMode::CompressWhitespaceNewline) => true, - (_, _) => false, - } - } - - fn is_discardable_char(ch: char, mode: CompressionMode) -> bool { - if is_always_discardable_char(ch) { - return true; - } - match mode { - CompressionMode::DiscardNewline | CompressionMode::CompressWhitespaceNewline => { - ch == '\n' - }, - _ => false, - } - } - - fn is_always_discardable_char(ch: char) -> bool { - // TODO: check for soft hyphens. - is_bidi_control(ch) - } -} - pub fn float_to_fixed(before: usize, f: f64) -> i32 { ((1i32 << before) as f64 * f) as i32 } diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index f7b50524604..41eff374fb8 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -9,7 +9,7 @@ publish = false [lib] name = "layout_2013" path = "lib.rs" -test = false +test = true doctest = false [dependencies] diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 62257e17d8b..c018448360e 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -21,7 +21,6 @@ use euclid::default::{Point2D, Rect, SideOffsets2D as UntypedSideOffsets2D, Size use euclid::{rect, SideOffsets2D}; use fnv::FnvHashMap; use gfx::text::glyph::ByteIndex; -use gfx::text::TextRun; use ipc_channel::ipc; use log::{debug, warn}; use net_traits::image_cache::UsePlaceholder; @@ -73,6 +72,7 @@ use crate::fragment::{ use crate::inline::InlineFragmentNodeFlags; use crate::model::MaybeAuto; use crate::table_cell::CollapsedBordersForCell; +use crate::text_run::TextRun; static THREAD_TINT_COLORS: [ColorF; 8] = [ ColorF { diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 7ddcbdb2e6b..f6cd9b3fc3e 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -16,7 +16,6 @@ use bitflags::bitflags; use canvas_traits::canvas::{CanvasId, CanvasMsg}; use euclid::default::{Point2D, Rect, Size2D, Vector2D}; use gfx::text::glyph::ByteIndex; -use gfx::text::text_run::{TextRun, TextRunSlice}; use html5ever::{local_name, namespace_url, ns}; use ipc_channel::ipc::IpcSender; use log::debug; @@ -72,6 +71,7 @@ use crate::model::{ self, style_length, IntrinsicISizes, IntrinsicISizesContribution, MaybeAuto, SizeConstraint, }; use crate::text::TextRunScanner; +use crate::text_run::{TextRun, TextRunSlice}; use crate::wrapper::ThreadSafeLayoutNodeHelpers; use crate::{text, ServoArc}; diff --git a/components/layout/inline.rs b/components/layout/inline.rs index fa56f83979f..733235ed09f 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -1502,7 +1502,9 @@ impl Flow for InlineFlow { .union_nonbreaking_inline(&intrinsic_sizes_for_fragment) }, ( - WhiteSpaceCollapse::Preserve | WhiteSpaceCollapse::PreserveBreaks, + WhiteSpaceCollapse::Preserve | + WhiteSpaceCollapse::PreserveBreaks | + WhiteSpaceCollapse::BreakSpaces, TextWrapMode::Nowrap, ) => { intrinsic_sizes_for_nonbroken_run @@ -1520,7 +1522,9 @@ impl Flow for InlineFlow { } }, ( - WhiteSpaceCollapse::Preserve | WhiteSpaceCollapse::PreserveBreaks, + WhiteSpaceCollapse::Preserve | + WhiteSpaceCollapse::PreserveBreaks | + WhiteSpaceCollapse::BreakSpaces, TextWrapMode::Wrap, ) => { // Flush the intrinsic sizes we were gathering up for the nonbroken run, if diff --git a/components/layout/lib.rs b/components/layout/lib.rs index 3a3e4dc9908..af624c58628 100644 --- a/components/layout/lib.rs +++ b/components/layout/lib.rs @@ -36,6 +36,7 @@ mod table_row; mod table_rowgroup; mod table_wrapper; mod text; +mod text_run; pub mod traversal; pub mod wrapper; diff --git a/components/layout/text.rs b/components/layout/text.rs index f774d3d1ffa..444bf9d1297 100644 --- a/components/layout/text.rs +++ b/components/layout/text.rs @@ -12,8 +12,7 @@ use app_units::Au; use gfx::font::{self, FontMetrics, FontRef, RunMetrics, ShapingFlags, ShapingOptions}; use gfx::font_cache_thread::FontIdentifier; use gfx::text::glyph::ByteIndex; -use gfx::text::text_run::TextRun; -use gfx::text::util::{self, CompressionMode}; +use gfx::text::util::is_bidi_control; use log::{debug, warn}; use range::Range; use style::computed_values::text_rendering::T as TextRendering; @@ -35,6 +34,7 @@ use crate::fragment::{ }; use crate::inline::{InlineFragmentNodeFlags, InlineFragments}; use crate::linked_list::split_off_head; +use crate::text_run::TextRun; /// Returns the concatenated text of a list of unscanned text fragments. fn text(fragments: &LinkedList) -> String { @@ -192,7 +192,9 @@ impl TextRunScanner { font_group = font_context.font_group(font_style); compression = match in_fragment.white_space_collapse() { WhiteSpaceCollapse::Collapse => CompressionMode::CompressWhitespaceNewline, - WhiteSpaceCollapse::Preserve => CompressionMode::CompressNone, + WhiteSpaceCollapse::Preserve | WhiteSpaceCollapse::BreakSpaces => { + CompressionMode::CompressNone + }, WhiteSpaceCollapse::PreserveBreaks => CompressionMode::CompressWhitespace, }; text_transform = inherited_text_style.text_transform; @@ -712,7 +714,7 @@ impl RunMapping { ) { let was_empty = *start_position == end_position; let old_byte_length = run_info.text.len(); - *last_whitespace = util::transform_text( + *last_whitespace = transform_text( &text[(*start_position)..end_position], compression, *last_whitespace, @@ -828,3 +830,181 @@ fn is_compatible(a: Script, b: Script) -> bool { fn is_specific(script: Script) -> bool { script != Script::Common && script != Script::Inherited } + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum CompressionMode { + CompressNone, + CompressWhitespace, + CompressWhitespaceNewline, +} + +// ported from Gecko's nsTextFrameUtils::TransformText. +// +// High level TODOs: +// +// * Issue #113: consider incoming text state (arabic, etc) +// and propagate outgoing text state (dual of above) +// +// * Issue #114: record skipped and kept chars for mapping original to new text +// +// * Untracked: various edge cases for bidi, CJK, etc. +pub fn transform_text( + text: &str, + mode: CompressionMode, + incoming_whitespace: bool, + output_text: &mut String, +) -> bool { + let out_whitespace = match mode { + CompressionMode::CompressNone => { + for ch in text.chars() { + if is_discardable_char(ch, mode) { + // TODO: record skipped char + } else { + // TODO: record kept char + if ch == '\t' { + // TODO: set "has tab" flag + } + output_text.push(ch); + } + } + false + }, + + CompressionMode::CompressWhitespace | CompressionMode::CompressWhitespaceNewline => { + let mut in_whitespace: bool = incoming_whitespace; + for ch in text.chars() { + // TODO: discard newlines between CJK chars + let mut next_in_whitespace: bool = is_in_whitespace(ch, mode); + + if !next_in_whitespace { + if is_always_discardable_char(ch) { + // revert whitespace setting, since this char was discarded + next_in_whitespace = in_whitespace; + // TODO: record skipped char + } else { + // TODO: record kept char + output_text.push(ch); + } + } else { + /* next_in_whitespace; possibly add a space char */ + if in_whitespace { + // TODO: record skipped char + } else { + // TODO: record kept char + output_text.push(' '); + } + } + // save whitespace context for next char + in_whitespace = next_in_whitespace; + } /* /for str::each_char */ + in_whitespace + }, + }; + + return out_whitespace; + + fn is_in_whitespace(ch: char, mode: CompressionMode) -> bool { + match (ch, mode) { + (' ', _) => true, + ('\t', _) => true, + ('\n', CompressionMode::CompressWhitespaceNewline) => true, + (_, _) => false, + } + } + + fn is_discardable_char(ch: char, mode: CompressionMode) -> bool { + if is_always_discardable_char(ch) { + return true; + } + match mode { + CompressionMode::CompressWhitespaceNewline => ch == '\n', + _ => false, + } + } + + fn is_always_discardable_char(ch: char) -> bool { + // TODO: check for soft hyphens. + is_bidi_control(ch) + } +} + +#[test] +fn test_transform_compress_none() { + let test_strs = [ + " foo bar", + "foo bar ", + "foo\n bar", + "foo \nbar", + " foo bar \nbaz", + "foo bar baz", + "foobarbaz\n\n", + ]; + + let mode = CompressionMode::CompressNone; + for &test in test_strs.iter() { + let mut trimmed_str = String::new(); + transform_text(test, mode, true, &mut trimmed_str); + assert_eq!(trimmed_str, test) + } +} + +#[test] +fn test_transform_compress_whitespace() { + let test_strs = [ + (" foo bar", "foo bar"), + ("foo bar ", "foo bar "), + ("foo\n bar", "foo\n bar"), + ("foo \nbar", "foo \nbar"), + (" foo bar \nbaz", "foo bar \nbaz"), + ("foo bar baz", "foo bar baz"), + ("foobarbaz\n\n", "foobarbaz\n\n"), + ]; + + let mode = CompressionMode::CompressWhitespace; + for &(test, oracle) in test_strs.iter() { + let mut trimmed_str = String::new(); + transform_text(test, mode, true, &mut trimmed_str); + assert_eq!(&*trimmed_str, oracle) + } +} + +#[test] +fn test_transform_compress_whitespace_newline() { + let test_strs = vec![ + (" foo bar", "foo bar"), + ("foo bar ", "foo bar "), + ("foo\n bar", "foo bar"), + ("foo \nbar", "foo bar"), + (" foo bar \nbaz", "foo bar baz"), + ("foo bar baz", "foo bar baz"), + ("foobarbaz\n\n", "foobarbaz "), + ]; + + let mode = CompressionMode::CompressWhitespaceNewline; + for &(test, oracle) in test_strs.iter() { + let mut trimmed_str = String::new(); + transform_text(test, mode, true, &mut trimmed_str); + assert_eq!(&*trimmed_str, oracle) + } +} + +#[test] +fn test_transform_compress_whitespace_newline_no_incoming() { + let test_strs = [ + (" foo bar", " foo bar"), + ("\nfoo bar", " foo bar"), + ("foo bar ", "foo bar "), + ("foo\n bar", "foo bar"), + ("foo \nbar", "foo bar"), + (" foo bar \nbaz", " foo bar baz"), + ("foo bar baz", "foo bar baz"), + ("foobarbaz\n\n", "foobarbaz "), + ]; + + let mode = CompressionMode::CompressWhitespaceNewline; + for &(test, oracle) in test_strs.iter() { + let mut trimmed_str = String::new(); + transform_text(test, mode, false, &mut trimmed_str); + assert_eq!(trimmed_str, oracle) + } +} diff --git a/components/gfx/text/text_run.rs b/components/layout/text_run.rs similarity index 95% rename from components/gfx/text/text_run.rs rename to components/layout/text_run.rs index d4bec79564a..fed03e48822 100644 --- a/components/gfx/text/text_run.rs +++ b/components/layout/text_run.rs @@ -3,11 +3,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use std::cell::Cell; -use std::cmp::{max, Ordering}; +use std::cmp::max; use std::slice::Iter; use std::sync::Arc; use app_units::Au; +use gfx::font::{FontMetrics, FontRef, RunMetrics, ShapingFlags, ShapingOptions}; +use gfx::text::glyph::{ByteIndex, GlyphRun, GlyphStore}; use log::debug; use range::Range; use serde::{Deserialize, Serialize}; @@ -16,9 +18,6 @@ use unicode_bidi as bidi; use webrender_api::FontInstanceKey; use xi_unicode::LineBreakLeafIter; -use crate::font::{FontMetrics, FontRef, RunMetrics, ShapingFlags, ShapingOptions}; -use crate::text::glyph::{ByteIndex, GlyphStore}; - thread_local! { static INDEX_OF_FIRST_GLYPH_RUN_CACHE: Cell> = Cell::new(None) @@ -51,15 +50,6 @@ impl Drop for TextRun { } } -/// A single series of glyphs within a text run. -#[derive(Clone, Debug, Deserialize, Serialize)] -pub struct GlyphRun { - /// The glyphs. - pub glyph_store: Arc, - /// The byte range of characters in the containing run. - pub range: Range, -} - pub struct NaturalWordSliceIterator<'a> { glyphs: &'a [GlyphRun], index: usize, @@ -67,18 +57,6 @@ pub struct NaturalWordSliceIterator<'a> { reverse: bool, } -impl GlyphRun { - fn compare(&self, key: &ByteIndex) -> Ordering { - if *key < self.range.begin() { - Ordering::Greater - } else if *key >= self.range.end() { - Ordering::Less - } else { - Ordering::Equal - } - } -} - /// A "slice" of a text run is a series of contiguous glyphs that all belong to the same glyph /// store. Line breaking strategies yield these. pub struct TextRunSlice<'a> { diff --git a/components/layout_2020/flow/inline.rs b/components/layout_2020/flow/inline.rs index ecebd14c992..77b6db41db3 100644 --- a/components/layout_2020/flow/inline.rs +++ b/components/layout_2020/flow/inline.rs @@ -1361,7 +1361,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> { inline_size: Length, flags: SegmentContentFlags, ) { - if flags.is_collapsible_whitespace() || flags.is_wrappable_whitespace() { + if flags.is_collapsible_whitespace() || flags.is_wrappable_and_hangable() { self.current_line_segment.trailing_whitespace_size = inline_size; } else { self.current_line_segment.trailing_whitespace_size = Length::zero(); @@ -1497,7 +1497,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> { bitflags! { pub struct SegmentContentFlags: u8 { const COLLAPSIBLE_WHITESPACE = 0b00000001; - const WRAPPABLE_WHITESPACE = 0b00000010; + const WRAPPABLE_AND_HANGABLE_WHITESPACE = 0b00000010; } } @@ -1506,19 +1506,30 @@ impl SegmentContentFlags { self.contains(Self::COLLAPSIBLE_WHITESPACE) } - fn is_wrappable_whitespace(&self) -> bool { - self.contains(Self::WRAPPABLE_WHITESPACE) + fn is_wrappable_and_hangable(&self) -> bool { + self.contains(Self::WRAPPABLE_AND_HANGABLE_WHITESPACE) } } impl From<&InheritedText> for SegmentContentFlags { fn from(style_text: &InheritedText) -> Self { let mut flags = Self::empty(); - if style_text.white_space_collapse != WhiteSpaceCollapse::Preserve { + + // White-space with `white-space-collapse: break-spaces` or `white-space-collapse: preserve` + // never collapses. + if !matches!( + style_text.white_space_collapse, + WhiteSpaceCollapse::Preserve | WhiteSpaceCollapse::BreakSpaces + ) { flags.insert(Self::COLLAPSIBLE_WHITESPACE); } - if style_text.text_wrap_mode == TextWrapMode::Wrap { - flags.insert(Self::WRAPPABLE_WHITESPACE); + + // White-space with `white-space-collapse: break-spaces` never hangs and always takes up + // space. + if style_text.text_wrap_mode == TextWrapMode::Wrap && + style_text.white_space_collapse != WhiteSpaceCollapse::BreakSpaces + { + flags.insert(Self::WRAPPABLE_AND_HANGABLE_WHITESPACE); } flags } diff --git a/components/layout_2020/flow/line.rs b/components/layout_2020/flow/line.rs index 277f98752a9..77e428aa90e 100644 --- a/components/layout_2020/flow/line.rs +++ b/components/layout_2020/flow/line.rs @@ -152,9 +152,10 @@ pub(super) struct TextRunLineItem { impl TextRunLineItem { fn trim_whitespace_at_end(&mut self, whitespace_trimmed: &mut Length) -> bool { - if self.parent_style.get_inherited_text().white_space_collapse == - WhiteSpaceCollapse::Preserve - { + if matches!( + self.parent_style.get_inherited_text().white_space_collapse, + WhiteSpaceCollapse::Preserve | WhiteSpaceCollapse::BreakSpaces + ) { return false; } @@ -177,9 +178,10 @@ impl TextRunLineItem { } fn trim_whitespace_at_start(&mut self, whitespace_trimmed: &mut Length) -> bool { - if self.parent_style.get_inherited_text().white_space_collapse == - WhiteSpaceCollapse::Preserve - { + if matches!( + self.parent_style.get_inherited_text().white_space_collapse, + WhiteSpaceCollapse::Preserve | WhiteSpaceCollapse::BreakSpaces + ) { return false; } diff --git a/components/layout_2020/flow/text_run.rs b/components/layout_2020/flow/text_run.rs index 0ef5ee011fd..adcd27b3bb2 100644 --- a/components/layout_2020/flow/text_run.rs +++ b/components/layout_2020/flow/text_run.rs @@ -9,7 +9,7 @@ use app_units::Au; use gfx::font::{FontRef, ShapingFlags, ShapingOptions}; use gfx::font_cache_thread::FontCacheThread; use gfx::font_context::FontContext; -use gfx::text::text_run::GlyphRun; +use gfx::text::glyph::GlyphRun; use gfx_traits::ByteIndex; use log::warn; use range::Range; @@ -18,7 +18,10 @@ use servo_arc::Arc; use style::computed_values::text_rendering::T as TextRendering; use style::computed_values::white_space_collapse::T as WhiteSpaceCollapse; use style::computed_values::word_break::T as WordBreak; +use style::properties::style_structs::InheritedText; use style::properties::ComputedValues; +use style::str::char_is_whitespace; +use style::values::computed::OverflowWrap; use style::values::specified::text::TextTransformCase; use style::values::specified::TextTransform; use unicode_script::Script; @@ -256,14 +259,13 @@ impl TextRun { script: segment.script, flags, }; - (segment.runs, segment.break_at_start) = - gfx::text::text_run::TextRun::break_and_shape( - font, - &self.text - [segment.range.begin().0 as usize..segment.range.end().0 as usize], - &shaping_options, - linebreaker, - ); + (segment.runs, segment.break_at_start) = break_and_shape( + font, + &self.text[segment.range.begin().0 as usize..segment.range.end().0 as usize], + &inherited_text_style, + &shaping_options, + linebreaker, + ); segment }) @@ -590,8 +592,17 @@ where // > characters are considered collapsible // If whitespace is not considered collapsible, it is preserved entirely, which // means that we can simply return the input string exactly. - if self.white_space_collapse == WhiteSpaceCollapse::Preserve { - return self.char_iterator.next(); + if self.white_space_collapse == WhiteSpaceCollapse::Preserve || + self.white_space_collapse == WhiteSpaceCollapse::BreakSpaces + { + // From : + // > Carriage returns (U+000D) are treated identically to spaces (U+0020) in all respects. + // + // In the non-preserved case these are converted to space below. + return match self.char_iterator.next() { + Some('\r') => Some(' '), + next => next, + }; } if let Some(character) = self.character_pending_to_return.take() { @@ -830,3 +841,129 @@ where return Some((character, self.next_character.clone())); } } + +pub fn break_and_shape( + font: FontRef, + text: &str, + text_style: &InheritedText, + shaping_options: &ShapingOptions, + breaker: &mut Option, +) -> (Vec, bool) { + let mut glyphs = vec![]; + + if breaker.is_none() { + if text.is_empty() { + return (glyphs, true); + } + *breaker = Some(LineBreakLeafIter::new(text, 0)); + } + + let breaker = breaker.as_mut().unwrap(); + + let mut push_range = |range: &std::ops::Range, options: &ShapingOptions| { + glyphs.push(GlyphRun { + glyph_store: font.shape_text(&text[range.clone()], options), + range: Range::new( + ByteIndex(range.start as isize), + ByteIndex(range.len() as isize), + ), + }); + }; + + let can_break_anywhere = text_style.word_break == WordBreak::BreakAll || + text_style.overflow_wrap == OverflowWrap::Anywhere || + text_style.overflow_wrap == OverflowWrap::BreakWord; + + let mut break_at_zero = false; + let mut last_slice_end = 0; + while last_slice_end != text.len() { + let (break_index, _is_hard_break) = breaker.next(text); + if break_index == 0 { + break_at_zero = true; + } + + // Extend the slice to the next UAX#14 line break opportunity. + let mut slice = last_slice_end..break_index; + let word = &text[slice.clone()]; + + // Split off any trailing whitespace into a separate glyph run. + let mut whitespace = slice.end..slice.end; + let mut rev_char_indices = word.char_indices().rev().peekable(); + let ends_with_newline = rev_char_indices.peek().map_or(false, |&(_, c)| c == '\n'); + if let Some((first_white_space_index, first_white_space_character)) = rev_char_indices + .take_while(|&(_, c)| char_is_whitespace(c)) + .last() + { + whitespace.start = slice.start + first_white_space_index; + + // If line breaking for a piece of text that has `white-space-collapse: break-spaces` there + // is a line break opportunity *after* every preserved space, but not before. This means + // that we should not split off the first whitespace, unless that white-space is a preserved + // newline. + // + // An exception to this is if the style tells us that we can break in the middle of words. + if text_style.white_space_collapse == WhiteSpaceCollapse::BreakSpaces && + first_white_space_character != '\n' && + !can_break_anywhere + { + whitespace.start += first_white_space_character.len_utf8(); + } + + slice.end = whitespace.start; + } + + // If there's no whitespace and `word-break` is set to `keep-all`, try increasing the slice. + // TODO: This should only happen for CJK text. + let can_break_anywhere = text_style.word_break == WordBreak::BreakAll || + text_style.overflow_wrap == OverflowWrap::Anywhere || + text_style.overflow_wrap == OverflowWrap::BreakWord; + if whitespace.is_empty() && + break_index != text.len() && + text_style.word_break == WordBreak::KeepAll && + !can_break_anywhere + { + continue; + } + + // Only advance the last_slice_end if we are not going to try to expand the slice. + last_slice_end = break_index; + + // Push the non-whitespace part of the range. + if !slice.is_empty() { + push_range(&slice, shaping_options); + } + + if whitespace.is_empty() { + continue; + } + + let mut options = *shaping_options; + options + .flags + .insert(ShapingFlags::IS_WHITESPACE_SHAPING_FLAG); + + // If `white-space-collapse: break-spaces` is active, insert a line breaking opportunity + // between each white space character in the white space that we trimmed off. + if text_style.white_space_collapse == WhiteSpaceCollapse::BreakSpaces { + let start_index = whitespace.start; + for (index, character) in text[whitespace].char_indices() { + let index = start_index + index; + push_range(&(index..index + character.len_utf8()), &options); + } + continue; + } + + // The breaker breaks after every newline, so either there is none, + // or there is exactly one at the very end. In the latter case, + // split it into a different run. That's because shaping considers + // a newline to have the same advance as a space, but during layout + // we want to treat the newline as having no advance. + if ends_with_newline && whitespace.len() > 1 { + push_range(&(whitespace.start..whitespace.end - 1), &options); + push_range(&(whitespace.end - 1..whitespace.end), &options); + } else { + push_range(&whitespace, &options); + } + } + (glyphs, break_at_zero) +} diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-collapse-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-collapse-computed.html.ini deleted file mode 100644 index bac08e44a91..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-collapse-computed.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[white-space-collapse-computed.html] - [Property white-space-collapse value 'break-spaces'] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-collapse-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-collapse-valid.html.ini deleted file mode 100644 index 16362b7915f..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-collapse-valid.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[white-space-collapse-valid.html] - [e.style['white-space-collapse'\] = "break-spaces" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-computed.html.ini index 20a75f681bf..5ef4fb6fd61 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-computed.html.ini @@ -1,7 +1,3 @@ [white-space-computed.html] [Property white-space value 'break-spaces' computes to 'break-spaces'] expected: FAIL - - [Property white-space value 'break-spaces'] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-shorthand.html.ini index 9b68bae795e..cc25e4fd747 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-shorthand.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-shorthand.html.ini @@ -1,22 +1,4 @@ [white-space-shorthand.html] - [e.style['white-space'\] = "break-spaces" should set the property value] - expected: FAIL - - [Property white-space value 'break-spaces'] - expected: FAIL - - [e.style['white-space'\] = "break-spaces wrap" should set the property value] - expected: FAIL - - [Property white-space value 'break-spaces wrap'] - expected: FAIL - - [e.style['white-space'\] = "wrap break-spaces" should set the property value] - expected: FAIL - - [Property white-space value 'wrap break-spaces'] - expected: FAIL - [e.style['white-space'\] = "balance" should set the property value] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-valid.html.ini deleted file mode 100644 index 1ad73fcbb72..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/white-space-valid.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[white-space-valid.html] - [e.style['white-space'\] = "break-spaces" should set the property value] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-001.html.ini deleted file mode 100644 index 60df723fea1..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-tab-001.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-002.html.ini deleted file mode 100644 index abd0c320782..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-tab-002.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-space-and-text-alignment-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-space-and-text-alignment-004.html.ini deleted file mode 100644 index 69a27d8a034..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-space-and-text-alignment-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[trailing-space-and-text-alignment-004.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-letter-spacing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-letter-spacing-001.html.ini deleted file mode 100644 index ea0c28afe9a..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-letter-spacing-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[white-space-letter-spacing-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/inheritance.html.ini b/tests/wpt/meta/css/css-text/inheritance.html.ini index f52ec24d74c..c799d811e68 100644 --- a/tests/wpt/meta/css/css-text/inheritance.html.ini +++ b/tests/wpt/meta/css/css-text/inheritance.html.ini @@ -35,24 +35,6 @@ [Property text-wrap inherits] expected: FAIL - [Property overflow-wrap has initial value normal] - expected: FAIL - - [Property overflow-wrap inherits] - expected: FAIL - - [Property word-break has initial value normal] - expected: FAIL - - [Property word-break inherits] - expected: FAIL - - [Property word-wrap has initial value normal] - expected: FAIL - - [Property word-wrap inherits] - expected: FAIL - [Property text-wrap-style has initial value auto] expected: FAIL diff --git a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-anywhere-003.html.ini b/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-anywhere-003.html.ini deleted file mode 100644 index 4f7a36e2280..00000000000 --- a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-anywhere-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[overflow-wrap-anywhere-003.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html.ini b/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html.ini deleted file mode 100644 index 911e9122795..00000000000 --- a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[overflow-wrap-break-word-003.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html.ini b/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html.ini deleted file mode 100644 index b2783913393..00000000000 --- a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[overflow-wrap-break-word-006.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-008.html.ini b/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-008.html.ini deleted file mode 100644 index cce949c8c12..00000000000 --- a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-break-word-008.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[overflow-wrap-break-word-008.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html.ini b/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html.ini new file mode 100644 index 00000000000..6faeef871fd --- /dev/null +++ b/tests/wpt/meta/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html.ini @@ -0,0 +1,2 @@ +[overflow-wrap-normal-keep-all-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-text/overflow-wrap/word-wrap-alias.html.ini b/tests/wpt/meta/css/css-text/overflow-wrap/word-wrap-alias.html.ini deleted file mode 100644 index 95eca319c7c..00000000000 --- a/tests/wpt/meta/css/css-text/overflow-wrap/word-wrap-alias.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[word-wrap-alias.html] - [word-wrap should be defined as an alias of overflow-wrap] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/overflow-wrap-computed.html.ini b/tests/wpt/meta/css/css-text/parsing/overflow-wrap-computed.html.ini deleted file mode 100644 index 8a33903e813..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/overflow-wrap-computed.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[overflow-wrap-computed.html] - [Property overflow-wrap value 'normal'] - expected: FAIL - - [Property overflow-wrap value 'break-word'] - expected: FAIL - - [Property overflow-wrap value 'anywhere'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/overflow-wrap-valid.html.ini b/tests/wpt/meta/css/css-text/parsing/overflow-wrap-valid.html.ini deleted file mode 100644 index 57e42cb62f8..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/overflow-wrap-valid.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[overflow-wrap-valid.html] - [e.style['overflow-wrap'\] = "normal" should set the property value] - expected: FAIL - - [e.style['overflow-wrap'\] = "break-word" should set the property value] - expected: FAIL - - [e.style['overflow-wrap'\] = "anywhere" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/white-space-collapse-computed.html.ini b/tests/wpt/meta/css/css-text/parsing/white-space-collapse-computed.html.ini deleted file mode 100644 index bac08e44a91..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/white-space-collapse-computed.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[white-space-collapse-computed.html] - [Property white-space-collapse value 'break-spaces'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/white-space-collapse-valid.html.ini b/tests/wpt/meta/css/css-text/parsing/white-space-collapse-valid.html.ini deleted file mode 100644 index 16362b7915f..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/white-space-collapse-valid.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[white-space-collapse-valid.html] - [e.style['white-space-collapse'\] = "break-spaces" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/white-space-computed.html.ini b/tests/wpt/meta/css/css-text/parsing/white-space-computed.html.ini deleted file mode 100644 index 1d3df50a67a..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/white-space-computed.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[white-space-computed.html] - [Property white-space value 'break-spaces'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/white-space-shorthand.html.ini b/tests/wpt/meta/css/css-text/parsing/white-space-shorthand.html.ini index 9b68bae795e..cc25e4fd747 100644 --- a/tests/wpt/meta/css/css-text/parsing/white-space-shorthand.html.ini +++ b/tests/wpt/meta/css/css-text/parsing/white-space-shorthand.html.ini @@ -1,22 +1,4 @@ [white-space-shorthand.html] - [e.style['white-space'\] = "break-spaces" should set the property value] - expected: FAIL - - [Property white-space value 'break-spaces'] - expected: FAIL - - [e.style['white-space'\] = "break-spaces wrap" should set the property value] - expected: FAIL - - [Property white-space value 'break-spaces wrap'] - expected: FAIL - - [e.style['white-space'\] = "wrap break-spaces" should set the property value] - expected: FAIL - - [Property white-space value 'wrap break-spaces'] - expected: FAIL - [e.style['white-space'\] = "balance" should set the property value] expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/white-space-valid.html.ini b/tests/wpt/meta/css/css-text/parsing/white-space-valid.html.ini deleted file mode 100644 index b0c85a1621f..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/white-space-valid.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[white-space-valid.html] - [e.style['white-space'\] = "break-spaces" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/word-break-computed.html.ini b/tests/wpt/meta/css/css-text/parsing/word-break-computed.html.ini index 360187f4958..9e8df948b56 100644 --- a/tests/wpt/meta/css/css-text/parsing/word-break-computed.html.ini +++ b/tests/wpt/meta/css/css-text/parsing/word-break-computed.html.ini @@ -1,13 +1,4 @@ [word-break-computed.html] - [Property word-break value 'normal'] - expected: FAIL - - [Property word-break value 'keep-all'] - expected: FAIL - - [Property word-break value 'break-all'] - expected: FAIL - [Property word-break value 'break-word'] expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/word-break-valid.html.ini b/tests/wpt/meta/css/css-text/parsing/word-break-valid.html.ini index 78a0b53e5cf..fbc5d81efe9 100644 --- a/tests/wpt/meta/css/css-text/parsing/word-break-valid.html.ini +++ b/tests/wpt/meta/css/css-text/parsing/word-break-valid.html.ini @@ -1,13 +1,4 @@ [word-break-valid.html] - [e.style['word-break'\] = "normal" should set the property value] - expected: FAIL - - [e.style['word-break'\] = "keep-all" should set the property value] - expected: FAIL - - [e.style['word-break'\] = "break-all" should set the property value] - expected: FAIL - [e.style['word-break'\] = "break-word" should set the property value] expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/word-wrap-computed.html.ini b/tests/wpt/meta/css/css-text/parsing/word-wrap-computed.html.ini deleted file mode 100644 index 538d812120b..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/word-wrap-computed.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[word-wrap-computed.html] - [Property word-wrap value 'normal'] - expected: FAIL - - [Property word-wrap value 'break-word'] - expected: FAIL - - [Property word-wrap value 'anywhere'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/word-wrap-valid.html.ini b/tests/wpt/meta/css/css-text/parsing/word-wrap-valid.html.ini deleted file mode 100644 index 8ba532e6998..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/word-wrap-valid.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[word-wrap-valid.html] - [e.style['word-wrap'\] = "normal" should set the property value] - expected: FAIL - - [e.style['word-wrap'\] = "break-word" should set the property value] - expected: FAIL - - [e.style['word-wrap'\] = "anywhere" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-001.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-001.html.ini deleted file mode 100644 index 7c6bb38b1e9..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-003.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-003.html.ini deleted file mode 100644 index a160b7288b1..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-003.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-004.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-004.html.ini deleted file mode 100644 index 3b579655b8e..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-004.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-005.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-005.html.ini deleted file mode 100644 index c2c621bfe62..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-005.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-005.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-007.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-007.html.ini deleted file mode 100644 index 8f26da2e6ee..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-007.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-007.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-010.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-010.html.ini deleted file mode 100644 index b72f8f18a38..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-010.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-010.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-011.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-011.html.ini deleted file mode 100644 index 1f5e74a33d4..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-011.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-011.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-051.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-051.html.ini deleted file mode 100644 index a7f1149add4..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-051.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-051.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-052.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-052.html.ini deleted file mode 100644 index 988ad46616a..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-052.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-052.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-001.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-001.html.ini deleted file mode 100644 index 80aaeca0eeb..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-008.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-008.html.ini deleted file mode 100644 index 84f6384ca8c..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-008.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-008.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-009.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-009.html.ini deleted file mode 100644 index e999eeabd4f..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-009.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-009.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-010.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-010.html.ini deleted file mode 100644 index eff7d4cc6d5..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-010.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-010.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-011.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-011.html.ini deleted file mode 100644 index 306a987ef19..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-011.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-011.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-012.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-012.html.ini deleted file mode 100644 index e392aa6877a..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-012.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-012.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-013.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-013.html.ini deleted file mode 100644 index b3a82cd174f..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-013.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-013.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-016.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-016.html.ini deleted file mode 100644 index a2be3661272..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-016.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-016.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-017.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-017.html.ini deleted file mode 100644 index 12fc5765951..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-017.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-017.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-018.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-018.html.ini deleted file mode 100644 index b584d74aae3..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-before-first-char-018.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-before-first-char-018.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-011.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-011.html.ini deleted file mode 100644 index fdf5abac767..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-011.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-newline-011.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-012.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-012.html.ini deleted file mode 100644 index 098fde40fb1..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-012.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-newline-012.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-013.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-013.html.ini deleted file mode 100644 index b3b08d61395..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-013.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-newline-013.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-014.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-014.html.ini deleted file mode 100644 index 61a082b5e0f..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-014.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-newline-014.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-015.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-015.html.ini deleted file mode 100644 index c1b8824ba0f..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-015.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-newline-015.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-016.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-016.html.ini deleted file mode 100644 index c329c7f08b9..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-newline-016.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-newline-016.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-tab-003.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-tab-003.html.ini deleted file mode 100644 index 89e35aacba2..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-tab-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-tab-003.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-tab-004.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-tab-004.html.ini deleted file mode 100644 index ee3821915a7..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-tab-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-tab-004.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-003.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-003.html.ini deleted file mode 100644 index 9099541de3f..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-003.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-004.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-004.html.ini deleted file mode 100644 index 2de09bb7489..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-004.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-005.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-005.html.ini deleted file mode 100644 index a628f2c6a61..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-005.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-005.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-006.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-006.html.ini deleted file mode 100644 index a802a80f700..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-006.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-006.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-007.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-007.html.ini deleted file mode 100644 index 17362d676fd..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-007.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-007.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-008.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-008.html.ini deleted file mode 100644 index 4f3dd71e757..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-008.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-008.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-009.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-009.html.ini deleted file mode 100644 index 41d52652db6..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-009.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-009.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-010.html.ini b/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-010.html.ini deleted file mode 100644 index e4c87cfe658..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/break-spaces-with-overflow-wrap-010.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[break-spaces-with-overflow-wrap-010.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/hanging-whitespace-001.tentative.html.ini b/tests/wpt/meta/css/css-text/white-space/hanging-whitespace-001.tentative.html.ini deleted file mode 100644 index 31b71db70f9..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/hanging-whitespace-001.tentative.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[hanging-whitespace-001.tentative.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/textarea-break-spaces-001.html.ini b/tests/wpt/meta/css/css-text/white-space/textarea-break-spaces-001.html.ini deleted file mode 100644 index 9b7b6e3c872..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/textarea-break-spaces-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[textarea-break-spaces-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/white-space-letter-spacing-001.html.ini b/tests/wpt/meta/css/css-text/white-space/white-space-letter-spacing-001.html.ini deleted file mode 100644 index ea0c28afe9a..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/white-space-letter-spacing-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[white-space-letter-spacing-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-001.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-001.html.ini deleted file mode 100644 index 218fa1705d7..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-002.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-002.html.ini deleted file mode 100644 index 090c9d9e2ac..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-002.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-003.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-003.html.ini deleted file mode 100644 index d24bde326b7..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-003.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-005.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-005.html.ini deleted file mode 100644 index 7a5e9173840..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-005.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-005.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-006.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-006.html.ini deleted file mode 100644 index 3d3b8bf01fb..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-006.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-006.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-007.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-007.html.ini deleted file mode 100644 index fb9fb323996..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-007.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-007.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-008.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-008.html.ini deleted file mode 100644 index 366b54520fb..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-008.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-008.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-009.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-009.html.ini deleted file mode 100644 index 4afccbc597f..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-009.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-009.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-010.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-010.html.ini deleted file mode 100644 index cd7a4694b37..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-010.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-010.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-011.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-011.html.ini deleted file mode 100644 index 3f731145056..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-011.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-011.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-014.html.ini b/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-014.html.ini deleted file mode 100644 index 1d61127f7be..00000000000 --- a/tests/wpt/meta/css/css-text/white-space/ws-break-spaces-applies-to-014.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[ws-break-spaces-applies-to-014.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-001.html.ini b/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-001.html.ini deleted file mode 100644 index e896667fbc5..00000000000 --- a/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[word-break-keep-all-001.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-002.html.ini b/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-002.html.ini deleted file mode 100644 index 88e455b139a..00000000000 --- a/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[word-break-keep-all-002.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-010.html.ini b/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-010.html.ini deleted file mode 100644 index 851b8559322..00000000000 --- a/tests/wpt/meta/css/css-text/word-break/word-break-keep-all-010.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[word-break-keep-all-010.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta/css/word-break-keep-all-006.htm.ini b/tests/wpt/mozilla/meta/css/word-break-keep-all-006.htm.ini deleted file mode 100644 index 65ad4524b55..00000000000 --- a/tests/wpt/mozilla/meta/css/word-break-keep-all-006.htm.ini +++ /dev/null @@ -1,2 +0,0 @@ -[word-break-keep-all-006.htm] - expected: FAIL diff --git a/tests/wpt/mozilla/meta/css/word-break-keep-all-007.htm.ini b/tests/wpt/mozilla/meta/css/word-break-keep-all-007.htm.ini deleted file mode 100644 index 48e6b6c94b5..00000000000 --- a/tests/wpt/mozilla/meta/css/word-break-keep-all-007.htm.ini +++ /dev/null @@ -1,2 +0,0 @@ -[word-break-keep-all-007.htm] - expected: FAIL