layout: Enable rendering of conical-gradient and repeating-conical-gradient (#31597)

This also ignores a clippy warning for a new function (and a similar
existing one), until this code can be refactored to use temporary Rust
strutures to carry display list building state.

There are a few new test failures here:

 - FAIL [expected PASS] /css/css-images/image-set/image-set-conic-gradient-rendering.html
 - FAIL [expected PASS] /css/css-images/image-set/image-set-repeating-conic-gradient-rendering.html

 These fail because Servo does not yet support `image-set()`.

 - FAIL [expected PASS] /css/filter-effects/filter-function/filter-function-conic-gradient.html
 - FAIL [expected PASS] /css/filter-effects/filter-function/filter-function-repeating-conic-gradient.html

 These fail because Servo does not support the very early filter effects
 specification.

 - FAIL [expected PASS] /html/canvas/element/manual/fill-and-stroke-styles/conic-gradient-rotation.html
 - FAIL [expected PASS] /html/canvas/element/manual/fill-and-stroke-styles/conic-gradient.html

 These fail because this change only adds support for CSS conical
 gradients. Another set of changes will be necessary to support this for
 Canvas.
This commit is contained in:
Martin Robinson 2024-03-11 13:58:44 +01:00 committed by GitHub
parent de7b9bed85
commit 1d1f239ecc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
32 changed files with 161 additions and 405 deletions

26
Cargo.lock generated
View file

@ -1208,7 +1208,7 @@ dependencies = [
[[package]]
name = "derive_common"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"darling",
"proc-macro2",
@ -3463,7 +3463,7 @@ dependencies = [
[[package]]
name = "malloc_size_of"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"accountable-refcell",
"app_units",
@ -5075,7 +5075,7 @@ dependencies = [
[[package]]
name = "selectors"
version = "0.24.0"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"bitflags 1.3.2",
"cssparser",
@ -5363,7 +5363,7 @@ dependencies = [
[[package]]
name = "servo_arc"
version = "0.2.0"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"nodrop",
"serde",
@ -5373,7 +5373,7 @@ dependencies = [
[[package]]
name = "servo_atoms"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"string_cache",
"string_cache_codegen",
@ -5579,7 +5579,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
[[package]]
name = "size_of_test"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"static_assertions",
]
@ -5705,7 +5705,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "static_prefs"
version = "0.1.0"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
[[package]]
name = "str-buf"
@ -5748,7 +5748,7 @@ dependencies = [
[[package]]
name = "style"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"app_units",
"arrayvec",
@ -5806,7 +5806,7 @@ dependencies = [
[[package]]
name = "style_config"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"lazy_static",
]
@ -5814,7 +5814,7 @@ dependencies = [
[[package]]
name = "style_derive"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"darling",
"derive_common",
@ -5845,7 +5845,7 @@ dependencies = [
[[package]]
name = "style_traits"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"app_units",
"bitflags 1.3.2",
@ -6188,7 +6188,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "to_shmem"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"cssparser",
"servo_arc",
@ -6201,7 +6201,7 @@ dependencies = [
[[package]]
name = "to_shmem_derive"
version = "0.0.1"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#ca5648ca155a7cfc23dfd7fec61befe82f866879"
source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6"
dependencies = [
"darling",
"derive_common",

View file

@ -1019,7 +1019,7 @@ impl Fragment {
};
DisplayItem::RadialGradient(CommonDisplayItem::with_data(base, item, stops))
},
Gradient::Conic { .. } => unimplemented!(),
Gradient::Conic { .. } => return,
};
state.add_display_item(display_item);
});
@ -1273,7 +1273,7 @@ impl Fragment {
stops = radial_stops;
NinePatchBorderSource::RadialGradient(wr_gradient)
},
Gradient::Conic { .. } => unimplemented!(),
Gradient::Conic { .. } => return None,
},
_ => return None,
};

View file

@ -5,9 +5,12 @@
use style::color::mix::ColorInterpolationMethod;
use style::properties::ComputedValues;
use style::values::computed::image::{EndingShape, Gradient, LineDirection};
use style::values::computed::{Color, Length, LengthPercentage, Position};
use style::values::computed::{
Angle, AngleOrPercentage, Color, Length, LengthPercentage, Position,
};
use style::values::generics::image::{Circle, ColorStop, Ellipse, GradientItem, ShapeExtent};
use webrender_api::{self as wr, units};
use wr::ColorF;
pub(super) fn build(
style: &ComputedValues,
@ -56,7 +59,26 @@ pub(super) fn build(
layer,
builder,
),
Gradient::Conic { .. } => unimplemented!(),
Gradient::Conic {
angle,
position,
color_interpolation_method,
items,
repeating,
} => build_conic(
style,
*angle,
position,
*color_interpolation_method,
items,
if *repeating {
wr::ExtendMode::Repeat
} else {
wr::ExtendMode::Clamp
},
layer,
builder,
),
}
}
@ -148,7 +170,9 @@ pub(super) fn build_linear(
let start_point = center - half_gradient_line;
let end_point = center + half_gradient_line;
let stops = fixup_stops(style, items, Length::new(gradient_line_length));
let mut color_stops =
gradient_items_to_color_stops(style, items, Length::new(gradient_line_length));
let stops = fixup_stops(&mut color_stops);
let linear_gradient = builder
.wr()
.create_gradient(start_point, end_point, stops, extend_mode);
@ -162,6 +186,7 @@ pub(super) fn build_linear(
}
/// <https://drafts.csswg.org/css-images-3/#radial-gradients>
#[allow(clippy::too_many_arguments)]
pub(super) fn build_radial(
style: &ComputedValues,
items: &[GradientItem<Color, LengthPercentage>],
@ -249,7 +274,9 @@ pub(super) fn build_radial(
// where the gradient line intersects the ending shape.”
let gradient_line_length = radii.width;
let stops = fixup_stops(style, items, Length::new(gradient_line_length));
let mut color_stops =
gradient_items_to_color_stops(style, items, Length::new(gradient_line_length));
let stops = fixup_stops(&mut color_stops);
let radial_gradient = builder
.wr()
.create_radial_gradient(center, radii, stops, extend_mode);
@ -262,12 +289,48 @@ pub(super) fn build_radial(
)
}
/// <https://drafts.csswg.org/css-images-4/#color-stop-fixup>
fn fixup_stops(
/// <https://drafts.csswg.org/css-images-4/#conic-gradients>
#[allow(clippy::too_many_arguments)]
fn build_conic(
style: &ComputedValues,
items: &[GradientItem<Color, LengthPercentage>],
gradient_line_length: Length,
) -> Vec<wr::GradientStop> {
angle: Angle,
center: &Position,
_color_interpolation_method: ColorInterpolationMethod,
items: &[GradientItem<Color, AngleOrPercentage>],
extend_mode: wr::ExtendMode,
layer: &super::background::BackgroundLayer,
builder: &mut super::DisplayListBuilder<'_>,
) {
let gradient_box = layer.tile_size;
let center = units::LayoutPoint::new(
center
.horizontal
.percentage_relative_to(Length::new(gradient_box.width))
.px(),
center
.vertical
.percentage_relative_to(Length::new(gradient_box.height))
.px(),
);
let mut color_stops = conic_gradient_items_to_color_stops(style, items);
let stops = fixup_stops(&mut color_stops);
let conic_gradient =
builder
.wr()
.create_conic_gradient(center, angle.radians(), stops, extend_mode);
builder.wr().push_conic_gradient(
&layer.common,
layer.bounds,
conic_gradient,
layer.tile_size,
layer.tile_spacing,
)
}
fn conic_gradient_items_to_color_stops(
style: &ComputedValues,
items: &[GradientItem<Color, AngleOrPercentage>],
) -> Vec<ColorStop<ColorF, f32>> {
// Remove color transititon hints, which are not supported yet.
// https://drafts.csswg.org/css-images-4/#color-transition-hint
//
@ -278,28 +341,71 @@ fn fixup_stops(
// Either way, the best outcome is to add support.
// Gecko does so by approximating the non-linear interpolation
// by up to 10 piece-wise linear segments (9 intermediate color stops)
let mut stops = Vec::with_capacity(items.len());
for item in items {
match item {
GradientItem::SimpleColorStop(color) => stops.push(ColorStop {
color: super::rgba(style.resolve_color(color.clone())),
position: None,
}),
GradientItem::ComplexColorStop { color, position } => stops.push(ColorStop {
color: super::rgba(style.resolve_color(color.clone())),
position: Some(if gradient_line_length.px() == 0. {
0.
} else {
position.percentage_relative_to(gradient_line_length).px() /
gradient_line_length.px()
items
.iter()
.filter_map(|item| {
match item {
GradientItem::SimpleColorStop(color) => Some(ColorStop {
color: super::rgba(style.resolve_color(color.clone())),
position: None,
}),
GradientItem::ComplexColorStop { color, position } => Some(ColorStop {
color: super::rgba(style.resolve_color(color.clone())),
position: match position {
AngleOrPercentage::Percentage(percentage) => Some(percentage.0),
AngleOrPercentage::Angle(angle) => Some(angle.degrees() / 360.),
},
}),
}),
GradientItem::InterpolationHint(_) => {
// FIXME: approximate like in:
// https://searchfox.org/mozilla-central/rev/f98dad153b59a985efd4505912588d4651033395/layout/painting/nsCSSRenderingGradients.cpp#315-391
},
}
}
GradientItem::InterpolationHint(_) => None,
}
})
.collect()
}
fn gradient_items_to_color_stops(
style: &ComputedValues,
items: &[GradientItem<Color, LengthPercentage>],
gradient_line_length: Length,
) -> Vec<ColorStop<ColorF, f32>> {
// Remove color transititon hints, which are not supported yet.
// https://drafts.csswg.org/css-images-4/#color-transition-hint
//
// This gives an approximation of the gradient that might be visibly wrong,
// but maybe better than not parsing that value at all?
// Its debatble whether thats better or worse
// than not parsing and allowing authors to set a fallback.
// Either way, the best outcome is to add support.
// Gecko does so by approximating the non-linear interpolation
// by up to 10 piece-wise linear segments (9 intermediate color stops)
items
.iter()
.filter_map(|item| {
match item {
GradientItem::SimpleColorStop(color) => Some(ColorStop {
color: super::rgba(style.resolve_color(color.clone())),
position: None,
}),
GradientItem::ComplexColorStop { color, position } => Some(ColorStop {
color: super::rgba(style.resolve_color(color.clone())),
position: Some(if gradient_line_length.px() == 0. {
0.
} else {
position.percentage_relative_to(gradient_line_length).px() /
gradient_line_length.px()
}),
}),
// FIXME: approximate like in:
// https://searchfox.org/mozilla-central/rev/f98dad153b59a985efd4505912588d4651033395/layout/painting/nsCSSRenderingGradients.cpp#315-391
GradientItem::InterpolationHint(_) => None,
}
})
.collect()
}
/// <https://drafts.csswg.org/css-images-4/#color-stop-fixup>
fn fixup_stops(stops: &mut Vec<ColorStop<ColorF, f32>>) -> Vec<wr::GradientStop> {
assert!(stops.len() >= 2);
// https://drafts.csswg.org/css-images-4/#color-stop-fixup

View file

@ -1,48 +0,0 @@
[background-image-computed.sub.html]
[Property background-image value 'conic-gradient(at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg at 10px 10px, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg at 10px 10px, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg at 10px 10px, red, blue)']
expected: FAIL

View file

@ -1,7 +1,3 @@
[border-image-source-computed.sub.html]
[Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)' computes to 'conic-gradient(from 90deg at 80% 90%, rgb(0, 255, 0), rgb(0, 0, 0))']
expected: FAIL
[Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)']
expected: FAIL

View file

@ -1,86 +0,0 @@
[color-stops-parsing.html]
[conic-gradient(black, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black, green, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black, 25%, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% 50%, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black, green, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black, 25%, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% 50%, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
expected: FAIL

View file

@ -1943,18 +1943,6 @@
[Property background-image value 'radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 30deg, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(at left 10px top 50em, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 30deg, color(srgb 1 0 0), blue)']
expected: FAIL
[Property background-image value 'conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)']
expected: FAIL
[Property background-image value 'conic-gradient(in lab, red, blue)']
expected: FAIL

View file

@ -1943,18 +1943,6 @@
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(from 30deg, red, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(from 30deg, color(srgb 1 0 0), blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(in lab, red, blue)" should set the property value]
expected: FAIL
@ -3737,12 +3725,6 @@
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, red, 50%, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(from 30deg, red, 50%, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, 50%, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(in lab, red, 50%, blue)" should set the property value]
expected: FAIL

View file

@ -1,3 +0,0 @@
[calc-linear-radial-conic-gradient-001.html]
[testing background-image: conic-gradient(rgb(0, 128, 0) calc(50% + 10%), rgb(0, 0, 255) calc(60% + 20%))]
expected: FAIL

View file

@ -1,48 +0,0 @@
[background-image-computed.sub.html]
[Property background-image value 'conic-gradient(at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg at 10px 10px, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(from 0deg at 10px 10px, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg, rgb(255, 0, 0), rgb(0, 0, 255))']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg at center, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg at 50%, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from -45deg at 10px 10px, red, blue)']
expected: FAIL

View file

@ -1,4 +0,0 @@
[border-image-source-computed.sub.html]
[Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)']
expected: FAIL

View file

@ -1,2 +0,0 @@
[conic-gradient-angle-negative.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[conic-gradient-angle.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[conic-gradient-center.html]
expected: FAIL

View file

@ -1,84 +0,0 @@
[color-stops-parsing.html]
[conic-gradient(black, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black, green, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black, 25%, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% 50%, white) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
expected: FAIL
[conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black, green, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, green 50%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 50%, green 10%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black, 25%, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, 25%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0%, 15%, green 50%, 60%, white 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% 50%, white) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% 50%, white 50% 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% 50%, green 25% 75%, white 50% 100%) [ parsable \]]
expected: FAIL
[repeating-conic-gradient(black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%) [ parsable \]]
expected: FAIL

View file

@ -0,0 +1,2 @@
[image-set-conic-gradient-rendering.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[image-set-repeating-conic-gradient-rendering.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[multiple-position-color-stop-conic-2.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[multiple-position-color-stop-conic.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[normalization-conic-2.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[normalization-conic-degenerate.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[normalization-conic.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[out-of-range-color-stop-conic.html]
expected: FAIL

View file

@ -1943,18 +1943,6 @@
[Property background-image value 'radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 30deg, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(at left 10px top 50em, red, blue)']
expected: FAIL
[Property background-image value 'conic-gradient(from 30deg, color(srgb 1 0 0), blue)']
expected: FAIL
[Property background-image value 'conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)']
expected: FAIL
[Property background-image value 'conic-gradient(in lab, red, blue)']
expected: FAIL

View file

@ -1943,18 +1943,6 @@
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, color(srgb 1 0 0), blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(from 30deg, red, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(from 30deg, color(srgb 1 0 0), blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, color(srgb 1 0 0), blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(in lab, red, blue)" should set the property value]
expected: FAIL
@ -3737,12 +3725,6 @@
[e.style['background-image'\] = "radial-gradient(in oklch decreasing hue at right center, red, 50%, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(from 30deg, red, 50%, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(at left 10px top 50em, red, 50%, blue)" should set the property value]
expected: FAIL
[e.style['background-image'\] = "conic-gradient(in lab, red, 50%, blue)" should set the property value]
expected: FAIL

View file

@ -1,2 +0,0 @@
[repeating-conic-gradient.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[tiled-conic-gradients.html]
expected: FAIL

View file

@ -1,3 +0,0 @@
[calc-linear-radial-conic-gradient-001.html]
[testing background-image: conic-gradient(rgb(0, 128, 0) calc(50% + 10%), rgb(0, 0, 255) calc(60% + 20%))]
expected: FAIL

View file

@ -0,0 +1,2 @@
[filter-function-conic-gradient.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[filter-function-repeating-conic-gradient.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[conic-gradient-rotation.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[conic-gradient.html]
expected: FAIL