Bug 1823475 - Drop DefaultPosition and omit "at <position>" if it is not specified. r=devtools-reviewers,emilio

`at <position>` is optional value and we should omit it if author doesn't
specify it, for all basic-shape functions, and ray().

Note that there is a related interpolation issue [1] if one of the end values
doesn't specify `at <position>`. We didn't address this issue in this patch.

[1] https://github.com/w3c/csswg-drafts/issues/9068

Also, this updates the devtool code to give it the default value, "50% 50%",
for circle() and ellipse() if `at <position>` is not specified.

Differential Revision: https://phabricator.services.mozilla.com/D181918
This commit is contained in:
Boris Chiou 2023-09-26 21:05:20 +00:00
Родитель c18cb99e44
Коммит 0e32e6e42e
18 изменённых файлов: 49 добавлений и 1155 удалений

Просмотреть файл

@ -2171,7 +2171,9 @@ class ShapesHighlighter extends AutoRefreshHighlighter {
const values = definition.split("at");
let radius = values[0] ? values[0].trim() : "closest-side";
const { width, height } = this.currentDimensions;
const center = splitCoords(values[1]).map(
// This defaults to center if omitted.
const position = values[1] || "50% 50%";
const center = splitCoords(position).map(
this.convertCoordsToPercent.bind(this)
);
@ -2258,7 +2260,9 @@ class ShapesHighlighter extends AutoRefreshHighlighter {
}
const values = definition.split("at");
const center = splitCoords(values[1]).map(
// This defaults to center if omitted.
const position = values[1] || "50% 50%";
const center = splitCoords(position).map(
this.convertCoordsToPercent.bind(this)
);

Просмотреть файл

@ -51,7 +51,12 @@ nsPoint ShapeUtils::ComputeCircleOrEllipseCenter(
const auto& position = aBasicShape.IsCircle()
? aBasicShape.AsCircle().position
: aBasicShape.AsEllipse().position;
MOZ_ASSERT(position.IsPosition(), "A default position should be given");
// If position is not specified, we use 50% 50%.
if (position.IsAuto()) {
return ComputePosition(StylePosition::FromPercentage(0.5), aRefBox);
}
MOZ_ASSERT(position.IsPosition());
return ComputePosition(position.AsPosition(), aRefBox);
}

Просмотреть файл

@ -747,9 +747,9 @@ const basicShapesTests = [
},
// matching functions
{ start: "circle(100px)", end: "circle(500px)",
expected: ["circle", ["200px at 50% 50%"]] },
expected: ["circle", ["200px"]] },
{ start: "ellipse(100px 100px)", end: "ellipse(500px 500px)",
expected: ["ellipse", ["200px 200px at 50% 50%"]] },
expected: ["ellipse", ["200px 200px"]] },
{ start: "circle(100px at 100px 100px) border-box",
end: "circle(500px at 500px 500px) border-box",
expected: ["circle", ["200px at 200px 200px"], "border-box"]
@ -768,9 +768,9 @@ const basicShapesTests = [
},
// matching functions percentage
{ start: "circle(100%)", end: "circle(500%)",
expected: ["circle", ["200% at 50% 50%"]] },
expected: ["circle", ["200%"]] },
{ start: "ellipse(100% 100%)", end: "ellipse(500% 500%)",
expected: ["ellipse", ["200% 200% at 50% 50%"]] },
expected: ["ellipse", ["200% 200%"]] },
{ start: "circle(100% at 100% 100%) border-box",
end: "circle(500% at 500% 500%) border-box",
expected: ["circle", ["200% at 200% 200%"], "border-box"]
@ -788,14 +788,14 @@ const basicShapesTests = [
expected: ["inset", ["200% round 200%"], "border-box"] },
// matching functions with calc() values
{ start: "circle(calc(80px + 20px))", end: "circle(calc(200px + 300px))",
expected: ["circle", ["200px at 50% 50%"]] },
expected: ["circle", ["200px"]] },
{ start: "circle(calc(80% + 20%))", end: "circle(calc(200% + 300%))",
expected: ["circle", ["200% at 50% 50%"]] },
expected: ["circle", ["200%"]] },
{ start: "circle(calc(10px + 20%))", end: "circle(calc(50px + 40%))",
expected: ["circle", ["calc(25% + 20px) at 50% 50%"]] },
expected: ["circle", ["calc(25% + 20px)"]] },
// matching functions with interpolation between percentage/pixel values
{ start: "circle(20px)", end: "circle(100%)",
expected: ["circle", ["calc(25% + 15px) at 50% 50%"]] },
expected: ["circle", ["calc(25% + 15px)"]] },
{ start: "ellipse(100% 100px at 8px 20%) border-box",
end: "ellipse(40px 4% at 80% 60px) border-box",
expected: ["ellipse", ["calc(75% + 10px) calc(1% + 75px) at " +
@ -803,27 +803,27 @@ const basicShapesTests = [
"border-box"] },
// no interpolation for keywords
{ start: "circle()", end: "circle(50px)",
expected: ["circle", ["50px at 50% 50%"]] },
expected: ["circle", ["50px"]] },
{ start: "circle(closest-side)", end: "circle(500px)",
expected: ["circle", ["500px at 50% 50%"]] },
expected: ["circle", ["500px"]] },
{ start: "circle(farthest-side)", end: "circle(500px)",
expected: ["circle", ["500px at 50% 50%"]] },
expected: ["circle", ["500px"]] },
{ start: "circle(500px)", end: "circle(farthest-side)",
expected: ["circle", ["farthest-side at 50% 50%"]]},
expected: ["circle", ["farthest-side"]]},
{ start: "circle(500px)", end: "circle(closest-side)",
expected: ["circle", ["at 50% 50%"]]},
expected: ["circle", [""]]},
{ start: "ellipse()", end: "ellipse(50px 50px)",
expected: ["ellipse", ["50px 50px at 50% 50%"]] },
expected: ["ellipse", ["50px 50px"]] },
{ start: "ellipse(closest-side closest-side)", end: "ellipse(500px 500px)",
expected: ["ellipse", ["500px 500px at 50% 50%"]] },
expected: ["ellipse", ["500px 500px"]] },
{ start: "ellipse(farthest-side closest-side)", end: "ellipse(500px 500px)",
expected: ["ellipse", ["500px 500px at 50% 50%"]] },
expected: ["ellipse", ["500px 500px"]] },
{ start: "ellipse(farthest-side farthest-side)", end: "ellipse(500px 500px)",
expected: ["ellipse", ["500px 500px at 50% 50%"]] },
expected: ["ellipse", ["500px 500px"]] },
{ start: "ellipse(500px 500px)", end: "ellipse(farthest-side farthest-side)",
expected: ["ellipse", ["farthest-side farthest-side at 50% 50%"]] },
expected: ["ellipse", ["farthest-side farthest-side"]] },
{ start: "ellipse(500px 500px)", end: "ellipse(closest-side closest-side)",
expected: ["ellipse", ["at 50% 50%"]] },
expected: ["ellipse", [""]] },
// mismatching boxes
{ start: "circle(100px at 100px 100px) border-box",
end: "circle(500px at 500px 500px) content-box",
@ -847,14 +847,14 @@ const basicShapesTests = [
expected: ["ellipse", ["500px 500px at 500px 500px"], "border-box"]
},
{ start: "inset(0px round 20px)", end: "ellipse(500px 500px)",
expected: ["ellipse", ["500px 500px at 50% 50%"]]
expected: ["ellipse", ["500px 500px"]]
},
// shape to reference box
{ start: "circle(20px)", end: "content-box", expected: ["content-box"] },
{ start: "content-box", end: "circle(20px)", expected: ["circle", ["20px at 50% 50%"]] },
{ start: "content-box", end: "circle(20px)", expected: ["circle", ["20px"]] },
// url to shape
{ start: "circle(20px)", end: "url(http://localhost/a.png)", expected: ["url", ["\"http://localhost/a.png\""]] },
{ start: "url(http://localhost/a.png)", end: "circle(20px)", expected: ["circle", ["20px at 50% 50%"]] },
{ start: "url(http://localhost/a.png)", end: "circle(20px)", expected: ["circle", ["20px"]] },
// url to none
{ start: "none", end: "url(http://localhost/a.png)", expected: ["url", ["\"http://localhost/a.png\""]] },
{ start: "http://localhost/a.png", end: "none", expected: ["none"] },
@ -863,7 +863,7 @@ const basicShapesTests = [
const basicShapesWithFragmentUrlTests = [
// Fragment url to shape
{ start: "circle(20px)", end: "url('#a')", expected: ["url", ["\"#a\""]] },
{ start: "url('#a')", end: "circle(20px)", expected: ["circle", ["20px at 50% 50%"]] },
{ start: "url('#a')", end: "circle(20px)", expected: ["circle", ["20px"]] },
// Fragment url to none
{ start: "none", end: "url('#a')", expected: ["url", ["\"#a\""]] },
{ start: "url('#a')", end: "none", expected: ["none"] },

Просмотреть файл

@ -129,25 +129,6 @@ pub enum ShapeType {
Outline,
}
/// The default `at <position>` if it is omitted.
///
/// https://github.com/w3c/csswg-drafts/issues/8695
///
/// FIXME: Bug 1837340. It seems we should always omit this component if the author doesn't specify
/// it. In order to avoid changing the behavior on the shipped clip-path and shape-outside, we
/// still use center as their default value for now.
pub enum DefaultPosition {
/// Use standard default value, center, if "at <position>" is omitted.
Center,
/// The default value depends on the context. For example, offset-path:circle() may use the
/// value of offset-position as its default position of the circle center. So we shouldn't
/// assign a default value to its specified value and computed value. This makes the
/// serialization ignore this component (and makes this value non-interpolated with other
/// values which specify `at <position>`).
/// https://drafts.fxtf.org/motion-1/#valdef-offset-path-basic-shape
Context,
}
bitflags! {
/// The flags to represent which basic shapes we would like to support.
///
@ -219,15 +200,7 @@ where
loop {
if shape.is_none() {
shape = input
.try_parse(|i| {
BasicShape::parse(
context,
i,
flags,
ShapeType::Filled,
DefaultPosition::Center,
)
})
.try_parse(|i| BasicShape::parse(context, i, flags, ShapeType::Filled))
.ok();
}
@ -311,7 +284,6 @@ impl BasicShape {
input: &mut Parser<'i, 't>,
flags: AllowedBasicShapes,
shape_type: ShapeType,
default_position: DefaultPosition,
) -> Result<Self, ParseError<'i>> {
let location = input.current_source_location();
let function = input.expect_function()?.clone();
@ -339,11 +311,11 @@ impl BasicShape {
.map(BasicShape::Rect)
},
"circle" if flags.contains(AllowedBasicShapes::CIRCLE) => {
Circle::parse_function_arguments(context, i, default_position)
Circle::parse_function_arguments(context, i)
.map(BasicShape::Circle)
},
"ellipse" if flags.contains(AllowedBasicShapes::ELLIPSE) => {
Ellipse::parse_function_arguments(context, i, default_position)
Ellipse::parse_function_arguments(context, i)
.map(BasicShape::Ellipse)
},
"polygon" if flags.contains(AllowedBasicShapes::POLYGON) => {
@ -399,19 +371,12 @@ impl InsetRect {
fn parse_at_position<'i, 't>(
context: &ParserContext,
input: &mut Parser<'i, 't>,
default_position: DefaultPosition,
) -> Result<PositionOrAuto, ParseError<'i>> {
if input.try_parse(|i| i.expect_ident_matching("at")).is_ok() {
Position::parse(context, input).map(PositionOrAuto::Position)
} else {
// FIXME: Bug 1837340. Per spec issue, https://github.com/w3c/csswg-drafts/issues/8695, we
// may not serialize the optional `at <position>` for all basic shapes. So we will drop
// this later.
match default_position {
DefaultPosition::Center => Ok(PositionOrAuto::Position(Position::center())),
DefaultPosition::Context => Ok(PositionOrAuto::Auto),
}
return Position::parse(context, input).map(PositionOrAuto::Position);
}
Ok(PositionOrAuto::Auto)
}
impl Parse for Circle {
@ -420,9 +385,7 @@ impl Parse for Circle {
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> {
input.expect_function_matching("circle")?;
input.parse_nested_block(|i| {
Self::parse_function_arguments(context, i, DefaultPosition::Center)
})
input.parse_nested_block(|i| Self::parse_function_arguments(context, i))
}
}
@ -430,12 +393,11 @@ impl Circle {
fn parse_function_arguments<'i, 't>(
context: &ParserContext,
input: &mut Parser<'i, 't>,
default_position: DefaultPosition,
) -> Result<Self, ParseError<'i>> {
let radius = input
.try_parse(|i| ShapeRadius::parse(context, i))
.unwrap_or_default();
let position = parse_at_position(context, input, default_position)?;
let position = parse_at_position(context, input)?;
Ok(generic::Circle { radius, position })
}
@ -447,9 +409,7 @@ impl Parse for Ellipse {
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> {
input.expect_function_matching("ellipse")?;
input.parse_nested_block(|i| {
Self::parse_function_arguments(context, i, DefaultPosition::Center)
})
input.parse_nested_block(|i| Self::parse_function_arguments(context, i))
}
}
@ -457,7 +417,6 @@ impl Ellipse {
fn parse_function_arguments<'i, 't>(
context: &ParserContext,
input: &mut Parser<'i, 't>,
default_position: DefaultPosition,
) -> Result<Self, ParseError<'i>> {
let (semiaxis_x, semiaxis_y) = input
.try_parse(|i| -> Result<_, ParseError> {
@ -467,7 +426,7 @@ impl Ellipse {
))
})
.unwrap_or_default();
let position = parse_at_position(context, input, default_position)?;
let position = parse_at_position(context, input)?;
Ok(generic::Ellipse {
semiaxis_x,

Просмотреть файл

@ -150,9 +150,7 @@ impl Parse for OffsetPathFunction {
context: &ParserContext,
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> {
use crate::values::specified::basic_shape::{
AllowedBasicShapes, DefaultPosition, ShapeType,
};
use crate::values::specified::basic_shape::{AllowedBasicShapes, ShapeType};
// <offset-path> = <ray()> | <url> | <basic-shape>
// https://drafts.fxtf.org/motion-1/#typedef-offset-path
@ -175,14 +173,8 @@ impl Parse for OffsetPathFunction {
AllowedBasicShapes::PATH
};
BasicShape::parse(
context,
input,
allowed_shapes,
ShapeType::Outline,
DefaultPosition::Context,
)
.map(OffsetPathFunction::Shape)
BasicShape::parse(context, input, allowed_shapes, ShapeType::Outline)
.map(OffsetPathFunction::Shape)
}
}

Просмотреть файл

@ -1,6 +0,0 @@
[interpolation.html]
[Test circle with negative easing on clip-path]
expected: FAIL
[Test ellipse with negative easing on clip-path]
expected: FAIL

Просмотреть файл

@ -1,16 +1,7 @@
[clip-path-valid.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[e.style['clip-path'\] = "ellipse(1px closest-side)" should set the property value]
expected: FAIL
[e.style['clip-path'\] = "circle()" should set the property value]
expected: FAIL
[e.style['clip-path'\] = "circle(1px)" should set the property value]
expected: FAIL
[e.style['clip-path'\] = "circle(closest-side)" should set the property value]
[e.style['clip-path'\] = "ellipse(farthest-side 4% at bottom left)" should set the property value]
expected: FAIL
[e.style['clip-path'\] = "circle(farthest-side at center top)" should set the property value]
@ -18,9 +9,3 @@
[e.style['clip-path'\] = "circle(4% at top right)" should set the property value]
expected: FAIL
[e.style['clip-path'\] = "ellipse()" should set the property value]
expected: FAIL
[e.style['clip-path'\] = "ellipse(farthest-side 4% at bottom left)" should set the property value]
expected: FAIL

Просмотреть файл

@ -17,24 +17,6 @@
[Serialization of basic shapes 5]
expected: FAIL
[Serialization of basic shapes 6]
expected: FAIL
[Serialization of basic shapes 7]
expected: FAIL
[Serialization of basic shapes 8]
expected: FAIL
[Serialization of basic shapes 9]
expected: FAIL
[Serialization of basic shapes 10]
expected: FAIL
[Serialization of basic shapes 11]
expected: FAIL
[Serialization of basic shapes 14]
expected: FAIL

Просмотреть файл

@ -1,6 +0,0 @@
[basic-shape-interpolation.html]
[Test circle with negative easing on shape-outside]
expected: FAIL
[Test ellipse with negative easing on shape-outside]
expected: FAIL

Просмотреть файл

@ -4,32 +4,11 @@
[e.style['shape-outside'\] = "cross-fade(url(\\"https://example.com/\\"), green)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "circle()" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "circle(1px)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "circle(closest-side)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "circle(farthest-side at center top)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "circle(4% at top right)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "ellipse()" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "ellipse(3% 2%)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "ellipse(closest-side 1px)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "ellipse(farthest-side 4% at bottom left)" should set the property value]
expected: FAIL
[e.style['shape-outside'\] = "ellipse(10% closest-side)" should set the property value]
expected: FAIL

Просмотреть файл

@ -1,14 +0,0 @@
[shape-outside-circle-000.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[No arguments - inline]
expected: FAIL
[Radial argument only - inline]
expected: FAIL
[No arguments - computed]
expected: FAIL
[Radial argument only - computed]
expected: FAIL

Просмотреть файл

@ -1,32 +0,0 @@
[shape-outside-circle-001.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[circle() - inline]
expected: FAIL
[circle(50px) - inline]
expected: FAIL
[circle(50%) - inline]
expected: FAIL
[circle(closest-side) - inline]
expected: FAIL
[circle(farthest-side) - inline]
expected: FAIL
[circle() - computed]
expected: FAIL
[circle(50px) - computed]
expected: FAIL
[circle(50%) - computed]
expected: FAIL
[circle(closest-side) - computed]
expected: FAIL
[circle(farthest-side) - computed]
expected: FAIL

Просмотреть файл

@ -1,81 +0,0 @@
[shape-outside-circle-005.html]
prefs: [dom.innerSize.rounded:false]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[test unit: cm - circle(50cm) - inline]
expected: FAIL
[test unit: mm - circle(50mm) - inline]
expected: FAIL
[test unit: in - circle(50in) - inline]
expected: FAIL
[test unit: pt - circle(50pt) - inline]
expected: FAIL
[test unit: pc - circle(50pc) - inline]
expected: FAIL
[test unit: em - circle(50em) - inline]
expected: FAIL
[test unit: ex - circle(50ex) - inline]
expected: FAIL
[test unit: ch - circle(50ch) - inline]
expected: FAIL
[test unit: rem - circle(50rem) - inline]
expected: FAIL
[test unit: vw - circle(50vw) - inline]
expected: FAIL
[test unit: vh - circle(50vh) - inline]
expected: FAIL
[test unit: vmin - circle(50vmin) - inline]
expected: FAIL
[test unit: vmax - circle(50vmax) - inline]
expected: FAIL
[test unit: cm - circle(50cm) - computed]
expected: FAIL
[test unit: mm - circle(50mm) - computed]
expected: FAIL
[test unit: in - circle(50in) - computed]
expected: FAIL
[test unit: pt - circle(50pt) - computed]
expected: FAIL
[test unit: pc - circle(50pc) - computed]
expected: FAIL
[test unit: em - circle(50em) - computed]
expected: FAIL
[test unit: ex - circle(50ex) - computed]
expected: FAIL
[test unit: ch - circle(50ch) - computed]
expected: FAIL
[test unit: rem - circle(50rem) - computed]
expected: FAIL
[test unit: vw - circle(50vw) - computed]
expected: FAIL
[test unit: vh - circle(50vh) - computed]
expected: FAIL
[test unit: vmin - circle(50vmin) - computed]
expected: FAIL
[test unit: vmax - circle(50vmax) - computed]
expected: FAIL

Просмотреть файл

@ -1,50 +0,0 @@
[shape-outside-circle-006.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[circle(+10px) - inline]
expected: FAIL
[circle(+10.00px) - inline]
expected: FAIL
[circle(+20.340px) - inline]
expected: FAIL
[circle(+30.5px) - inline]
expected: FAIL
[circle(+10%) - inline]
expected: FAIL
[circle(+10.00%) - inline]
expected: FAIL
[circle(+20.350%) - inline]
expected: FAIL
[circle(+30.5%) - inline]
expected: FAIL
[circle(+10px) - computed]
expected: FAIL
[circle(+10.00px) - computed]
expected: FAIL
[circle(+20.340px) - computed]
expected: FAIL
[circle(+30.5px) - computed]
expected: FAIL
[circle(+10%) - computed]
expected: FAIL
[circle(+10.00%) - computed]
expected: FAIL
[circle(+20.350%) - computed]
expected: FAIL
[circle(+30.5%) - computed]
expected: FAIL

Просмотреть файл

@ -1,14 +0,0 @@
[shape-outside-ellipse-000.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[No arguments - inline]
expected: FAIL
[Radial arguments - inline]
expected: FAIL
[No arguments - computed]
expected: FAIL
[Radial arguments - computed]
expected: FAIL

Просмотреть файл

@ -1,110 +0,0 @@
[shape-outside-ellipse-001.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[ellipse(25% closest-side) - inline]
expected: FAIL
[ellipse(25px closest-side) - inline]
expected: FAIL
[ellipse(farthest-side closest-side) - inline]
expected: FAIL
[ellipse(25px farthest-side) - inline]
expected: FAIL
[ellipse(closest-side farthest-side) - inline]
expected: FAIL
[ellipse(25% farthest-side) - inline]
expected: FAIL
[ellipse(closest-side closest-side) - inline]
expected: FAIL
[ellipse() - inline]
expected: FAIL
[ellipse(25% 50px) - inline]
expected: FAIL
[ellipse(farthest-side 75%) - inline]
expected: FAIL
[ellipse(closest-side 75%) - inline]
expected: FAIL
[ellipse(closest-side 75px) - inline]
expected: FAIL
[ellipse(farthest-side farthest-side) - inline]
expected: FAIL
[ellipse(farthest-side 75px) - inline]
expected: FAIL
[ellipse(50px 25%) - inline]
expected: FAIL
[ellipse(50px 100px) - inline]
expected: FAIL
[ellipse(25% 50%) - inline]
expected: FAIL
[ellipse(100px 100px) - inline]
expected: FAIL
[ellipse() - computed]
expected: FAIL
[ellipse(50px 100px) - computed]
expected: FAIL
[ellipse(100px 100px) - computed]
expected: FAIL
[ellipse(25% 50%) - computed]
expected: FAIL
[ellipse(50px 25%) - computed]
expected: FAIL
[ellipse(25% 50px) - computed]
expected: FAIL
[ellipse(25% closest-side) - computed]
expected: FAIL
[ellipse(25px closest-side) - computed]
expected: FAIL
[ellipse(closest-side 75%) - computed]
expected: FAIL
[ellipse(closest-side 75px) - computed]
expected: FAIL
[ellipse(25% farthest-side) - computed]
expected: FAIL
[ellipse(25px farthest-side) - computed]
expected: FAIL
[ellipse(farthest-side 75%) - computed]
expected: FAIL
[ellipse(farthest-side 75px) - computed]
expected: FAIL
[ellipse(closest-side closest-side) - computed]
expected: FAIL
[ellipse(farthest-side farthest-side) - computed]
expected: FAIL
[ellipse(closest-side farthest-side) - computed]
expected: FAIL
[ellipse(farthest-side closest-side) - computed]
expected: FAIL

Просмотреть файл

@ -1,627 +1,2 @@
[shape-outside-ellipse-005.html]
prefs: [dom.innerSize.rounded:true]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[test unit: cm - ellipse(25cm closest-side) - inline]
expected: FAIL
[test unit: mm - ellipse(25mm closest-side) - inline]
expected: FAIL
[test unit: in - ellipse(25in closest-side) - inline]
expected: FAIL
[test unit: pt - ellipse(25pt closest-side) - inline]
expected: FAIL
[test unit: pc - ellipse(25pc closest-side) - inline]
expected: FAIL
[test unit: em - ellipse(25em closest-side) - inline]
expected: FAIL
[test unit: ex - ellipse(25ex closest-side) - inline]
expected: FAIL
[test unit: ch - ellipse(25ch closest-side) - inline]
expected: FAIL
[test unit: rem - ellipse(25rem closest-side) - inline]
expected: FAIL
[test unit: vw - ellipse(25vw closest-side) - inline]
expected: FAIL
[test unit: vh - ellipse(25vh closest-side) - inline]
expected: FAIL
[test unit: vmin - ellipse(25vmin closest-side) - inline]
expected: FAIL
[test unit: vmax - ellipse(25vmax closest-side) - inline]
expected: FAIL
[test unit: vmin - ellipse(50vmin 100vmin) - inline]
expected: FAIL
[test unit: pt - ellipse(50pt 100pt) - inline]
expected: FAIL
[test unit: vw - ellipse(farthest-side 75vw) - inline]
expected: FAIL
[test unit: vh - ellipse(25vh farthest-side) - inline]
expected: FAIL
[test unit: vmin - ellipse(25% 50vmin) - inline]
expected: FAIL
[test unit: ch - ellipse(100ch 100px) - inline]
expected: FAIL
[test unit: em - ellipse(50em 25%) - inline]
expected: FAIL
[test unit: ch - ellipse(farthest-side 75ch) - inline]
expected: FAIL
[test unit: mm - ellipse(25% 50mm) - inline]
expected: FAIL
[test unit: cm - ellipse(closest-side 75cm) - inline]
expected: FAIL
[test unit: pc - ellipse(25% 50pc) - inline]
expected: FAIL
[test unit: in - ellipse(100in 100px) - inline]
expected: FAIL
[test unit: in - ellipse(25in farthest-side) - inline]
expected: FAIL
[test unit: cm - ellipse(100cm 100px) - inline]
expected: FAIL
[test unit: em - ellipse(25em farthest-side) - inline]
expected: FAIL
[test unit: vw - ellipse(50vw 100vw) - inline]
expected: FAIL
[test unit: vmin - ellipse(closest-side 75vmin) - inline]
expected: FAIL
[test unit: pc - ellipse(farthest-side 75pc) - inline]
expected: FAIL
[test unit: vh - ellipse(25% 50vh) - inline]
expected: FAIL
[test unit: cm - ellipse(25cm farthest-side) - inline]
expected: FAIL
[test unit: vmax - ellipse(farthest-side 75vmax) - inline]
expected: FAIL
[test unit: cm - ellipse(farthest-side 75cm) - inline]
expected: FAIL
[test unit: ex - ellipse(50ex 100ex) - inline]
expected: FAIL
[test unit: in - ellipse(50in 25%) - inline]
expected: FAIL
[test unit: ch - ellipse(closest-side 75ch) - inline]
expected: FAIL
[test unit: vw - ellipse(25vw farthest-side) - inline]
expected: FAIL
[test unit: pc - ellipse(100pc 100px) - inline]
expected: FAIL
[test unit: vw - ellipse(25% 50vw) - inline]
expected: FAIL
[test unit: vw - ellipse(closest-side 75vw) - inline]
expected: FAIL
[test unit: vw - ellipse(100vw 100px) - inline]
expected: FAIL
[test unit: pt - ellipse(closest-side 75pt) - inline]
expected: FAIL
[test unit: rem - ellipse(closest-side 75rem) - inline]
expected: FAIL
[test unit: em - ellipse(100em 100px) - inline]
expected: FAIL
[test unit: mm - ellipse(100mm 100px) - inline]
expected: FAIL
[test unit: ch - ellipse(50ch 100ch) - inline]
expected: FAIL
[test unit: rem - ellipse(50rem 100rem) - inline]
expected: FAIL
[test unit: pc - ellipse(50pc 100pc) - inline]
expected: FAIL
[test unit: rem - ellipse(100rem 100px) - inline]
expected: FAIL
[test unit: in - ellipse(closest-side 75in) - inline]
expected: FAIL
[test unit: vmax - ellipse(50vmax 25%) - inline]
expected: FAIL
[test unit: mm - ellipse(farthest-side 75mm) - inline]
expected: FAIL
[test unit: pt - ellipse(100pt 100px) - inline]
expected: FAIL
[test unit: vmin - ellipse(100vmin 100px) - inline]
expected: FAIL
[test unit: in - ellipse(25% 50in) - inline]
expected: FAIL
[test unit: pc - ellipse(closest-side 75pc) - inline]
expected: FAIL
[test unit: in - ellipse(50in 100in) - inline]
expected: FAIL
[test unit: ex - ellipse(50ex 25%) - inline]
expected: FAIL
[test unit: in - ellipse(farthest-side 75in) - inline]
expected: FAIL
[test unit: pc - ellipse(50pc 25%) - inline]
expected: FAIL
[test unit: vmax - ellipse(25vmax farthest-side) - inline]
expected: FAIL
[test unit: vh - ellipse(50vh 100vh) - inline]
expected: FAIL
[test unit: rem - ellipse(25% 50rem) - inline]
expected: FAIL
[test unit: cm - ellipse(25% 50cm) - inline]
expected: FAIL
[test unit: ex - ellipse(25ex farthest-side) - inline]
expected: FAIL
[test unit: vh - ellipse(farthest-side 75vh) - inline]
expected: FAIL
[test unit: pt - ellipse(50pt 25%) - inline]
expected: FAIL
[test unit: mm - ellipse(closest-side 75mm) - inline]
expected: FAIL
[test unit: mm - ellipse(50mm 25%) - inline]
expected: FAIL
[test unit: pt - ellipse(25% 50pt) - inline]
expected: FAIL
[test unit: vmax - ellipse(50vmax 100vmax) - inline]
expected: FAIL
[test unit: em - ellipse(closest-side 75em) - inline]
expected: FAIL
[test unit: mm - ellipse(50mm 100mm) - inline]
expected: FAIL
[test unit: ch - ellipse(25ch farthest-side) - inline]
expected: FAIL
[test unit: pt - ellipse(25pt farthest-side) - inline]
expected: FAIL
[test unit: em - ellipse(farthest-side 75em) - inline]
expected: FAIL
[test unit: mm - ellipse(25mm farthest-side) - inline]
expected: FAIL
[test unit: cm - ellipse(50cm 100cm) - inline]
expected: FAIL
[test unit: ex - ellipse(farthest-side 75ex) - inline]
expected: FAIL
[test unit: vmin - ellipse(25vmin farthest-side) - inline]
expected: FAIL
[test unit: pt - ellipse(farthest-side 75pt) - inline]
expected: FAIL
[test unit: vw - ellipse(50vw 25%) - inline]
expected: FAIL
[test unit: ex - ellipse(25% 50ex) - inline]
expected: FAIL
[test unit: vh - ellipse(100vh 100px) - inline]
expected: FAIL
[test unit: ex - ellipse(100ex 100px) - inline]
expected: FAIL
[test unit: em - ellipse(25% 50em) - inline]
expected: FAIL
[test unit: ch - ellipse(50ch 25%) - inline]
expected: FAIL
[test unit: rem - ellipse(25rem farthest-side) - inline]
expected: FAIL
[test unit: vh - ellipse(50vh 25%) - inline]
expected: FAIL
[test unit: vmin - ellipse(50vmin 25%) - inline]
expected: FAIL
[test unit: pc - ellipse(25pc farthest-side) - inline]
expected: FAIL
[test unit: vmax - ellipse(100vmax 100px) - inline]
expected: FAIL
[test unit: cm - ellipse(50cm 25%) - inline]
expected: FAIL
[test unit: ex - ellipse(closest-side 75ex) - inline]
expected: FAIL
[test unit: em - ellipse(50em 100em) - inline]
expected: FAIL
[test unit: rem - ellipse(farthest-side 75rem) - inline]
expected: FAIL
[test unit: ch - ellipse(25% 50ch) - inline]
expected: FAIL
[test unit: rem - ellipse(50rem 25%) - inline]
expected: FAIL
[test unit: vmax - ellipse(closest-side 75vmax) - inline]
expected: FAIL
[test unit: vmax - ellipse(25% 50vmax) - inline]
expected: FAIL
[test unit: vmin - ellipse(farthest-side 75vmin) - inline]
expected: FAIL
[test unit: vh - ellipse(closest-side 75vh) - inline]
expected: FAIL
[test unit: cm - ellipse(50cm 100cm) - computed]
expected: FAIL
[test unit: cm - ellipse(100cm 100px) - computed]
expected: FAIL
[test unit: cm - ellipse(50cm 25%) - computed]
expected: FAIL
[test unit: cm - ellipse(25% 50cm) - computed]
expected: FAIL
[test unit: cm - ellipse(25cm closest-side) - computed]
expected: FAIL
[test unit: cm - ellipse(closest-side 75cm) - computed]
expected: FAIL
[test unit: cm - ellipse(25cm farthest-side) - computed]
expected: FAIL
[test unit: cm - ellipse(farthest-side 75cm) - computed]
expected: FAIL
[test unit: mm - ellipse(50mm 100mm) - computed]
expected: FAIL
[test unit: mm - ellipse(100mm 100px) - computed]
expected: FAIL
[test unit: mm - ellipse(50mm 25%) - computed]
expected: FAIL
[test unit: mm - ellipse(25% 50mm) - computed]
expected: FAIL
[test unit: mm - ellipse(25mm closest-side) - computed]
expected: FAIL
[test unit: mm - ellipse(closest-side 75mm) - computed]
expected: FAIL
[test unit: mm - ellipse(25mm farthest-side) - computed]
expected: FAIL
[test unit: mm - ellipse(farthest-side 75mm) - computed]
expected: FAIL
[test unit: in - ellipse(50in 100in) - computed]
expected: FAIL
[test unit: in - ellipse(100in 100px) - computed]
expected: FAIL
[test unit: in - ellipse(50in 25%) - computed]
expected: FAIL
[test unit: in - ellipse(25% 50in) - computed]
expected: FAIL
[test unit: in - ellipse(25in closest-side) - computed]
expected: FAIL
[test unit: in - ellipse(closest-side 75in) - computed]
expected: FAIL
[test unit: in - ellipse(25in farthest-side) - computed]
expected: FAIL
[test unit: in - ellipse(farthest-side 75in) - computed]
expected: FAIL
[test unit: pt - ellipse(50pt 100pt) - computed]
expected: FAIL
[test unit: pt - ellipse(100pt 100px) - computed]
expected: FAIL
[test unit: pt - ellipse(50pt 25%) - computed]
expected: FAIL
[test unit: pt - ellipse(25% 50pt) - computed]
expected: FAIL
[test unit: pt - ellipse(25pt closest-side) - computed]
expected: FAIL
[test unit: pt - ellipse(closest-side 75pt) - computed]
expected: FAIL
[test unit: pt - ellipse(25pt farthest-side) - computed]
expected: FAIL
[test unit: pt - ellipse(farthest-side 75pt) - computed]
expected: FAIL
[test unit: pc - ellipse(50pc 100pc) - computed]
expected: FAIL
[test unit: pc - ellipse(100pc 100px) - computed]
expected: FAIL
[test unit: pc - ellipse(50pc 25%) - computed]
expected: FAIL
[test unit: pc - ellipse(25% 50pc) - computed]
expected: FAIL
[test unit: pc - ellipse(25pc closest-side) - computed]
expected: FAIL
[test unit: pc - ellipse(closest-side 75pc) - computed]
expected: FAIL
[test unit: pc - ellipse(25pc farthest-side) - computed]
expected: FAIL
[test unit: pc - ellipse(farthest-side 75pc) - computed]
expected: FAIL
[test unit: em - ellipse(50em 100em) - computed]
expected: FAIL
[test unit: em - ellipse(100em 100px) - computed]
expected: FAIL
[test unit: em - ellipse(50em 25%) - computed]
expected: FAIL
[test unit: em - ellipse(25% 50em) - computed]
expected: FAIL
[test unit: em - ellipse(25em closest-side) - computed]
expected: FAIL
[test unit: em - ellipse(closest-side 75em) - computed]
expected: FAIL
[test unit: em - ellipse(25em farthest-side) - computed]
expected: FAIL
[test unit: em - ellipse(farthest-side 75em) - computed]
expected: FAIL
[test unit: ex - ellipse(50ex 100ex) - computed]
expected: FAIL
[test unit: ex - ellipse(100ex 100px) - computed]
expected: FAIL
[test unit: ex - ellipse(50ex 25%) - computed]
expected: FAIL
[test unit: ex - ellipse(25% 50ex) - computed]
expected: FAIL
[test unit: ex - ellipse(25ex closest-side) - computed]
expected: FAIL
[test unit: ex - ellipse(closest-side 75ex) - computed]
expected: FAIL
[test unit: ex - ellipse(25ex farthest-side) - computed]
expected: FAIL
[test unit: ex - ellipse(farthest-side 75ex) - computed]
expected: FAIL
[test unit: ch - ellipse(50ch 100ch) - computed]
expected: FAIL
[test unit: ch - ellipse(100ch 100px) - computed]
expected: FAIL
[test unit: ch - ellipse(50ch 25%) - computed]
expected: FAIL
[test unit: ch - ellipse(25% 50ch) - computed]
expected: FAIL
[test unit: ch - ellipse(25ch closest-side) - computed]
expected: FAIL
[test unit: ch - ellipse(closest-side 75ch) - computed]
expected: FAIL
[test unit: ch - ellipse(25ch farthest-side) - computed]
expected: FAIL
[test unit: ch - ellipse(farthest-side 75ch) - computed]
expected: FAIL
[test unit: rem - ellipse(50rem 100rem) - computed]
expected: FAIL
[test unit: rem - ellipse(100rem 100px) - computed]
expected: FAIL
[test unit: rem - ellipse(50rem 25%) - computed]
expected: FAIL
[test unit: rem - ellipse(25% 50rem) - computed]
expected: FAIL
[test unit: rem - ellipse(25rem closest-side) - computed]
expected: FAIL
[test unit: rem - ellipse(closest-side 75rem) - computed]
expected: FAIL
[test unit: rem - ellipse(25rem farthest-side) - computed]
expected: FAIL
[test unit: rem - ellipse(farthest-side 75rem) - computed]
expected: FAIL
[test unit: vw - ellipse(50vw 100vw) - computed]
expected: FAIL
[test unit: vw - ellipse(100vw 100px) - computed]
expected: FAIL
[test unit: vw - ellipse(50vw 25%) - computed]
expected: FAIL
[test unit: vw - ellipse(25% 50vw) - computed]
expected: FAIL
[test unit: vw - ellipse(25vw closest-side) - computed]
expected: FAIL
[test unit: vw - ellipse(closest-side 75vw) - computed]
expected: FAIL
[test unit: vw - ellipse(25vw farthest-side) - computed]
expected: FAIL
[test unit: vw - ellipse(farthest-side 75vw) - computed]
expected: FAIL
[test unit: vh - ellipse(50vh 100vh) - computed]
expected: FAIL
[test unit: vh - ellipse(100vh 100px) - computed]
expected: FAIL
[test unit: vh - ellipse(50vh 25%) - computed]
expected: FAIL
[test unit: vh - ellipse(25% 50vh) - computed]
expected: FAIL
[test unit: vh - ellipse(25vh closest-side) - computed]
expected: FAIL
[test unit: vh - ellipse(closest-side 75vh) - computed]
expected: FAIL
[test unit: vh - ellipse(25vh farthest-side) - computed]
expected: FAIL
[test unit: vh - ellipse(farthest-side 75vh) - computed]
expected: FAIL
[test unit: vmin - ellipse(50vmin 100vmin) - computed]
expected: FAIL
[test unit: vmin - ellipse(100vmin 100px) - computed]
expected: FAIL
[test unit: vmin - ellipse(50vmin 25%) - computed]
expected: FAIL
[test unit: vmin - ellipse(25% 50vmin) - computed]
expected: FAIL
[test unit: vmin - ellipse(25vmin closest-side) - computed]
expected: FAIL
[test unit: vmin - ellipse(closest-side 75vmin) - computed]
expected: FAIL
[test unit: vmin - ellipse(25vmin farthest-side) - computed]
expected: FAIL
[test unit: vmin - ellipse(farthest-side 75vmin) - computed]
expected: FAIL
[test unit: vmax - ellipse(50vmax 100vmax) - computed]
expected: FAIL
[test unit: vmax - ellipse(100vmax 100px) - computed]
expected: FAIL
[test unit: vmax - ellipse(50vmax 25%) - computed]
expected: FAIL
[test unit: vmax - ellipse(25% 50vmax) - computed]
expected: FAIL
[test unit: vmax - ellipse(25vmax closest-side) - computed]
expected: FAIL
[test unit: vmax - ellipse(closest-side 75vmax) - computed]
expected: FAIL
[test unit: vmax - ellipse(25vmax farthest-side) - computed]
expected: FAIL
[test unit: vmax - ellipse(farthest-side 75vmax) - computed]
expected: FAIL

Просмотреть файл

@ -1,74 +0,0 @@
[shape-outside-ellipse-006.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[ellipse(+30.00px 40.567px) - inline]
expected: FAIL
[ellipse(+10.00% +20.230%) - inline]
expected: FAIL
[ellipse(+10% +20%) - inline]
expected: FAIL
[ellipse(50.10% +60.7%) - inline]
expected: FAIL
[ellipse(+30.00% 40.567%) - inline]
expected: FAIL
[ellipse(+10px +20px) - inline]
expected: FAIL
[ellipse(50px +60px) - inline]
expected: FAIL
[ellipse(+30% 40%) - inline]
expected: FAIL
[ellipse(+10.00px +20.230px) - inline]
expected: FAIL
[ellipse(+50% +60%) - inline]
expected: FAIL
[ellipse(+30px 40px) - inline]
expected: FAIL
[ellipse(50.10px +60.7px) - inline]
expected: FAIL
[ellipse(+10px +20px) - computed]
expected: FAIL
[ellipse(+30px 40px) - computed]
expected: FAIL
[ellipse(50px +60px) - computed]
expected: FAIL
[ellipse(+10.00px +20.230px) - computed]
expected: FAIL
[ellipse(+30.00px 40.567px) - computed]
expected: FAIL
[ellipse(50.10px +60.7px) - computed]
expected: FAIL
[ellipse(+10% +20%) - computed]
expected: FAIL
[ellipse(+30% 40%) - computed]
expected: FAIL
[ellipse(+50% +60%) - computed]
expected: FAIL
[ellipse(+10.00% +20.230%) - computed]
expected: FAIL
[ellipse(+30.00% 40.567%) - computed]
expected: FAIL
[ellipse(50.10% +60.7%) - computed]
expected: FAIL