commit 09d64cb5afc90a01d0dd6cba6e491015350621d1 parent ba679fa826debf91a8585a857b46dea7fbb62cfe Author: Swarup Ukil <sukil@mozilla.com> Date: Mon, 20 Oct 2025 15:05:47 +0000 Bug 1917128 - Support parsing of <command-end-point> in shape(). r=boris,firefox-style-system-reviewers,firefox-svg-reviewers,layout-reviewers Patch consequently updates SVG path building to support <command-end-point> values. Differential Revision: https://phabricator.services.mozilla.com/D267748 Diffstat:
24 files changed, 588 insertions(+), 2467 deletions(-)
diff --git a/dom/svg/SVGAnimatedPathSegList.cpp b/dom/svg/SVGAnimatedPathSegList.cpp @@ -28,6 +28,17 @@ nsresult SVGAnimatedPathSegList::SetBaseValueString(const nsAString& aValue) { return mBaseVal.SetValueFromString(NS_ConvertUTF16toUTF8(aValue)); } +enum class PositionType { Absolute, Relative }; + +static StyleCommandEndPoint<float> MakeEndPoint(PositionType type, float x, + float y) { + if (type == PositionType::Absolute) { + return StyleCommandEndPoint<float>::ToPosition({x, y}); + } else { + return StyleCommandEndPoint<float>::ByCoordinate({x, y}); + } +} + class MOZ_STACK_CLASS SVGPathSegmentInitWrapper final { public: explicit SVGPathSegmentInitWrapper(const SVGPathSegmentInit& aSVGPathSegment) @@ -61,45 +72,51 @@ class MOZ_STACK_CLASS SVGPathSegmentInitWrapper final { MOZ_ASSERT(IsValid(), "Trying to convert invalid SVGPathSegment"); switch (mInit.mType.First()) { case 'M': - return StylePathCommand::Move(StyleByTo::To, - {mInit.mValues[0], mInit.mValues[1]}); + return StylePathCommand::Move(MakeEndPoint( + PositionType::Absolute, mInit.mValues[0], mInit.mValues[1])); case 'm': - return StylePathCommand::Move(StyleByTo::By, - {mInit.mValues[0], mInit.mValues[1]}); + return StylePathCommand::Move(MakeEndPoint( + PositionType::Relative, mInit.mValues[0], mInit.mValues[1])); case 'L': - return StylePathCommand::Line(StyleByTo::To, - {mInit.mValues[0], mInit.mValues[1]}); + return StylePathCommand::Line(MakeEndPoint( + PositionType::Absolute, mInit.mValues[0], mInit.mValues[1])); case 'l': - return StylePathCommand::Line(StyleByTo::By, - {mInit.mValues[0], mInit.mValues[1]}); + return StylePathCommand::Line(MakeEndPoint( + PositionType::Relative, mInit.mValues[0], mInit.mValues[1])); case 'C': return StylePathCommand::CubicCurve( - StyleByTo::To, {mInit.mValues[4], mInit.mValues[5]}, + MakeEndPoint(PositionType::Absolute, mInit.mValues[4], + mInit.mValues[5]), {mInit.mValues[0], mInit.mValues[1]}, {mInit.mValues[2], mInit.mValues[3]}); case 'c': return StylePathCommand::CubicCurve( - StyleByTo::By, {mInit.mValues[4], mInit.mValues[5]}, + MakeEndPoint(PositionType::Relative, mInit.mValues[4], + mInit.mValues[5]), {mInit.mValues[0], mInit.mValues[1]}, {mInit.mValues[2], mInit.mValues[3]}); case 'Q': return StylePathCommand::QuadCurve( - StyleByTo::To, {mInit.mValues[2], mInit.mValues[3]}, + MakeEndPoint(PositionType::Absolute, mInit.mValues[2], + mInit.mValues[3]), {mInit.mValues[0], mInit.mValues[1]}); case 'q': return StylePathCommand::QuadCurve( - StyleByTo::By, {mInit.mValues[2], mInit.mValues[3]}, + MakeEndPoint(PositionType::Relative, mInit.mValues[2], + mInit.mValues[3]), {mInit.mValues[0], mInit.mValues[1]}); case 'A': return StylePathCommand::Arc( - StyleByTo::To, {mInit.mValues[5], mInit.mValues[6]}, + MakeEndPoint(PositionType::Absolute, mInit.mValues[5], + mInit.mValues[6]), {mInit.mValues[0], mInit.mValues[1]}, mInit.mValues[4] ? StyleArcSweep::Cw : StyleArcSweep::Ccw, mInit.mValues[3] ? StyleArcSize::Large : StyleArcSize::Small, mInit.mValues[2]); case 'a': return StylePathCommand::Arc( - StyleByTo::By, {mInit.mValues[5], mInit.mValues[6]}, + MakeEndPoint(PositionType::Relative, mInit.mValues[5], + mInit.mValues[6]), {mInit.mValues[0], mInit.mValues[1]}, mInit.mValues[4] ? StyleArcSweep::Cw : StyleArcSweep::Ccw, mInit.mValues[3] ? StyleArcSize::Large : StyleArcSize::Small, @@ -114,18 +131,20 @@ class MOZ_STACK_CLASS SVGPathSegmentInitWrapper final { return StylePathCommand::VLine(StyleByTo::By, mInit.mValues[0]); case 'S': return StylePathCommand::SmoothCubic( - StyleByTo::To, {mInit.mValues[2], mInit.mValues[3]}, + MakeEndPoint(PositionType::Absolute, mInit.mValues[2], + mInit.mValues[3]), {mInit.mValues[0], mInit.mValues[1]}); case 's': return StylePathCommand::SmoothCubic( - StyleByTo::By, {mInit.mValues[2], mInit.mValues[3]}, + MakeEndPoint(PositionType::Relative, mInit.mValues[2], + mInit.mValues[3]), {mInit.mValues[0], mInit.mValues[1]}); case 'T': - return StylePathCommand::SmoothQuad( - StyleByTo::To, {mInit.mValues[0], mInit.mValues[1]}); + return StylePathCommand::SmoothQuad(MakeEndPoint( + PositionType::Absolute, mInit.mValues[0], mInit.mValues[1])); case 't': - return StylePathCommand::SmoothQuad( - StyleByTo::By, {mInit.mValues[0], mInit.mValues[1]}); + return StylePathCommand::SmoothQuad(MakeEndPoint( + PositionType::Relative, mInit.mValues[0], mInit.mValues[1])); } return StylePathCommand::Close(); } diff --git a/dom/svg/SVGPathData.cpp b/dom/svg/SVGPathData.cpp @@ -256,14 +256,14 @@ static already_AddRefed<Path> BuildPathInternal( case Command::Tag::Move: { maybeApproximateZeroLengthSubpathSquareCaps(prevSeg, seg); const Point& p = cmd.move.point.ToGfxPoint(aPercentageBasis); - pathStart = segEnd = cmd.move.by_to == StyleByTo::To ? p : segStart + p; + pathStart = segEnd = cmd.move.point.IsToPosition() ? p : segStart + p; aBuilder->MoveTo(scale(segEnd)); subpathHasLength = false; break; } case Command::Tag::Line: { const Point& p = cmd.line.point.ToGfxPoint(aPercentageBasis); - segEnd = cmd.line.by_to == StyleByTo::To ? p : segStart + p; + segEnd = cmd.line.point.IsToPosition() ? p : segStart + p; if (segEnd != segStart) { subpathHasLength = true; aBuilder->LineTo(scale(segEnd)); @@ -275,7 +275,7 @@ static already_AddRefed<Path> BuildPathInternal( cp2 = cmd.cubic_curve.control2.ToGfxPoint(aPercentageBasis); segEnd = cmd.cubic_curve.point.ToGfxPoint(aPercentageBasis); - if (cmd.cubic_curve.by_to == StyleByTo::By) { + if (cmd.cubic_curve.point.IsByCoordinate()) { cp1 += segStart; cp2 += segStart; segEnd += segStart; @@ -291,7 +291,7 @@ static already_AddRefed<Path> BuildPathInternal( cp1 = cmd.quad_curve.control1.ToGfxPoint(aPercentageBasis); segEnd = cmd.quad_curve.point.ToGfxPoint(aPercentageBasis); - if (cmd.quad_curve.by_to == StyleByTo::By) { + if (cmd.quad_curve.point.IsByCoordinate()) { cp1 += segStart; segEnd += segStart; // set before setting tcp2! } @@ -310,7 +310,7 @@ static already_AddRefed<Path> BuildPathInternal( const auto& arc = cmd.arc; const Point& radii = arc.radii.ToGfxPoint(aPercentageBasis); segEnd = arc.point.ToGfxPoint(aPercentageBasis); - if (arc.by_to == StyleByTo::By) { + if (arc.point.IsByCoordinate()) { segEnd += segStart; } if (segEnd != segStart) { @@ -363,7 +363,7 @@ static already_AddRefed<Path> BuildPathInternal( cp2 = cmd.smooth_cubic.control2.ToGfxPoint(aPercentageBasis); segEnd = cmd.smooth_cubic.point.ToGfxPoint(aPercentageBasis); - if (cmd.smooth_cubic.by_to == StyleByTo::By) { + if (cmd.smooth_cubic.point.IsByCoordinate()) { cp2 += segStart; segEnd += segStart; } @@ -382,7 +382,7 @@ static already_AddRefed<Path> BuildPathInternal( const Point& p = cmd.smooth_quad.point.ToGfxPoint(aPercentageBasis); // set before setting tcp2! - segEnd = cmd.smooth_quad.by_to == StyleByTo::To ? p : segStart + p; + segEnd = cmd.smooth_quad.point.IsToPosition() ? p : segStart + p; tcp2 = cp1 + (segEnd - cp1) / 3; if (segEnd != segStart || segEnd != cp1) { @@ -556,7 +556,7 @@ void SVGPathData::GetMarkerPositioningData(Span<const StylePathCommand> aPath, case StylePathCommand::Tag::Move: { const Point& p = cmd.move.point.ToGfxPoint() * aZoom; - pathStart = segEnd = cmd.move.by_to == StyleByTo::To ? p : segStart + p; + pathStart = segEnd = cmd.move.point.IsToPosition() ? p : segStart + p; pathStartIndex = aMarks->Length(); // If authors are going to specify multiple consecutive moveto commands // with markers, me might as well make the angle do something useful: @@ -565,7 +565,7 @@ void SVGPathData::GetMarkerPositioningData(Span<const StylePathCommand> aPath, } case StylePathCommand::Tag::Line: { const Point& p = cmd.line.point.ToGfxPoint() * aZoom; - segEnd = cmd.line.by_to == StyleByTo::To ? p : segStart + p; + segEnd = cmd.line.point.IsToPosition() ? p : segStart + p; segStartAngle = segEndAngle = AngleOfVector(segEnd, segStart); break; } @@ -574,7 +574,7 @@ void SVGPathData::GetMarkerPositioningData(Span<const StylePathCommand> aPath, Point cp2 = cmd.cubic_curve.control2.ToGfxPoint() * aZoom; segEnd = cmd.cubic_curve.point.ToGfxPoint() * aZoom; - if (cmd.cubic_curve.by_to == StyleByTo::By) { + if (cmd.cubic_curve.point.IsByCoordinate()) { cp1 += segStart; cp2 += segStart; segEnd += segStart; @@ -591,7 +591,7 @@ void SVGPathData::GetMarkerPositioningData(Span<const StylePathCommand> aPath, Point cp1 = cmd.quad_curve.control1.ToGfxPoint() * aZoom; segEnd = cmd.quad_curve.point.ToGfxPoint() * aZoom; - if (cmd.quad_curve.by_to == StyleByTo::By) { + if (cmd.quad_curve.point.IsByCoordinate()) { cp1 += segStart; segEnd += segStart; // set before setting tcp2! } @@ -609,7 +609,7 @@ void SVGPathData::GetMarkerPositioningData(Span<const StylePathCommand> aPath, bool largeArcFlag = arc.arc_size == StyleArcSize::Large; bool sweepFlag = arc.arc_sweep == StyleArcSweep::Cw; segEnd = arc.point.ToGfxPoint() * aZoom; - if (arc.by_to == StyleByTo::By) { + if (arc.point.IsByCoordinate()) { segEnd += segStart; } @@ -668,7 +668,7 @@ void SVGPathData::GetMarkerPositioningData(Span<const StylePathCommand> aPath, Point cp2 = cmd.smooth_cubic.control2.ToGfxPoint() * aZoom; segEnd = cmd.smooth_cubic.point.ToGfxPoint() * aZoom; - if (cmd.smooth_cubic.by_to == StyleByTo::By) { + if (cmd.smooth_cubic.point.IsByCoordinate()) { cp2 += segStart; segEnd += segStart; } @@ -684,7 +684,7 @@ void SVGPathData::GetMarkerPositioningData(Span<const StylePathCommand> aPath, const Point& cp1 = prevSeg && prevSeg->IsQuadraticType() ? segStart * 2 - prevCP : segStart; - segEnd = cmd.smooth_quad.by_to == StyleByTo::To + segEnd = cmd.smooth_quad.point.IsToPosition() ? cmd.smooth_quad.point.ToGfxPoint() * aZoom : segStart + cmd.smooth_quad.point.ToGfxPoint() * aZoom; diff --git a/dom/svg/SVGPathElement.cpp b/dom/svg/SVGPathElement.cpp @@ -137,8 +137,8 @@ static void CreatePathSegments(SVGPathElement* aPathElement, Point cp1, cp2; while (converter.GetNextSegment(&cp1, &cp2, &segEnd)) { auto curve = StylePathCommand::CubicCurve( - StyleByTo::To, - StyleCoordinatePair<StyleCSSFloat>{segEnd.x, segEnd.y}, + StyleCommandEndPoint<StyleCSSFloat>::ToPosition( + {segEnd.x, segEnd.y}), StyleCoordinatePair<StyleCSSFloat>{cp1.x, cp1.y}, StyleCoordinatePair<StyleCSSFloat>{cp2.x, cp2.y}); aValues.AppendElement(new SVGPathSegment(aPathElement, curve)); diff --git a/dom/svg/SVGPathSegUtils.cpp b/dom/svg/SVGPathSegUtils.cpp @@ -110,7 +110,7 @@ void SVGPathSegUtils::TraversePathSegment(const StylePathCommand& aCommand, case StylePathCommand::Tag::Move: { const Point& p = aCommand.move.point.ToGfxPoint(); aState.start = aState.pos = - aCommand.move.by_to == StyleByTo::To ? p : aState.pos + p; + aCommand.move.point.IsToPosition() ? p : aState.pos + p; if (aState.ShouldUpdateLengthAndControlPoints()) { // aState.length is unchanged, since move commands don't affect path= // length. @@ -119,7 +119,7 @@ void SVGPathSegUtils::TraversePathSegment(const StylePathCommand& aCommand, break; } case StylePathCommand::Tag::Line: { - Point to = aCommand.line.by_to == StyleByTo::To + Point to = aCommand.line.point.IsToPosition() ? aCommand.line.point.ToGfxPoint() : aState.pos + aCommand.line.point.ToGfxPoint(); if (aState.ShouldUpdateLengthAndControlPoints()) { @@ -130,7 +130,7 @@ void SVGPathSegUtils::TraversePathSegment(const StylePathCommand& aCommand, break; } case StylePathCommand::Tag::CubicCurve: { - const bool isRelative = aCommand.cubic_curve.by_to == StyleByTo::By; + const bool isRelative = aCommand.cubic_curve.point.IsByCoordinate(); Point to = isRelative ? aState.pos + aCommand.cubic_curve.point.ToGfxPoint() : aCommand.cubic_curve.point.ToGfxPoint(); @@ -150,7 +150,7 @@ void SVGPathSegUtils::TraversePathSegment(const StylePathCommand& aCommand, break; } case StylePathCommand::Tag::QuadCurve: { - const bool isRelative = aCommand.quad_curve.by_to == StyleByTo::By; + const bool isRelative = aCommand.quad_curve.point.IsByCoordinate(); Point to = isRelative ? aState.pos + aCommand.quad_curve.point.ToGfxPoint() : aCommand.quad_curve.point.ToGfxPoint(); @@ -167,9 +167,8 @@ void SVGPathSegUtils::TraversePathSegment(const StylePathCommand& aCommand, } case StylePathCommand::Tag::Arc: { const auto& arc = aCommand.arc; - Point to = arc.by_to == StyleByTo::To - ? arc.point.ToGfxPoint() - : aState.pos + arc.point.ToGfxPoint(); + Point to = arc.point.IsToPosition() ? arc.point.ToGfxPoint() + : aState.pos + arc.point.ToGfxPoint(); if (aState.ShouldUpdateLengthAndControlPoints()) { float dist = 0; Point radii = arc.radii.ToGfxPoint(); @@ -216,7 +215,7 @@ void SVGPathSegUtils::TraversePathSegment(const StylePathCommand& aCommand, break; } case StylePathCommand::Tag::SmoothCubic: { - const bool isRelative = aCommand.smooth_cubic.by_to == StyleByTo::By; + const bool isRelative = aCommand.smooth_cubic.point.IsByCoordinate(); Point to = isRelative ? aState.pos + aCommand.smooth_cubic.point.ToGfxPoint() : aCommand.smooth_cubic.point.ToGfxPoint(); @@ -234,7 +233,7 @@ void SVGPathSegUtils::TraversePathSegment(const StylePathCommand& aCommand, break; } case StylePathCommand::Tag::SmoothQuad: { - Point to = aCommand.smooth_quad.by_to == StyleByTo::To + Point to = aCommand.smooth_quad.point.IsToPosition() ? aCommand.smooth_quad.point.ToGfxPoint() : aState.pos + aCommand.smooth_quad.point.ToGfxPoint(); if (aState.ShouldUpdateLengthAndControlPoints()) { @@ -404,7 +403,7 @@ Maybe<gfx::Rect> SVGPathToAxisAlignedRect(Span<const StylePathCommand> aPath) { return Nothing(); } - if (cmd.move.by_to == StyleByTo::By) { + if (cmd.move.point.IsByCoordinate()) { to = segStart + to; } @@ -429,7 +428,7 @@ Maybe<gfx::Rect> SVGPathToAxisAlignedRect(Span<const StylePathCommand> aPath) { } case StylePathCommand::Tag::Line: { Point to = cmd.line.point.ToGfxPoint(); - if (cmd.line.by_to == StyleByTo::By) { + if (cmd.line.point.IsByCoordinate()) { to = segStart + to; } diff --git a/dom/svg/SVGPathSegment.cpp b/dom/svg/SVGPathSegment.cpp @@ -20,6 +20,18 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(SVGPathSegment, mSVGPathElement) //---------------------------------------------------------------------- // Implementation +void SVGPathSegment::AppendPoint( + const StyleCommandEndPoint<StyleCSSFloat>& point) { + if (point.IsToPosition()) { + const auto& pos = point.AsToPosition(); + mValues.AppendElement(pos.horizontal); + mValues.AppendElement(pos.vertical); + } else if (point.IsByCoordinate()) { + const auto& coord = point.AsByCoordinate(); + mValues.AppendElement(coord.x); + mValues.AppendElement(coord.y); + } +} SVGPathSegment::SVGPathSegment(SVGPathElement* aSVGPathElement, const StylePathCommand& aCommand) @@ -29,42 +41,37 @@ SVGPathSegment::SVGPathSegment(SVGPathElement* aSVGPathElement, mCommand.AssignLiteral("Z"); break; case StylePathCommand::Tag::Move: - mCommand.AssignLiteral(aCommand.move.by_to == StyleByTo::To ? "M" : "m"); - mValues.AppendElement(aCommand.move.point.x); - mValues.AppendElement(aCommand.move.point.y); + mCommand.AssignLiteral(aCommand.move.point.IsToPosition() ? "M" : "m"); + AppendPoint(aCommand.move.point); break; case StylePathCommand::Tag::Line: - mCommand.AssignLiteral(aCommand.line.by_to == StyleByTo::To ? "L" : "l"); - mValues.AppendElement(aCommand.line.point.x); - mValues.AppendElement(aCommand.line.point.y); + mCommand.AssignLiteral(aCommand.line.point.IsToPosition() ? "L" : "l"); + AppendPoint(aCommand.line.point); break; case StylePathCommand::Tag::CubicCurve: - mCommand.AssignLiteral(aCommand.cubic_curve.by_to == StyleByTo::To ? "C" - : "c"); + mCommand.AssignLiteral(aCommand.cubic_curve.point.IsToPosition() ? "C" + : "c"); mValues.AppendElement(aCommand.cubic_curve.control1.x); mValues.AppendElement(aCommand.cubic_curve.control1.y); mValues.AppendElement(aCommand.cubic_curve.control2.x); mValues.AppendElement(aCommand.cubic_curve.control2.y); - mValues.AppendElement(aCommand.cubic_curve.point.x); - mValues.AppendElement(aCommand.cubic_curve.point.y); + AppendPoint(aCommand.cubic_curve.point); break; case StylePathCommand::Tag::QuadCurve: - mCommand.AssignLiteral(aCommand.quad_curve.by_to == StyleByTo::To ? "Q" - : "q"); + mCommand.AssignLiteral(aCommand.quad_curve.point.IsToPosition() ? "Q" + : "q"); mValues.AppendElement(aCommand.quad_curve.control1.x); mValues.AppendElement(aCommand.quad_curve.control1.y); - mValues.AppendElement(aCommand.quad_curve.point.x); - mValues.AppendElement(aCommand.quad_curve.point.y); + AppendPoint(aCommand.quad_curve.point); break; case StylePathCommand::Tag::Arc: - mCommand.AssignLiteral(aCommand.arc.by_to == StyleByTo::To ? "A" : "a"); + mCommand.AssignLiteral(aCommand.arc.point.IsToPosition() ? "A" : "a"); mValues.AppendElement(aCommand.arc.radii.x); mValues.AppendElement(aCommand.arc.radii.y); mValues.AppendElement(aCommand.arc.rotate); mValues.AppendElement(aCommand.arc.arc_size == StyleArcSize::Large); mValues.AppendElement(aCommand.arc.arc_sweep == StyleArcSweep::Cw); - mValues.AppendElement(aCommand.arc.point.x); - mValues.AppendElement(aCommand.arc.point.y); + AppendPoint(aCommand.arc.point); break; case StylePathCommand::Tag::HLine: mCommand.AssignLiteral(aCommand.h_line.by_to == StyleByTo::To ? "H" @@ -77,18 +84,16 @@ SVGPathSegment::SVGPathSegment(SVGPathElement* aSVGPathElement, mValues.AppendElement(aCommand.v_line.y); break; case StylePathCommand::Tag::SmoothCubic: - mCommand.AssignLiteral( - aCommand.smooth_cubic.by_to == StyleByTo::To ? "S" : "s"); + mCommand.AssignLiteral(aCommand.smooth_cubic.point.IsToPosition() ? "S" + : "s"); mValues.AppendElement(aCommand.smooth_cubic.control2.x); mValues.AppendElement(aCommand.smooth_cubic.control2.y); - mValues.AppendElement(aCommand.smooth_cubic.point.x); - mValues.AppendElement(aCommand.smooth_cubic.point.y); + AppendPoint(aCommand.smooth_cubic.point); break; case StylePathCommand::Tag::SmoothQuad: - mCommand.AssignLiteral(aCommand.smooth_quad.by_to == StyleByTo::To ? "T" - : "t"); - mValues.AppendElement(aCommand.smooth_quad.point.x); - mValues.AppendElement(aCommand.smooth_quad.point.y); + mCommand.AssignLiteral(aCommand.smooth_quad.point.IsToPosition() ? "T" + : "t"); + AppendPoint(aCommand.smooth_quad.point); break; } } diff --git a/dom/svg/SVGPathSegment.h b/dom/svg/SVGPathSegment.h @@ -42,6 +42,7 @@ class SVGPathSegment final : public nsWrapperCache { RefPtr<SVGPathElement> mSVGPathElement; nsString mCommand; nsTArray<float> mValues; + void AppendPoint(const StyleCommandEndPoint<StyleCSSFloat>& point); }; } // namespace mozilla::dom diff --git a/layout/base/MotionPathUtils.cpp b/layout/base/MotionPathUtils.cpp @@ -476,7 +476,7 @@ static already_AddRefed<gfx::Path> BuildDefaultPathForURL( } Array<const StylePathCommand, 1> array(StylePathCommand::Move( - StyleByTo::By, StyleCoordinatePair<StyleCSSFloat>{0.0, 0.0})); + StyleCommandEndPoint<StyleCSSFloat>::ByCoordinate({0.0, 0.0}))); return SVGPathData::BuildPath(array, aBuilder, StyleStrokeLinecap::Butt, 0.0); } diff --git a/layout/style/ServoStyleConstsInlines.h b/layout/style/ServoStyleConstsInlines.h @@ -1274,6 +1274,45 @@ inline gfx::Point StyleCoordinatePair<LengthPercentage>::ToGfxPoint( y.ResolveToCSSPixels(aBasis->Height())); } +template <> +inline gfx::Point StyleShapePosition<StyleCSSFloat>::ToGfxPoint( + const CSSSize* aBasis) const { + return gfx::Point(horizontal, vertical); +} + +template <> +inline gfx::Point StyleShapePosition<LengthPercentage>::ToGfxPoint( + const CSSSize* aBasis) const { + MOZ_ASSERT(aBasis); + return gfx::Point(horizontal.ResolveToCSSPixels(aBasis->Width()), + vertical.ResolveToCSSPixels(aBasis->Height())); +} + +template <> +inline gfx::Point StyleCommandEndPoint<StyleCSSFloat>::ToGfxPoint( + const CSSSize* aBasis) const { + if (IsToPosition()) { + auto& pos = AsToPosition(); + return pos.ToGfxPoint(); + } else { + auto& coord = AsByCoordinate(); + return coord.ToGfxPoint(); + } +} + +template <> +inline gfx::Point StyleCommandEndPoint<LengthPercentage>::ToGfxPoint( + const CSSSize* aBasis) const { + MOZ_ASSERT(aBasis); + if (IsToPosition()) { + auto& pos = AsToPosition(); + return pos.ToGfxPoint(aBasis); + } else { + auto& coord = AsByCoordinate(); + return coord.ToGfxPoint(aBasis); + } +} + inline StylePhysicalSide ToStylePhysicalSide(mozilla::Side aSide) { // TODO(dshin): Should look into merging these two types... static_assert(static_cast<uint8_t>(mozilla::Side::eSideLeft) == diff --git a/layout/style/test/property_database.js b/layout/style/test/property_database.js @@ -1040,8 +1040,8 @@ if (IsCSSPropertyPrefEnabled("layout.css.basic-shape-shape.enabled")) { "shape(from 10px 10px, move by 10px 5px, line by 20px 40%, close)", "shape(from 10px 10px, hline by 10px, vline to 5rem)", "shape(from 10px 10px, vline by 5%, hline to 1vw)", - "shape(from 10px 10px, curve to 50px 20px via 10rem 1%)", - "shape(from 10px 10px, smooth to 50px 20px via 10rem 1%)", + "shape(from 10px 10px, curve to 50px 20px with 10rem 1%)", + "shape(from 10px 10px, smooth to 50px 20px with 10rem 1%)", "shape(from 10% 1rem, arc to 50px 1pt of 20% cw large rotate 25deg)" ); diff --git a/servo/components/style/values/computed/basic_shape.rs b/servo/components/style/values/computed/basic_shape.rs @@ -12,7 +12,9 @@ use crate::values::computed::angle::Angle; use crate::values::computed::url::ComputedUrl; use crate::values::computed::{Image, LengthPercentage, NonNegativeLengthPercentage, Position}; use crate::values::generics::basic_shape as generic; +use crate::values::generics::position::Position as GenericPosition; use crate::values::specified::svg_path::{CoordPair, PathCommand}; +use crate::values::CSSFloat; /// A computed alias for FillRule. pub use crate::values::generics::basic_shape::FillRule; @@ -56,6 +58,9 @@ pub type PathOrShapeFunction = generic::GenericPathOrShapeFunction<Angle, Length /// The computed value of `CoordinatePair`. pub type CoordinatePair = generic::CoordinatePair<LengthPercentage>; +/// The computed value of 'CommandEndPoint'. +pub type CommandEndPoint = generic::CommandEndPoint<LengthPercentage>; + /// Animate from `Shape` to `Path`, and vice versa. macro_rules! animate_shape { ( @@ -141,12 +146,10 @@ impl From<&PathCommand> for ShapeCommand { use crate::values::computed::CSSPixelLength; match path { &PathCommand::Close => Self::Close, - &PathCommand::Move { by_to, ref point } => Self::Move { - by_to, + &PathCommand::Move { ref point } => Self::Move { point: point.into(), }, - &PathCommand::Line { by_to, ref point } => Self::Move { - by_to, + &PathCommand::Line { ref point } => Self::Move { point: point.into(), }, &PathCommand::HLine { by_to, x } => Self::HLine { @@ -158,47 +161,38 @@ impl From<&PathCommand> for ShapeCommand { y: LengthPercentage::new_length(CSSPixelLength::new(y)), }, &PathCommand::CubicCurve { - by_to, ref point, ref control1, ref control2, } => Self::CubicCurve { - by_to, point: point.into(), control1: control1.into(), control2: control2.into(), }, &PathCommand::QuadCurve { - by_to, ref point, ref control1, } => Self::QuadCurve { - by_to, point: point.into(), control1: control1.into(), }, &PathCommand::SmoothCubic { - by_to, ref point, ref control2, } => Self::SmoothCubic { - by_to, point: point.into(), control2: control2.into(), }, - &PathCommand::SmoothQuad { by_to, ref point } => Self::SmoothQuad { - by_to, + &PathCommand::SmoothQuad { ref point } => Self::SmoothQuad { point: point.into(), }, &PathCommand::Arc { - by_to, ref point, ref radii, arc_sweep, arc_size, rotate, } => Self::Arc { - by_to, point: point.into(), radii: radii.into(), arc_sweep, @@ -219,3 +213,28 @@ impl From<&CoordPair> for CoordinatePair { ) } } + +impl From<&GenericPosition<CSSFloat, CSSFloat>> for Position { + #[inline] + fn from(p: &GenericPosition<CSSFloat, CSSFloat>) -> Self { + use crate::values::computed::CSSPixelLength; + Self::new( + LengthPercentage::new_length(CSSPixelLength::new(p.horizontal)), + LengthPercentage::new_length(CSSPixelLength::new(p.vertical)), + ) + } +} + +impl From<&generic::CommandEndPoint<CSSFloat>> for CommandEndPoint { + #[inline] + fn from(p: &generic::CommandEndPoint<CSSFloat>) -> Self { + match p { + generic::CommandEndPoint::<CSSFloat>::ToPosition(pos) => { + CommandEndPoint::ToPosition(pos.into()) + }, + generic::CommandEndPoint::<CSSFloat>::ByCoordinate(coord) => { + CommandEndPoint::ByCoordinate(coord.into()) + }, + } + } +} diff --git a/servo/components/style/values/generics/basic_shape.rs b/servo/components/style/values/generics/basic_shape.rs @@ -8,13 +8,18 @@ use crate::values::animated::{lists, Animate, Procedure, ToAnimatedZero}; use crate::values::distance::{ComputeSquaredDistance, SquaredDistance}; use crate::values::generics::border::GenericBorderRadius; -use crate::values::generics::position::GenericPositionOrAuto; +use crate::values::generics::position::{GenericPosition, GenericPositionOrAuto}; use crate::values::generics::rect::Rect; use crate::values::specified::svg_path::{PathCommand, SVGPathData}; use crate::Zero; use std::fmt::{self, Write}; +use std::ops::AddAssign; use style_traits::{CssWriter, ToCss}; +/// TODO(bug 1982941): Replace with GenericPosition directly if ShapePosition is under utilized. +/// A generic value for `<position>` in basic_shape. +pub type ShapePosition<LengthPercentage> = GenericPosition<LengthPercentage, LengthPercentage>; + /// <https://drafts.fxtf.org/css-masking-1/#typedef-geometry-box> #[allow(missing_docs)] #[derive( @@ -702,11 +707,17 @@ where dest.write_char(' ')?; } dest.write_str("from ")?; - match self.commands[0] { + match &self.commands[0] { ShapeCommand::Move { - by_to: _, - ref point, - } => point.to_css(dest)?, + point: CommandEndPoint::ToPosition(pos), + } => { + pos.horizontal.to_css(dest)?; + dest.write_char(' ')?; + pos.vertical.to_css(dest)? + }, + ShapeCommand::Move { + point: CommandEndPoint::ByCoordinate(coord), + } => coord.to_css(dest)?, _ => unreachable!("The first command must be move"), } dest.write_str(", ")?; @@ -746,13 +757,11 @@ where pub enum GenericShapeCommand<Angle, LengthPercentage> { /// The move command. Move { - by_to: ByTo, - point: CoordinatePair<LengthPercentage>, + point: CommandEndPoint<LengthPercentage>, }, /// The line command. Line { - by_to: ByTo, - point: CoordinatePair<LengthPercentage>, + point: CommandEndPoint<LengthPercentage>, }, /// The hline command. HLine { by_to: ByTo, x: LengthPercentage }, @@ -760,32 +769,27 @@ pub enum GenericShapeCommand<Angle, LengthPercentage> { VLine { by_to: ByTo, y: LengthPercentage }, /// The cubic Bézier curve command. CubicCurve { - by_to: ByTo, - point: CoordinatePair<LengthPercentage>, + point: CommandEndPoint<LengthPercentage>, control1: CoordinatePair<LengthPercentage>, control2: CoordinatePair<LengthPercentage>, }, /// The quadratic Bézier curve command. QuadCurve { - by_to: ByTo, - point: CoordinatePair<LengthPercentage>, + point: CommandEndPoint<LengthPercentage>, control1: CoordinatePair<LengthPercentage>, }, /// The smooth command. SmoothCubic { - by_to: ByTo, - point: CoordinatePair<LengthPercentage>, + point: CommandEndPoint<LengthPercentage>, control2: CoordinatePair<LengthPercentage>, }, /// The smooth quadratic Bézier curve command. SmoothQuad { - by_to: ByTo, - point: CoordinatePair<LengthPercentage>, + point: CommandEndPoint<LengthPercentage>, }, /// The arc command. Arc { - by_to: ByTo, - point: CoordinatePair<LengthPercentage>, + point: CommandEndPoint<LengthPercentage>, radii: CoordinatePair<LengthPercentage>, arc_sweep: ArcSweep, arc_size: ArcSize, @@ -808,16 +812,12 @@ where { use self::ShapeCommand::*; match *self { - Move { by_to, ref point } => { + Move { ref point } => { dest.write_str("move ")?; - by_to.to_css(dest)?; - dest.write_char(' ')?; point.to_css(dest) }, - Line { by_to, ref point } => { + Line { ref point } => { dest.write_str("line ")?; - by_to.to_css(dest)?; - dest.write_char(' ')?; point.to_css(dest) }, HLine { by_to, ref x } => { @@ -833,52 +833,42 @@ where y.to_css(dest) }, CubicCurve { - by_to, ref point, ref control1, ref control2, } => { dest.write_str("curve ")?; - by_to.to_css(dest)?; - dest.write_char(' ')?; point.to_css(dest)?; - dest.write_str(" via ")?; + dest.write_str(" with ")?; control1.to_css(dest)?; dest.write_char(' ')?; + dest.write_char('/')?; + dest.write_char(' ')?; control2.to_css(dest) }, QuadCurve { - by_to, ref point, ref control1, } => { dest.write_str("curve ")?; - by_to.to_css(dest)?; - dest.write_char(' ')?; point.to_css(dest)?; - dest.write_str(" via ")?; + dest.write_str(" with ")?; control1.to_css(dest) }, SmoothCubic { - by_to, ref point, ref control2, } => { dest.write_str("smooth ")?; - by_to.to_css(dest)?; - dest.write_char(' ')?; point.to_css(dest)?; - dest.write_str(" via ")?; + dest.write_str(" with ")?; control2.to_css(dest) }, - SmoothQuad { by_to, ref point } => { + SmoothQuad { ref point } => { dest.write_str("smooth ")?; - by_to.to_css(dest)?; - dest.write_char(' ')?; point.to_css(dest) }, Arc { - by_to, ref point, ref radii, arc_sweep, @@ -886,8 +876,6 @@ where ref rotate, } => { dest.write_str("arc ")?; - by_to.to_css(dest)?; - dest.write_char(' ')?; point.to_css(dest)?; dest.write_str(" of ")?; radii.x.to_css(dest)?; @@ -962,6 +950,78 @@ impl ByTo { } } +/// Defines the end point of the command, which can be specified in absolute or relative coordinates, +/// determined by their "to" or "by" components respectively. +/// https://drafts.csswg.org/css-shapes/#typedef-shape-command-end-point +#[allow(missing_docs)] +#[derive( + Animate, + Clone, + Copy, + ComputeSquaredDistance, + Debug, + Deserialize, + MallocSizeOf, + PartialEq, + Serialize, + SpecifiedValueInfo, + ToAnimatedValue, + ToAnimatedZero, + ToComputedValue, + ToResolvedValue, + ToShmem, +)] +#[repr(C, u8)] +pub enum CommandEndPoint<LengthPercentage> { + ToPosition(ShapePosition<LengthPercentage>), + ByCoordinate(CoordinatePair<LengthPercentage>), +} + +impl<LengthPercentage> CommandEndPoint<LengthPercentage> { + /// Return true if it is absolute, i.e. it is To. + #[inline] + pub fn is_abs(&self) -> bool { + matches!(self, CommandEndPoint::ToPosition(_)) + } +} + +impl<LengthPercentage: ToCss> ToCss for CommandEndPoint<LengthPercentage> { + /// TODO(bug 1993308): Should print position keywords as keywords. I.e. like the to_css in specified/position.rs. + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { + match self { + CommandEndPoint::ToPosition(pos) => { + dest.write_str("to ")?; + pos.horizontal.to_css(dest)?; + dest.write_char(' ')?; + pos.vertical.to_css(dest) + }, + CommandEndPoint::ByCoordinate(coord) => { + dest.write_str("by ")?; + coord.to_css(dest) + }, + } + } +} + +impl<LengthPercentage: AddAssign> AddAssign<CoordinatePair<LengthPercentage>> + for CommandEndPoint<LengthPercentage> +{ + fn add_assign(&mut self, other: CoordinatePair<LengthPercentage>) { + match self { + CommandEndPoint::ToPosition(ref mut a) => { + a.horizontal += other.x; + a.vertical += other.y; + }, + CommandEndPoint::ByCoordinate(ref mut a) => { + *a += other; + }, + } + } +} + /// Defines a pair of coordinates, representing a rightward and downward offset, respectively, from /// a specified reference point. Percentages are resolved against the width or height, /// respectively, of the reference box. diff --git a/servo/components/style/values/specified/basic_shape.rs b/servo/components/style/values/specified/basic_shape.rs @@ -18,7 +18,9 @@ use crate::values::specified::angle::Angle; use crate::values::specified::border::BorderRadius; use crate::values::specified::image::Image; use crate::values::specified::length::LengthPercentageOrAuto; +use crate::values::specified::position::Side; use crate::values::specified::url::SpecifiedUrl; +use crate::values::specified::PositionComponent; use crate::values::specified::{LengthPercentage, NonNegativeLengthPercentage, SVGPathData}; use crate::Zero; use cssparser::Parser; @@ -398,41 +400,40 @@ impl ToCss for ShapePosition { } } +fn convert_to_length_percentage<S: Side>(c: PositionComponent<S>) -> LengthPercentage { + use crate::values::specified::{AllowedNumericType, Percentage}; + // Convert the value when parsing, to make sure we serialize it properly for both + // specified and computed values. + // https://drafts.csswg.org/css-shapes-1/#basic-shape-serialization + match c { + // Since <position> keywords stand in for percentages, keywords without an offset + // turn into percentages. + PositionComponent::Center => LengthPercentage::from(Percentage::new(0.5)), + PositionComponent::Side(keyword, None) => { + Percentage::new(if keyword.is_start() { 0. } else { 1. }).into() + }, + // Per spec issue, https://github.com/w3c/csswg-drafts/issues/8695, the part of + // "avoiding calc() expressions where possible" and "avoiding calc() + // transformations" will be removed from the spec, and we should follow the + // css-values-4 for position, i.e. we make it as length-percentage always. + // https://drafts.csswg.org/css-shapes-1/#basic-shape-serialization. + // https://drafts.csswg.org/css-values-4/#typedef-position + PositionComponent::Side(keyword, Some(length)) => { + if keyword.is_start() { + length + } else { + length.hundred_percent_minus(AllowedNumericType::All) + } + }, + PositionComponent::Length(length) => length, + } +} + fn parse_at_position<'i, 't>( context: &ParserContext, input: &mut Parser<'i, 't>, ) -> Result<GenericPositionOrAuto<ShapePosition>, ParseError<'i>> { - use crate::values::specified::position::{Position, Side}; - use crate::values::specified::{AllowedNumericType, Percentage, PositionComponent}; - - fn convert_to_length_percentage<S: Side>(c: PositionComponent<S>) -> LengthPercentage { - // Convert the value when parsing, to make sure we serialize it properly for both - // specified and computed values. - // https://drafts.csswg.org/css-shapes-1/#basic-shape-serialization - match c { - // Since <position> keywords stand in for percentages, keywords without an offset - // turn into percentages. - PositionComponent::Center => LengthPercentage::from(Percentage::new(0.5)), - PositionComponent::Side(keyword, None) => { - Percentage::new(if keyword.is_start() { 0. } else { 1. }).into() - }, - // Per spec issue, https://github.com/w3c/csswg-drafts/issues/8695, the part of - // "avoiding calc() expressions where possible" and "avoiding calc() - // transformations" will be removed from the spec, and we should follow the - // css-values-4 for position, i.e. we make it as length-percentage always. - // https://drafts.csswg.org/css-shapes-1/#basic-shape-serialization. - // https://drafts.csswg.org/css-values-4/#typedef-position - PositionComponent::Side(keyword, Some(length)) => { - if keyword.is_start() { - length - } else { - length.hundred_percent_minus(AllowedNumericType::All) - } - }, - PositionComponent::Length(length) => length, - } - } - + use crate::values::specified::position::Position; if input.try_parse(|i| i.expect_ident_matching("at")).is_ok() { Position::parse(context, input).map(|pos| { GenericPositionOrAuto::Position(ShapePosition::new( @@ -446,6 +447,19 @@ fn parse_at_position<'i, 't>( } } +fn parse_to_position<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't>, +) -> Result<ShapePosition, ParseError<'i>> { + use crate::values::specified::position::Position; + Position::parse(context, input).map(|pos| { + ShapePosition::new( + convert_to_length_percentage(pos.horizontal), + convert_to_length_percentage(pos.vertical), + ) + }) +} + impl Parse for Circle { fn parse<'i, 't>( context: &ParserContext, @@ -757,8 +771,7 @@ impl generic::Shape<Angle, LengthPercentage> { // from the top-left corner of the reference i.expect_ident_matching("from")?; Ok(ShapeCommand::Move { - by_to: generic::ByTo::To, - point: generic::CoordinatePair::parse(context, i)?, + point: generic::CommandEndPoint::parse(context, i, generic::ByTo::To)?, }) } else { // The further path data commands. @@ -783,7 +796,9 @@ impl Parse for ShapeCommand { context: &ParserContext, input: &mut Parser<'i, 't>, ) -> Result<Self, ParseError<'i>> { - use crate::values::generics::basic_shape::{ArcSize, ArcSweep, ByTo, CoordinatePair}; + use crate::values::generics::basic_shape::{ + ArcSize, ArcSweep, ByTo, CommandEndPoint, CoordinatePair, + }; // <shape-command> = <move-command> | <line-command> | <hv-line-command> | // <curve-command> | <smooth-command> | <arc-command> | close @@ -791,60 +806,72 @@ impl Parse for ShapeCommand { "close" => Self::Close, "move" => { let by_to = ByTo::parse(input)?; - let point = CoordinatePair::parse(context, input)?; - Self::Move { by_to, point } + let point = CommandEndPoint::parse(context, input, by_to)?; + Self::Move { point } }, "line" => { let by_to = ByTo::parse(input)?; - let point = CoordinatePair::parse(context, input)?; - Self::Line { by_to, point } + let point = CommandEndPoint::parse(context, input, by_to)?; + Self::Line { point } }, "hline" => { let by_to = ByTo::parse(input)?; - let x = LengthPercentage::parse(context, input)?; + // FIXME(Bug 1993311): Using parse_to_position here is incomplete, we should + // parse x-start and x-end too. Furthermore, it currently can incorrectly + // parse 2 offsets as valid (i.e. hline to left 30% works), and similarly + // incorrectly parse top or bottom as valid values. + let x = if by_to.is_abs() { + parse_to_position(context, input)?.horizontal + } else { + LengthPercentage::parse(context, input)? + }; Self::HLine { by_to, x } }, "vline" => { let by_to = ByTo::parse(input)?; - let y = LengthPercentage::parse(context, input)?; + // FIXME(Bug 1993311): Should parse y-start and y-end too. + let y = if by_to.is_abs() { + parse_to_position(context, input)?.horizontal + } else { + LengthPercentage::parse(context, input)? + }; Self::VLine { by_to, y } }, "curve" => { let by_to = ByTo::parse(input)?; - let point = CoordinatePair::parse(context, input)?; - input.expect_ident_matching("via")?; + let point = CommandEndPoint::parse(context, input, by_to)?; + input.expect_ident_matching("with")?; let control1 = CoordinatePair::parse(context, input)?; - match input.try_parse(|i| CoordinatePair::parse(context, i)) { - Ok(control2) => Self::CubicCurve { - by_to, + if input.expect_delim('/').is_ok() { + let control2 = CoordinatePair::parse(context, input)?; + Self::CubicCurve { point, control1, control2, - }, - Err(_) => Self::QuadCurve { - by_to, + } + } else { + Self::QuadCurve { point, control1, - }, + } } }, "smooth" => { let by_to = ByTo::parse(input)?; - let point = CoordinatePair::parse(context, input)?; - if input.try_parse(|i| i.expect_ident_matching("via")).is_ok() { + let point = CommandEndPoint::parse(context, input, by_to)?; + if input.try_parse(|i| i.expect_ident_matching("with")).is_ok() { let control2 = CoordinatePair::parse(context, input)?; Self::SmoothCubic { - by_to, point, control2, } } else { - Self::SmoothQuad { by_to, point } + Self::SmoothQuad { point } } }, "arc" => { let by_to = ByTo::parse(input)?; - let point = CoordinatePair::parse(context, input)?; + let point = CommandEndPoint::parse(context, input, by_to)?; input.expect_ident_matching("of")?; let rx = LengthPercentage::parse(context, input)?; let ry = input @@ -879,7 +906,6 @@ impl Parse for ShapeCommand { break; } Self::Arc { - by_to, point, radii, arc_sweep: arc_sweep.unwrap_or(ArcSweep::Ccw), @@ -901,3 +927,20 @@ impl Parse for generic::CoordinatePair<LengthPercentage> { Ok(Self::new(x, y)) } } + +impl generic::CommandEndPoint<LengthPercentage> { + /// Parse <command-end-point> = to <position> | by <coordinate-pair> + pub fn parse<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't>, + by_to: generic::ByTo, + ) -> Result<Self, ParseError<'i>> { + if by_to.is_abs() { + let point = parse_to_position(context, input)?; + Ok(generic::CommandEndPoint::ToPosition(point)) + } else { + let point = generic::CoordinatePair::parse(context, input)?; + Ok(generic::CommandEndPoint::ByCoordinate(point)) + } + } +} diff --git a/servo/components/style/values/specified/svg_path.rs b/servo/components/style/values/specified/svg_path.rs @@ -8,7 +8,10 @@ use crate::parser::{Parse, ParserContext}; use crate::values::animated::{lists, Animate, Procedure}; use crate::values::distance::{ComputeSquaredDistance, SquaredDistance}; use crate::values::generics::basic_shape::GenericShapeCommand; -use crate::values::generics::basic_shape::{ArcSize, ArcSweep, ByTo, CoordinatePair}; +use crate::values::generics::basic_shape::{ + ArcSize, ArcSweep, ByTo, CommandEndPoint, CoordinatePair, +}; +use crate::values::generics::position::GenericPosition as Position; use crate::values::CSSFloat; use cssparser::Parser; use std::fmt::{self, Write}; @@ -218,32 +221,28 @@ impl PathCommand { } Close }, - Move { by_to, mut point } => { - if !by_to.is_abs() { + Move { mut point } => { + if !point.is_abs() { point += state.pos; + point = point.to_abs(); } - state.pos = point; - state.subpath_start = point; + state.pos = point.into(); + state.subpath_start = point.into(); if reduce { state.last_command = *self; } - Move { - by_to: ByTo::To, - point, - } + Move { point } }, - Line { by_to, mut point } => { - if !by_to.is_abs() { + Line { mut point } => { + if !point.is_abs() { point += state.pos; + point = point.to_abs(); } - state.pos = point; + state.pos = point.into(); if reduce { state.last_command = *self; } - Line { - by_to: ByTo::To, - point, - } + Line { point } }, HLine { by_to, mut x } => { if !by_to.is_abs() { @@ -253,8 +252,7 @@ impl PathCommand { if reduce { state.last_command = *self; PathCommand::Line { - by_to: ByTo::To, - point: state.pos, + point: CommandEndPoint::ToPosition(state.pos.into()), } } else { HLine { by_to: ByTo::To, x } @@ -268,167 +266,147 @@ impl PathCommand { if reduce { state.last_command = *self; PathCommand::Line { - by_to: ByTo::To, - point: state.pos, + point: CommandEndPoint::ToPosition(state.pos.into()), } } else { VLine { by_to: ByTo::To, y } } }, CubicCurve { - by_to, mut point, mut control1, mut control2, } => { - if !by_to.is_abs() { + if !point.is_abs() { point += state.pos; + point = point.to_abs(); control1 += state.pos; control2 += state.pos; } - state.pos = point; + state.pos = point.into(); if reduce { state.last_command = *self; state.last_control = control2; } CubicCurve { - by_to: ByTo::To, point, control1, control2, } }, QuadCurve { - by_to, mut point, mut control1, } => { - if !by_to.is_abs() { + if !point.is_abs() { point += state.pos; + point = point.to_abs(); control1 += state.pos; } if reduce { let c1 = state.pos + 2. * (control1 - state.pos) / 3.; - let control2 = point + 2. * (control1 - point) / 3.; - state.pos = point; + let control2 = CoordPair::from(point) + 2. * (control1 - point.into()) / 3.; + state.pos = point.into(); state.last_command = *self; state.last_control = control1; CubicCurve { - by_to: ByTo::To, point, control1: c1, control2, } } else { - state.pos = point; - QuadCurve { - by_to: ByTo::To, - point, - control1, - } + state.pos = point.into(); + QuadCurve { point, control1 } } }, SmoothCubic { - by_to, mut point, mut control2, } => { - if !by_to.is_abs() { + if !point.is_abs() { point += state.pos; + point = point.to_abs(); control2 += state.pos; } if reduce { let control1 = match state.last_command { PathCommand::CubicCurve { - by_to: _, point: _, control1: _, control2: _, } | PathCommand::SmoothCubic { - by_to: _, point: _, control2: _, } => state.pos + state.pos - state.last_control, _ => state.pos, }; - state.pos = point; + state.pos = point.into(); state.last_control = control2; state.last_command = *self; CubicCurve { - by_to: ByTo::To, point, control1, control2, } } else { - state.pos = point; - SmoothCubic { - by_to: ByTo::To, - point, - control2, - } + state.pos = point.into(); + SmoothCubic { point, control2 } } }, - SmoothQuad { by_to, mut point } => { - if !by_to.is_abs() { + SmoothQuad { mut point } => { + if !point.is_abs() { point += state.pos; + point = point.to_abs(); } if reduce { let control = match state.last_command { PathCommand::QuadCurve { - by_to: _, point: _, control1: _, } - | PathCommand::SmoothQuad { by_to: _, point: _ } => { + | PathCommand::SmoothQuad { point: _ } => { state.pos + state.pos - state.last_control }, _ => state.pos, }; let control1 = state.pos + 2. * (control - state.pos) / 3.; - let control2 = point + 2. * (control - point) / 3.; - state.pos = point; + let control2 = CoordPair::from(point) + 2. * (control - point.into()) / 3.; + state.pos = point.into(); state.last_command = *self; state.last_control = control; CubicCurve { - by_to: ByTo::To, point, control1, control2, } } else { - state.pos = point; - SmoothQuad { - by_to: ByTo::To, - point, - } + state.pos = point.into(); + SmoothQuad { point } } }, Arc { - by_to, mut point, radii, arc_sweep, arc_size, rotate, } => { - if !by_to.is_abs() { + if !point.is_abs() { point += state.pos; + point = point.to_abs(); } - state.pos = point; + state.pos = point.into(); if reduce { state.last_command = *self; if radii.x == 0. && radii.y == 0. { CubicCurve { - by_to: ByTo::To, - point: state.pos, - control1: point, - control2: point, + point: CommandEndPoint::ToPosition(state.pos.into()), + control1: point.into(), + control2: point.into(), } } else { Arc { - by_to: ByTo::To, point, radii, arc_sweep, @@ -438,7 +416,6 @@ impl PathCommand { } } else { Arc { - by_to: ByTo::To, point, radii, arc_sweep, @@ -458,50 +435,44 @@ impl PathCommand { use crate::values::generics::basic_shape::GenericShapeCommand::*; match *self { Close => dest.write_char('Z'), - Move { by_to, point } => { - dest.write_char(if by_to.is_abs() { 'M' } else { 'm' })?; + Move { point } => { + dest.write_char(if point.is_abs() { 'M' } else { 'm' })?; dest.write_char(' ')?; - point.to_css(dest) + CoordPair::from(point).to_css(dest) }, - Line { by_to, point } => { - dest.write_char(if by_to.is_abs() { 'L' } else { 'l' })?; + Line { point } => { + dest.write_char(if point.is_abs() { 'L' } else { 'l' })?; dest.write_char(' ')?; - point.to_css(dest) + CoordPair::from(point).to_css(dest) }, CubicCurve { - by_to, point, control1, control2, } => { - dest.write_char(if by_to.is_abs() { 'C' } else { 'c' })?; + dest.write_char(if point.is_abs() { 'C' } else { 'c' })?; dest.write_char(' ')?; control1.to_css(dest)?; dest.write_char(' ')?; control2.to_css(dest)?; dest.write_char(' ')?; - point.to_css(dest) + CoordPair::from(point).to_css(dest) }, - QuadCurve { - by_to, - point, - control1, - } => { - dest.write_char(if by_to.is_abs() { 'Q' } else { 'q' })?; + QuadCurve { point, control1 } => { + dest.write_char(if point.is_abs() { 'Q' } else { 'q' })?; dest.write_char(' ')?; control1.to_css(dest)?; dest.write_char(' ')?; - point.to_css(dest) + CoordPair::from(point).to_css(dest) }, Arc { - by_to, point, radii, arc_sweep, arc_size, rotate, } => { - dest.write_char(if by_to.is_abs() { 'A' } else { 'a' })?; + dest.write_char(if point.is_abs() { 'A' } else { 'a' })?; dest.write_char(' ')?; radii.to_css(dest)?; dest.write_char(' ')?; @@ -511,7 +482,7 @@ impl PathCommand { dest.write_char(' ')?; (arc_sweep as i32).to_css(dest)?; dest.write_char(' ')?; - point.to_css(dest) + CoordPair::from(point).to_css(dest) }, HLine { by_to, x } => { dest.write_char(if by_to.is_abs() { 'H' } else { 'h' })?; @@ -523,21 +494,17 @@ impl PathCommand { dest.write_char(' ')?; y.to_css(dest) }, - SmoothCubic { - by_to, - point, - control2, - } => { - dest.write_char(if by_to.is_abs() { 'S' } else { 's' })?; + SmoothCubic { point, control2 } => { + dest.write_char(if point.is_abs() { 'S' } else { 's' })?; dest.write_char(' ')?; control2.to_css(dest)?; dest.write_char(' ')?; - point.to_css(dest) + CoordPair::from(point).to_css(dest) }, - SmoothQuad { by_to, point } => { - dest.write_char(if by_to.is_abs() { 'T' } else { 't' })?; + SmoothQuad { point } => { + dest.write_char(if point.is_abs() { 'T' } else { 't' })?; dest.write_char(' ')?; - point.to_css(dest) + CoordPair::from(point).to_css(dest) }, } } @@ -598,6 +565,53 @@ impl ops::Div<CSSFloat> for CoordPair { } } +impl CommandEndPoint<CSSFloat> { + /// Converts <command-end-point> into absolutely positioned type. + pub fn to_abs(self) -> CommandEndPoint<CSSFloat> { + // Consume self value. + match self { + CommandEndPoint::ToPosition(_) => self, + CommandEndPoint::ByCoordinate(coord) => { + let pos = Position { + horizontal: coord.x, + vertical: coord.y, + }; + CommandEndPoint::ToPosition(pos) + }, + } + } +} + +impl From<CommandEndPoint<CSSFloat>> for CoordPair { + #[inline] + fn from(p: CommandEndPoint<CSSFloat>) -> Self { + match p { + CommandEndPoint::ToPosition(pos) => CoordPair { + x: pos.horizontal, + y: pos.vertical, + }, + CommandEndPoint::ByCoordinate(coord) => coord, + } + } +} + +impl From<CoordPair> for CommandEndPoint<CSSFloat> { + #[inline] + fn from(coord: CoordPair) -> Self { + CommandEndPoint::ByCoordinate(coord) + } +} + +impl From<CoordPair> for Position<CSSFloat, CSSFloat> { + #[inline] + fn from(coord: CoordPair) -> Self { + Position { + horizontal: coord.x, + vertical: coord.y, + } + } +} + /// SVG Path parser. struct PathParser<'a> { chars: Peekable<Cloned<slice::Iter<'a, u8>>>, @@ -607,8 +621,8 @@ struct PathParser<'a> { macro_rules! parse_arguments { ( $parser:ident, - $by_to:ident, $enum:ident, + $( $field:ident : $value:expr, )* [ $para:ident => $func:ident $(, $other_para:ident => $other_func:ident)* ] ) => { { @@ -619,7 +633,7 @@ macro_rules! parse_arguments { let $other_para = $other_func(&mut $parser.chars)?; )* $parser.path.push( - PathCommand::$enum { $by_to, $para $(, $other_para)* } + PathCommand::$enum { $( $field: $value, )* $para $(, $other_para)* } ); // End of string or the next character is a possible new command. @@ -689,9 +703,13 @@ impl<'a> PathParser<'a> { }; skip_wsp(&mut self.chars); - let point = parse_coord(&mut self.chars)?; let by_to = if command == b'M' { ByTo::To } else { ByTo::By }; - self.path.push(PathCommand::Move { by_to, point }); + let point = if by_to == ByTo::To { + parse_command_point_abs(&mut self.chars) + } else { + parse_command_point_rel(&mut self.chars) + }?; + self.path.push(PathCommand::Move { point }); // End of string or the next character is a possible new command. if !skip_wsp(&mut self.chars) || self.chars.peek().map_or(true, |c| c.is_ascii_alphabetic()) @@ -713,43 +731,69 @@ impl<'a> PathParser<'a> { /// Parse "lineto" command. fn parse_lineto(&mut self, by_to: ByTo) -> Result<(), ()> { - parse_arguments!(self, by_to, Line, [ point => parse_coord ]) + if by_to.is_abs() { + parse_arguments!(self, Line, [ point => parse_command_point_abs ]) + } else { + parse_arguments!(self, Line, [ point => parse_command_point_rel ]) + } } /// Parse horizontal "lineto" command. fn parse_h_lineto(&mut self, by_to: ByTo) -> Result<(), ()> { - parse_arguments!(self, by_to, HLine, [ x => parse_number ]) + parse_arguments!(self, HLine, by_to: by_to, [ x => parse_number ]) } /// Parse vertical "lineto" command. fn parse_v_lineto(&mut self, by_to: ByTo) -> Result<(), ()> { - parse_arguments!(self, by_to, VLine, [ y => parse_number ]) + parse_arguments!(self, VLine, by_to: by_to, [ y => parse_number ]) } /// Parse cubic Bézier curve command. fn parse_curveto(&mut self, by_to: ByTo) -> Result<(), ()> { - parse_arguments!(self, by_to, CubicCurve, [ - control1 => parse_coord, control2 => parse_coord, point => parse_coord - ]) + if by_to.is_abs() { + parse_arguments!(self, CubicCurve, [ + control1 => parse_coord, control2 => parse_coord, point => parse_command_point_abs + ]) + } else { + parse_arguments!(self, CubicCurve, [ + control1 => parse_coord, control2 => parse_coord, point => parse_command_point_rel + ]) + } } /// Parse smooth "curveto" command. fn parse_smooth_curveto(&mut self, by_to: ByTo) -> Result<(), ()> { - parse_arguments!(self, by_to, SmoothCubic, [ - control2 => parse_coord, point => parse_coord - ]) + if by_to.is_abs() { + parse_arguments!(self, SmoothCubic, [ + control2 => parse_coord, point => parse_command_point_abs + ]) + } else { + parse_arguments!(self, SmoothCubic, [ + control2 => parse_coord, point => parse_command_point_rel + ]) + } } /// Parse quadratic Bézier curve command. fn parse_quadratic_bezier_curveto(&mut self, by_to: ByTo) -> Result<(), ()> { - parse_arguments!(self, by_to, QuadCurve, [ - control1 => parse_coord, point => parse_coord - ]) + if by_to.is_abs() { + parse_arguments!(self, QuadCurve, [ + control1 => parse_coord, point => parse_command_point_abs + ]) + } else { + parse_arguments!(self, QuadCurve, [ + control1 => parse_coord, point => parse_command_point_rel + ]) + } } /// Parse smooth quadratic Bézier curveto command. fn parse_smooth_quadratic_bezier_curveto(&mut self, by_to: ByTo) -> Result<(), ()> { - parse_arguments!(self, by_to, SmoothQuad, [ point => parse_coord ]) + if by_to.is_abs() { + parse_arguments!(self, SmoothQuad, [ point => parse_command_point_abs ]) + } else { + parse_arguments!(self, SmoothQuad, [ point => parse_command_point_rel ]) + } } /// Parse elliptical arc curve command. @@ -765,13 +809,23 @@ impl<'a> PathParser<'a> { Some(c) if c == b'0' => Ok(ArcSweep::Ccw), _ => Err(()), }; - parse_arguments!(self, by_to, Arc, [ - radii => parse_coord, - rotate => parse_number, - arc_size => parse_arc_size, - arc_sweep => parse_arc_sweep, - point => parse_coord - ]) + if by_to.is_abs() { + parse_arguments!(self, Arc, [ + radii => parse_coord, + rotate => parse_number, + arc_size => parse_arc_size, + arc_sweep => parse_arc_sweep, + point => parse_command_point_abs + ]) + } else { + parse_arguments!(self, Arc, [ + radii => parse_coord, + rotate => parse_number, + arc_size => parse_arc_size, + arc_sweep => parse_arc_sweep, + point => parse_command_point_rel + ]) + } } } @@ -783,6 +837,22 @@ fn parse_coord(iter: &mut Peekable<Cloned<slice::Iter<u8>>>) -> Result<CoordPair Ok(CoordPair::new(x, y)) } +/// Parse a pair of numbers that describes the absolutely positioned endpoint. +fn parse_command_point_abs( + iter: &mut Peekable<Cloned<slice::Iter<u8>>>, +) -> Result<CommandEndPoint<f32>, ()> { + let coord = parse_coord(iter)?; + Ok(CommandEndPoint::ToPosition(coord.into())) +} + +/// Parse a pair of numbers that describes the relatively positioned endpoint. +fn parse_command_point_rel( + iter: &mut Peekable<Cloned<slice::Iter<u8>>>, +) -> Result<CommandEndPoint<f32>, ()> { + let coord = parse_coord(iter)?; + Ok(CommandEndPoint::ByCoordinate(coord)) +} + /// This is a special version which parses the number for SVG Path. e.g. "M 0.6.5" should be parsed /// as MoveTo with a coordinate of ("0.6", ".5"), instead of treating 0.6.5 as a non-valid floating /// point number. In other words, the logic here is similar with that of diff --git a/servo/ports/geckolib/cbindgen.toml b/servo/ports/geckolib/cbindgen.toml @@ -546,6 +546,10 @@ renaming_overrides_prefixing = true inline bool HasPercent() const; inline bool DependsOnPositioningAreaSize() const; static inline StyleGenericPosition FromPercentage(float); + inline gfx::Point ToGfxPoint(const CSSSize* aBasis = nullptr) const; + gfx::Point ToGfxPoint(const CSSSize& aBasis) const { + return ToGfxPoint(&aBasis); + }; """ "GenericBackgroundSize" = """ @@ -845,6 +849,13 @@ renaming_overrides_prefixing = true }; """ +"CommandEndPoint" = """ + inline gfx::Point ToGfxPoint(const CSSSize* aBasis = nullptr) const; + gfx::Point ToGfxPoint(const CSSSize& aBasis) const { + return ToGfxPoint(&aBasis); + }; +""" + "TextOverflow" = """ StyleTextOverflow() : first(StyleTextOverflowSide::Clip()), diff --git a/testing/web-platform/meta/css/css-masking/animations/clip-path-interpolation-shape.html.ini b/testing/web-platform/meta/css/css-masking/animations/clip-path-interpolation-shape.html.ini @@ -1,574 +1,4 @@ [clip-path-interpolation-shape.html] - [CSS Transitions: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0) should be [shape(from 5px 5px, hline to 5px, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0) should be [shape(from 5px 5px, hline to 5px, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <clip-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1) should be [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [CSS Transitions: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [CSS Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [Web Animations: property <clip-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - [CSS Transitions: property <clip-path> from [shape(from 5% 5px, arc to 15% -15px of 10px 20px, arc by 15% -5px of 30px 30px cw rotate 30deg large, arc to 25% 20px of 10px 5px small)\] to [shape(from 15% 15px, arc to 5% -25px of 20px 30px, arc by 25% -15px of 20px 20px cw rotate 270deg small, arc to 25% 20px of 10px 5px small cw)\] at (0.3) should be [shape(from 8% 8px, arc to 12% -18px of 13px 23px, arc by 18% -8px of 27px 27px rotate 102deg cw large, arc to 25% 20px of 10px 5px cw)\]] expected: FAIL diff --git a/testing/web-platform/meta/css/css-masking/clip-path/clip-path-shape-003.html.ini b/testing/web-platform/meta/css/css-masking/clip-path/clip-path-shape-003.html.ini @@ -1,2 +0,0 @@ -[clip-path-shape-003.html] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.html.ini b/testing/web-platform/meta/css/css-masking/clip-path/clip-path-shape-hline-vline-keywords.html.ini @@ -1,2 +0,0 @@ -[clip-path-shape-hline-vline-keywords.html] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-masking/parsing/clip-path-shape-parsing.html.ini b/testing/web-platform/meta/css/css-masking/parsing/clip-path-shape-parsing.html.ini @@ -1,16 +1,4 @@ [clip-path-shape-parsing.html] - [e.style['clip-path'\] = "shape(from 10px 10px, curve to 50px 20px with 10rem 1%)" should set the property value] - expected: FAIL - - [e.style['clip-path'\] = "shape(from 10px 10px, curve to 50px 20px with 10rem 1px / 20vh 1ch)" should set the property value] - expected: FAIL - - [e.style['clip-path'\] = "shape(from 10px 10px, curve by 50px 20px with 10rem 1px / 20vh 1ch)" should set the property value] - expected: FAIL - - [e.style['clip-path'\] = "shape(from 10px 10px, smooth to 50px 20px with 10rem 1%)" should set the property value] - expected: FAIL - [e.style['clip-path'\] = "shape(from 10px 10px, arc to 50px 1pt of 10px 10px)" should set the property value] expected: FAIL diff --git a/testing/web-platform/meta/css/css-shapes/shape-functions/shape-function-computed.html.ini b/testing/web-platform/meta/css/css-shapes/shape-functions/shape-function-computed.html.ini @@ -1,10 +1,4 @@ [shape-function-computed.html] - [Property clip-path value 'shape(from 20px 40px, curve by 20px 20px with 10px 30px)'] - expected: FAIL - - [Property clip-path value 'shape(from 20px 40px, curve by 20px 20px with 10px 30px / 12px 32px)'] - expected: FAIL - [Property clip-path value 'shape(from center, curve to center bottom with top right / bottom right)'] expected: FAIL @@ -16,6 +10,3 @@ [Property clip-path value 'shape(from 20px 40px, curve to top right with 10px 30px from origin / 12px 32px from origin)'] expected: FAIL - - [Property clip-path value 'shape(from 20px 40px, smooth by 20px 20px with 12px 32px)'] - expected: FAIL diff --git a/testing/web-platform/meta/css/css-shapes/shape-functions/shape-function-invalid.html.ini b/testing/web-platform/meta/css/css-shapes/shape-functions/shape-function-invalid.html.ini @@ -1,6 +1,15 @@ [shape-function-invalid.html] - [e.style['clip-path'\] = "shape(from 20px 40px, curve by 20px 20px via 10px 30px)" should not set the property value] + [e.style['clip-path'\] = "shape(from 20px 40px, move to 20px 30px, hline to top)" should not set the property value] + expected: FAIL + + [e.style['clip-path'\] = "shape(from 20px 40px, move to 20px 30px, hline to bottom)" should not set the property value] + expected: FAIL + + [e.style['clip-path'\] = "shape(from 20px 40px, move to 20px 30px, vline to left)" should not set the property value] expected: FAIL - [e.style['clip-path'\] = "shape(from 20px 40px, curve by 20px 20px via 10px 30px 12px 32px)" should not set the property value] + [e.style['clip-path'\] = "shape(from 20px 40px, move to 20px 30px, vline to right)" should not set the property value] + expected: FAIL + + [e.style['clip-path'\] = "shape(from 20px 40px, move to 20px 30px, hline to right, vline to bottom left, close)" should not set the property value] expected: FAIL diff --git a/testing/web-platform/meta/css/css-shapes/shape-functions/shape-function-valid.html.ini b/testing/web-platform/meta/css/css-shapes/shape-functions/shape-function-valid.html.ini @@ -11,15 +11,6 @@ [e.style['clip-path'\] = "shape(from 20px 40px, move to 20px 30px, vline to y-start, vline to y-end)" should set the property value] expected: FAIL - [e.style['clip-path'\] = "shape(from 20px 40px, curve to 20px 20px with 10px 30px)" should set the property value] - expected: FAIL - - [e.style['clip-path'\] = "shape(from 20px 40px, curve to 20em 20pt with 10vw 30vh)" should set the property value] - expected: FAIL - - [e.style['clip-path'\] = "shape(from 20px 40px, curve to 10% 20% with 10px 30px / 12px 32px)" should set the property value] - expected: FAIL - [e.style['clip-path'\] = "shape(from 20px 40px, curve to top left with 10px 30px / 12px 32px)" should set the property value] expected: FAIL @@ -44,15 +35,9 @@ [e.style['clip-path'\] = "shape(from 20px 40px, curve to right center with 10px 30px from origin / 12px 32px from start)" should set the property value] expected: FAIL - [e.style['clip-path'\] = "shape(from 20px 40px, curve by 20px 20px with 10px 30px)" should set the property value] - expected: FAIL - [e.style['clip-path'\] = "shape(from 20px 40px, curve by 20px 20px with 10px 30px from origin)" should set the property value] expected: FAIL - [e.style['clip-path'\] = "shape(from 20px 40px, curve by 20px 20px with 10px 30px / 12px 32px)" should set the property value] - expected: FAIL - [e.style['clip-path'\] = "shape(from 20px 40px, curve by 20% 20em with 10px 30px from start / 12px 32px from end)" should set the property value] expected: FAIL diff --git a/testing/web-platform/meta/css/motion/animation/offset-path-interpolation-008.html.ini b/testing/web-platform/meta/css/motion/animation/offset-path-interpolation-008.html.ini @@ -1,1530 +1,4 @@ [offset-path-interpolation-008.html] - [CSS Transitions: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (-0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0) should be [shape(from 5px 5px, line to 10px 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0.6) should be [shape(from -1px 5px, line to 16px 16%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1) should be [shape(from -5px 5px, line to 20px 20%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1.5) should be [shape(from -10px 5px, line to 25px 25%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (-0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0) should be [shape(from 5px 5px, line to 10px 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0.6) should be [shape(from -1px 5px, line to 16px 16%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1) should be [shape(from -5px 5px, line to 20px 20%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1.5) should be [shape(from -10px 5px, line to 25px 25%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (-0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0) should be [shape(from 5px 5px, line to 10px 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0.6) should be [shape(from -1px 5px, line to 16px 16%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1) should be [shape(from -5px 5px, line to 20px 20%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1.5) should be [shape(from -10px 5px, line to 25px 25%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (-0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0) should be [shape(from 5px 5px, line to 10px 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (0.6) should be [shape(from -1px 5px, line to 16px 16%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1) should be [shape(from -5px 5px, line to 20px 20%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from neutral to [shape(from -5px 5px, line to 20px 20%)\] at (1.5) should be [shape(from -10px 5px, line to 25px 25%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (-0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.6) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (-0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.6) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (-0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.6) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (-0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.3) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.6) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (-0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.6) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (-0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.3) should be [initial\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (0.6) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [initial\] to [shape(from 8px 5px, line to 7px 7%)\] at (1.5) should be [shape(from 8px 5px, line to 7px 7%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (-0.3) should be [shape(from calc(-4.5% - 6.5px) 2px, move to 0.5% 4.3px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0) should be [shape(from calc(0% - 5px) 5px, move to 5% 1px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0.5) should be [shape(from calc(7.5% - 2.5px) 10px, move to 12.5% -4.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1) should be [shape(from 15% 15px, move to 20% -10px\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1.5) should be [shape(from calc(22.5% + 2.5px) 20px, move to 27.5% -15.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (-0.3) should be [shape(from calc(-4.5% - 6.5px) 2px, move to 0.5% 4.3px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0) should be [shape(from calc(0% - 5px) 5px, move to 5% 1px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0.5) should be [shape(from calc(7.5% - 2.5px) 10px, move to 12.5% -4.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1) should be [shape(from 15% 15px, move to 20% -10px\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1.5) should be [shape(from calc(22.5% + 2.5px) 20px, move to 27.5% -15.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (-0.3) should be [shape(from calc(-4.5% - 6.5px) 2px, move to 0.5% 4.3px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0) should be [shape(from calc(0% - 5px) 5px, move to 5% 1px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0.5) should be [shape(from calc(7.5% - 2.5px) 10px, move to 12.5% -4.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1) should be [shape(from 15% 15px, move to 20% -10px\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1.5) should be [shape(from calc(22.5% + 2.5px) 20px, move to 27.5% -15.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (-0.3) should be [shape(from calc(-4.5% - 6.5px) 2px, move to 0.5% 4.3px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0) should be [shape(from calc(0% - 5px) 5px, move to 5% 1px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (0.5) should be [shape(from calc(7.5% - 2.5px) 10px, move to 12.5% -4.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1) should be [shape(from 15% 15px, move to 20% -10px\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [inherit\] to [shape(from 15% 15px, move to 20% -10px)\] at (1.5) should be [shape(from calc(22.5% + 2.5px) 20px, move to 27.5% -15.5px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (-0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (-0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (-0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (-0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.3) should be [unset\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [unset\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (-0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (-0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (-0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (-0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.3) should be [none\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [none\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-behavior:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (-0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.3) should be [shape(from 10px 10px, move to 10% 10%)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (0.6) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 10px 10px, move to 10% 10%)\] to [shape(from 10px 10px, close)\] at (1.5) should be [shape(from 10px 10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (-0.3) should be [shape(from 2% 2px, hline to -1%, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0) should be [shape(from 5% 5px, hline to 5%, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0.5) should be [shape(from 10% 10px, hline to 15% , vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1) should be [shape(from 15% 15px, hline to 25%, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1.5) should be [shape(from 20% 20px, hline to 35%, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (-0.3) should be [shape(from 2% 2px, hline to -1%, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0) should be [shape(from 5% 5px, hline to 5%, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0.5) should be [shape(from 10% 10px, hline to 15% , vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1) should be [shape(from 15% 15px, hline to 25%, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1.5) should be [shape(from 20% 20px, hline to 35%, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (-0.3) should be [shape(from 2% 2px, hline to -1%, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0) should be [shape(from 5% 5px, hline to 5%, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0.5) should be [shape(from 10% 10px, hline to 15% , vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1) should be [shape(from 15% 15px, hline to 25%, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1.5) should be [shape(from 20% 20px, hline to 35%, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (-0.3) should be [shape(from 2% 2px, hline to -1%, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0) should be [shape(from 5% 5px, hline to 5%, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (0.5) should be [shape(from 10% 10px, hline to 15% , vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1) should be [shape(from 15% 15px, hline to 25%, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5% 5px, hline to 5%, vline to -5px, close)\] to [shape(from 15% 15px, hline to 25%, vline to -15px, close)\] at (1.5) should be [shape(from 20% 20px, hline to 35%, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (-0.3) should be [shape(from 8px calc(-6.5% - 1.5px), hline to 7px, vline by calc(-3% + 208px), hline by 5.92px, close, vline by 2.8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0) should be [shape(from 5px -5%, hline to 10px, vline by calc(0% + 160px), hline by 8.25px, close, vline by 4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0.6) should be [shape(from -1px calc(-2% + 3px), hline to 16px, vline by calc(6% + 64px), hline by 12.9px, close ,vline by 6.4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1) should be [shape(from -5px calc(0% + 5px), hline to 20px, vline by 10%, hline by 16px, close, vline by 8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1.5) should be [shape(from -10px calc(2.5% + 7.5px), hline to 25px, vline by calc(15% - 80px), hline by 19.88px, close, vline by 10px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (-0.3) should be [shape(from 8px calc(-6.5% - 1.5px), hline to 7px, vline by calc(-3% + 208px), hline by 5.92px, close, vline by 2.8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0) should be [shape(from 5px -5%, hline to 10px, vline by calc(0% + 160px), hline by 8.25px, close, vline by 4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0.6) should be [shape(from -1px calc(-2% + 3px), hline to 16px, vline by calc(6% + 64px), hline by 12.9px, close ,vline by 6.4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1) should be [shape(from -5px calc(0% + 5px), hline to 20px, vline by 10%, hline by 16px, close, vline by 8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1.5) should be [shape(from -10px calc(2.5% + 7.5px), hline to 25px, vline by calc(15% - 80px), hline by 19.88px, close, vline by 10px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (-0.3) should be [shape(from 8px calc(-6.5% - 1.5px), hline to 7px, vline by calc(-3% + 208px), hline by 5.92px, close, vline by 2.8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0) should be [shape(from 5px -5%, hline to 10px, vline by calc(0% + 160px), hline by 8.25px, close, vline by 4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0.6) should be [shape(from -1px calc(-2% + 3px), hline to 16px, vline by calc(6% + 64px), hline by 12.9px, close ,vline by 6.4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1) should be [shape(from -5px calc(0% + 5px), hline to 20px, vline by 10%, hline by 16px, close, vline by 8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1.5) should be [shape(from -10px calc(2.5% + 7.5px), hline to 25px, vline by calc(15% - 80px), hline by 19.88px, close, vline by 10px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (-0.3) should be [shape(from 8px calc(-6.5% - 1.5px), hline to 7px, vline by calc(-3% + 208px), hline by 5.92px, close, vline by 2.8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0) should be [shape(from 5px -5%, hline to 10px, vline by calc(0% + 160px), hline by 8.25px, close, vline by 4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (0.6) should be [shape(from -1px calc(-2% + 3px), hline to 16px, vline by calc(6% + 64px), hline by 12.9px, close ,vline by 6.4px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1) should be [shape(from -5px calc(0% + 5px), hline to 20px, vline by 10%, hline by 16px, close, vline by 8px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px -5%, hline to 10px, vline by 10rem, hline by 8.25px, close, vline by 3pt)\] to [shape(from -5px 5px, hline to 20px, vline by 10%, hline by 1em, close, vline by 6pt)\] at (1.5) should be [shape(from -10px calc(2.5% + 7.5px), hline to 25px, vline by calc(15% - 80px), hline by 19.88px, close, vline by 10px)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (-0.3) should be [shape(from 2px 2px, hline to -1px, vline to -2px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0) should be [shape(from 5px 5px, hline to 5px, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0) should be [shape(from 5px 5px, hline to 5px, vline to -5px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (0.5) should be [shape(from 10px 10px, hline to 15px, vline to -10px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [Web Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1) should be [shape(from 15px 15px, hline to 25px, vline to -15px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Animations: property <offset-path> from [shape(from 5px 5px, hline to 5px, vline to -5px, close)\] to [path("M 15 15 H 25 V -15 Z")\] at (1.5) should be [shape(from 20px 20px, hline to 35px, vline to -20px, close)\]] - expected: - if (os == "mac") and not debug: [PASS, FAIL] - if (os == "android") and not debug: [PASS, FAIL] - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve to 7% 13px with -3% 86px, curve to 33% 17px with 17% 53px / 34% 61px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve to 15% 5px with 5% 70px, curve to 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve to 20% 0px with 10% 60px, curve to 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve to 25% -5px with 15% 50px, curve to 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px /34% 61px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px /34% 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px /34% 61px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from 2% 2px, curve by 7% 13px with -3% 86px, curve by 33% 17px with 17% 53px /34% 61px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from 10% 10px, curve by 15% 5px with 5% 70px, curve by 25% 25px with 25% 45px / 10% 85px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve by 10% 10px with 0% 80px, curve by 30% 20px with 20% 50px / 25% 70px)\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from 20% 20px, curve by 25% -5px with 15% 50px, curve by 15% 35px with 35% 35px / -20% 115px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth to 7% 13px with -3% 86px, smooth to 33% 17px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth to 15% 5px with 5% 70px, smooth to 25% 25px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [shape(from 15% 15px, smooth to 20% 0px with 10% 60px, smooth to 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth to 25% -5px with 15% 50px, smooth to 15% 35px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (-0.3) should be [shape(from 2% 2px, smooth by 7% 13px with -3% 86px, smooth by 33% 17px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0) should be [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (0.5) should be [shape(from 10% 10px, smooth by 15% 5px with 5% 70px, smooth by 25% 25px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth by 10% 10px with 0% 80px, smooth by 30% 20px)\] to [shape(from 15% 15px, smooth by 20% 0px with 10% 60px, smooth by 20% 30px)\] at (1.5) should be [shape(from 20% 20px, smooth by 25% -5px with 15% 50px, smooth by 15% 35px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, curve to calc(13% - 6px) 13px with calc(0% - 3px) 86px, curve to calc(39% - 6px) 17px with calc(26% - 9px) 53px / calc(32.5% + 1.5px) 61px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0) should be [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, curve to calc(5% + 10px) 5px with calc(0% + 5px) 70px, curve to calc(15% + 10px) 25px with calc(10% + 15px) 45px / calc(12.5% - 2.5px) 85px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, curve to calc(0% + 20px) 0px with calc(0% + 10px) 60px, curve to calc(0% + 20px) 30px with calc(0% + 30px) 40px / calc(0% - 5px) 100px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, curve to 10% 10px with 0% 80px, curve to 30% 20px with 20% 50px / 25% 70px)\] to [path("M 15 15 Q 10 60 20 0 C 30 40 -5 100 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, curve to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, curve to calc(-15% + 30px) 35px with calc(-10% + 45px) 35px / calc(-12.5% - 7.5px) 115px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (-0.3) should be [shape(from calc(-4.5% + 6.5px) 2px, curve by calc(-6% + 13px) 13px with -3% 86px, curve by calc(-6% + 39px) 17px with calc(-9% + 26px) 53px / calc(1.5% + 32.5px) 61px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0) should be [shape(from calc(0% + 5px) 5px, curve by calc(0% + 10px) 10px with 0% 80px, curve by calc(0% + 30px) 20px with calc(0% + 20px) 50px / calc(0% + 25px) 70px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (0.5) should be [shape(from calc(7.5% + 2.5px) 10px, curve by calc(10% + 5px) 5px with 5% 70px, curve by calc(10% + 15px) 25px with calc(15% + 10px) 45px / calc(-2.5% + 12.5px) 85px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1) should be [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 q 0 80 10 10 c 20 50 25 70 30 20")\] to [shape(from 15% 15px, curve by 20% 0px with 10% 60px, curve by 20% 30px with 30% 40px / -5% 100px)\] at (1.5) should be [shape(from calc(22.5% - 2.5px) 20px, curve by calc(30% - 5px) -5px with 15% 50px, curve by calc(30% - 15px) 35px with calc(45% - 10px) 35px / calc(-7.5% - 12.5px) 115px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (-0.3) should be [shape(from calc(6.5% - 4.5px) 2px, smooth to calc(13% - 6px) 13px with calc(0% - 3px) 86px, smooth to calc(39% - 6px) 17px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0) should be [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (0.5) should be [shape(from calc(2.5% + 7.5px) 10px, smooth to calc(5% + 10px) 5px with calc(0% + 5px) 70px, smooth to calc(15% + 10px) 25px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1) should be [shape(from calc(0% + 15px) 15px, smooth to calc(0% + 20px) 0px with calc(0% + 10px) 60px, smooth to calc(0% + 20px) 30px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [shape(from 5% 5px, smooth to 10% 10px with 0% 80px, smooth to 30% 20px)\] to [path("M 15 15 S 10 60 20 0 T 20 30")\] at (1.5) should be [shape(from calc(-2.5% + 22.5px) 20px, smooth to calc(-5% + 30px) -5px with calc(0% + 15px) 50px, smooth to calc(-15% + 30px) 35px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [CSS Transitions: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [CSS Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (-0.3) should be [shape(from 2px 2px, smooth by 7px 13px with -3px 86px, smooth by 33px 17px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0) should be [shape(from 5px 5px, smooth by 10px 10px with 0px 80px, smooth by 30px 20px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (0.5) should be [shape(from 10px 10px, smooth by 15px 5px with 5px 70px, smooth by 25px 25px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1) should be [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\]] - expected: FAIL - - [Web Animations: property <offset-path> from [path("M 5 5 s 0 80 10 10 t 30 20")\] to [shape(from 15px 15px, smooth by 20px 0px with 10px 60px, smooth by 20px 30px)\] at (1.5) should be [shape(from 20px 20px, smooth by 25px -5px with 15px 50px, smooth by 15px 35px)\]] - expected: FAIL - [CSS Transitions: property <offset-path> from [shape(from 5% 5px, arc to 15% -15px of 10px 20px, arc by 15% -5px of 30px 30px cw rotate 30deg large, arc to 25% 20px of 10px 5px small)\] to [shape(from 15% 15px, arc to 5% -25px of 20px 30px, arc by 25% -15px of 20px 20px cw rotate 270deg small, arc to 25% 20px of 10px 5px small cw)\] at (0.3) should be [shape(from 8% 8px, arc to 12% -18px of 13px 23px ccw small, arc by 18% -8px of 27px 27px rotate 102deg cw large, arc to 25% 20px of 10px 5px cw small )\]] expected: FAIL diff --git a/testing/web-platform/meta/css/motion/parsing/offset-path-shape-computed.html.ini b/testing/web-platform/meta/css/motion/parsing/offset-path-shape-computed.html.ini @@ -31,12 +31,3 @@ [Property offset-path value 'shape(from 10% 1rem, arc to 50px 3pt of 20% cw large rotate 25deg)'] expected: if (os == "mac") and not debug: [PASS, FAIL] - - [Property offset-path value 'shape(from 10px 10px, curve to 50px 20px with 10rem 1%)'] - expected: FAIL - - [Property offset-path value 'shape(from 10px 10px, curve to 50px 20px with 10rem 1px / 20% 1em)'] - expected: FAIL - - [Property offset-path value 'shape(from 10px 10px, smooth to 50px 20px with 10rem 1%)'] - expected: FAIL diff --git a/testing/web-platform/meta/css/motion/parsing/offset-path-shape-parsing.html.ini b/testing/web-platform/meta/css/motion/parsing/offset-path-shape-parsing.html.ini @@ -49,18 +49,6 @@ expected: if (os == "mac") and not debug: [PASS, FAIL] - [e.style['offset-path'\] = "shape(from 10px 10px, curve to 50px 20px with 10rem 1%)" should set the property value] - expected: FAIL - - [e.style['offset-path'\] = "shape(from 10px 10px, curve to 50px 20px with 10rem 1px / 20vh 1ch)" should set the property value] - expected: FAIL - - [e.style['offset-path'\] = "shape(from 10px 10px, curve by 50px 20px with 10rem 1px / 20vh 1ch)" should set the property value] - expected: FAIL - - [e.style['offset-path'\] = "shape(from 10px 10px, smooth to 50px 20px with 10rem 1%)" should set the property value] - expected: FAIL - [e.style['offset-path'\] = "shape(evenodd from 0px 0px, line to 10px 10px)" should set the property value] expected: FAIL @@ -72,3 +60,6 @@ [e.style['offset-path'\] = "shape(from 10px 10px, curve to 50px 20px with 10rem center)" should set the property value] expected: FAIL + + [e.style['offset-path'\] = "shape(from 10px 10px, curve to 50px 20px with 10rem 1% 12px)" should not set the property value] + expected: FAIL