-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CSS Math Functions] Correctly serialize abs/sign/exp/log/pow/sqrt ro…
…ot nodes https://bugs.webkit.org/show_bug.cgi?id=259012 rdar://111948465 Reviewed by Darin Adler. From the spec https://drafts.csswg.org/css-values-4/#calc-simplification: > If root is an operator node that’s not one of the calc-operator nodes, and all of its calculation children are numeric values with enough information to compute the operation root represents, return the result of running root’s operation using its children, expressed in the result’s canonical unit. We now always try to resolve the top-level abs/sign/exp/log/pow/sqrt functions, e.g. abs(-1) now becomes calc(1) instead of staying abs(-1). This is consistent with calc(abs(-1)) being serialized as calc(1). * LayoutTests/imported/w3c/web-platform-tests/css/css-values/exp-log-serialize-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-values/exp-log-serialize.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-serialize-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-serialize.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-values/signs-abs-serialize-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-values/signs-abs-serialize.html: Re-import WPT with fixes from upstream. * Source/WebCore/css/calc/CSSCalcOperationNode.cpp: (WebCore::CSSCalcOperationNode::simplifyNode): * Source/WebCore/css/calc/CSSCalcOperationNode.h: Canonical link: https://commits.webkit.org/265879@main
- Loading branch information
Showing
10 changed files
with
61 additions
and
92 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 12 additions & 12 deletions
24
...ests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-serialize-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 7 additions & 47 deletions
54
LayoutTests/imported/w3c/web-platform-tests/css/css-values/signs-abs-serialize-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,58 +1,18 @@ | ||
|
||
FAIL 'abs(1)' as a specified value should serialize as 'calc(1)'. assert_equals: 'abs(1)' and 'calc(1)' should serialize the same in specified values. expected "calc(1)" but got "abs(1)" | ||
FAIL 'scale(abs(1))' as a specified value should serialize as 'scale(calc(1))'. assert_equals: 'scale(abs(1))' and 'scale(calc(1))' should serialize the same in specified values. expected "scale(calc(1))" but got "scale(abs(1))" | ||
PASS 'abs(1)' as a computed value should serialize as '1'. | ||
PASS 'scale(abs(1))' as a computed value should serialize as 'matrix(1, 0, 0, 1, 0, 0)'. | ||
FAIL 'sign(.1)' as a specified value should serialize as 'calc(1)'. assert_equals: 'sign(.1)' and 'calc(1)' should serialize the same in specified values. expected "calc(1)" but got "sign(0.1)" | ||
FAIL 'scale(sign(.1))' as a specified value should serialize as 'scale(calc(1))'. assert_equals: 'scale(sign(.1))' and 'scale(calc(1))' should serialize the same in specified values. expected "scale(calc(1))" but got "scale(sign(0.1))" | ||
PASS 'sign(.1)' as a computed value should serialize as '1'. | ||
PASS 'scale(sign(.1))' as a computed value should serialize as 'matrix(1, 0, 0, 1, 0, 0)'. | ||
FAIL 'abs(1 + 2 + 3)' as a specified value should serialize as 'calc(6)'. assert_equals: 'abs(1 + 2 + 3)' and 'calc(6)' should serialize the same in specified values. expected "calc(6)" but got "abs(6)" | ||
FAIL 'scale(abs(1 + 2 + 3))' as a specified value should serialize as 'scale(calc(6))'. assert_equals: 'scale(abs(1 + 2 + 3))' and 'scale(calc(6))' should serialize the same in specified values. expected "scale(calc(6))" but got "scale(abs(6))" | ||
FAIL 'abs(1 + 2 + 3)' as a computed value should serialize as '6'. assert_equals: '6' should round-trip exactly in computed values. expected "6" but got "1" | ||
PASS 'scale(abs(1 + 2 + 3))' as a computed value should serialize as 'matrix(6, 0, 0, 6, 0, 0)'. | ||
FAIL 'sign(1 + 2 + 3)' as a specified value should serialize as 'calc(1)'. assert_equals: 'sign(1 + 2 + 3)' and 'calc(1)' should serialize the same in specified values. expected "calc(1)" but got "sign(6)" | ||
FAIL 'scale(sign(1 + 2 + 3))' as a specified value should serialize as 'scale(calc(1))'. assert_equals: 'scale(sign(1 + 2 + 3))' and 'scale(calc(1))' should serialize the same in specified values. expected "scale(calc(1))" but got "scale(sign(6))" | ||
PASS 'sign(1 + 2 + 3)' as a computed value should serialize as '1'. | ||
PASS 'scale(sign(1 + 2 + 3))' as a computed value should serialize as 'matrix(1, 0, 0, 1, 0, 0)'. | ||
PASS 'calc(abs(1) + abs(2))' as a specified value should serialize as 'calc(3)'. | ||
PASS 'scale(abs(1))' as a specified value should serialize as 'scale(calc(1))'. | ||
PASS 'scale(sign(.1))' as a specified value should serialize as 'scale(calc(1))'. | ||
PASS 'scale(abs(1 + 2 + 3))' as a specified value should serialize as 'scale(calc(6))'. | ||
PASS 'scale(sign(1 + 2 + 3))' as a specified value should serialize as 'scale(calc(1))'. | ||
PASS 'scale(calc(abs(1) + abs(2)))' as a specified value should serialize as 'scale(calc(3))'. | ||
FAIL 'calc(abs(1) + abs(2))' as a computed value should serialize as '3'. assert_equals: '3' should round-trip exactly in computed values. expected "3" but got "1" | ||
PASS 'scale(calc(abs(1) + abs(2)))' as a computed value should serialize as 'matrix(3, 0, 0, 3, 0, 0)'. | ||
PASS 'calc(sign(.1) + sign(.2))' as a specified value should serialize as 'calc(2)'. | ||
PASS 'scale(calc(sign(.1) + sign(.2)))' as a specified value should serialize as 'scale(calc(2))'. | ||
FAIL 'calc(sign(.1) + sign(.2))' as a computed value should serialize as '2'. assert_equals: '2' should round-trip exactly in computed values. expected "2" but got "1" | ||
PASS 'scale(calc(sign(.1) + sign(.2)))' as a computed value should serialize as 'matrix(2, 0, 0, 2, 0, 0)'. | ||
PASS 'calc(1 + abs(1))' as a specified value should serialize as 'calc(2)'. | ||
PASS 'scale(calc(1 + abs(1)))' as a specified value should serialize as 'scale(calc(2))'. | ||
FAIL 'calc(1 + abs(1))' as a computed value should serialize as '2'. assert_equals: '2' should round-trip exactly in computed values. expected "2" but got "1" | ||
PASS 'scale(calc(1 + abs(1)))' as a computed value should serialize as 'matrix(2, 0, 0, 2, 0, 0)'. | ||
PASS 'calc(sign(.1) + 1)' as a specified value should serialize as 'calc(2)'. | ||
PASS 'scale(calc(sign(.1) + 1))' as a specified value should serialize as 'scale(calc(2))'. | ||
FAIL 'calc(sign(.1) + 1)' as a computed value should serialize as '2'. assert_equals: '2' should round-trip exactly in computed values. expected "2" but got "1" | ||
PASS 'scale(calc(sign(.1) + 1))' as a computed value should serialize as 'matrix(2, 0, 0, 2, 0, 0)'. | ||
FAIL 'calc(abs(inFinity))' as a specified value should serialize as 'calc(inFinity)'. assert_equals: 'calc(inFinity)' should round-trip exactly in specified values. expected "calc(inFinity)" but got "calc(infinity)" | ||
PASS 'scale(calc(abs(inFinity)))' as a specified value should serialize as 'scale(calc(infinity))'. | ||
FAIL 'calc(abs(inFinity))' as a computed value should serialize as 'infinity'. assert_equals: 'infinity' should round-trip exactly in computed values. expected "infinity" but got "1" | ||
FAIL 'scale(calc(abs(inFinity)))' as a computed value should serialize as 'matrix(infinity, 0, 0, infinity, 0, 0)'. assert_equals: 'matrix(infinity, 0, 0, infinity, 0, 0)' should round-trip exactly in computed values. expected "matrix(infinity, 0, 0, infinity, 0, 0)" but got "none" | ||
PASS 'calc(abs(infinity))' as a specified value should serialize as 'calc(infinity)'. | ||
PASS 'scale(calc(abs(infinity)))' as a specified value should serialize as 'scale(calc(infinity))'. | ||
FAIL 'calc(abs(infinity))' as a computed value should serialize as 'infinity'. assert_equals: 'infinity' should round-trip exactly in computed values. expected "infinity" but got "1" | ||
FAIL 'scale(calc(abs(infinity)))' as a computed value should serialize as 'matrix(infinity, 0, 0, infinity, 0, 0)'. assert_equals: 'matrix(infinity, 0, 0, infinity, 0, 0)' should round-trip exactly in computed values. expected "matrix(infinity, 0, 0, infinity, 0, 0)" but got "none" | ||
PASS 'calc(sign(infinity))' as a specified value should serialize as 'calc(1)'. | ||
PASS 'scale(calc(sign(infinity)))' as a specified value should serialize as 'scale(calc(1))'. | ||
PASS 'calc(sign(infinity))' as a computed value should serialize as '1'. | ||
PASS 'scale(calc(sign(infinity)))' as a computed value should serialize as 'matrix(1, 0, 0, 1, 0, 0)'. | ||
FAIL 'abs(infinity)' as a specified value should serialize as 'calc(infinity)'. assert_equals: 'abs(infinity)' and 'calc(infinity)' should serialize the same in specified values. expected "calc(infinity)" but got "abs(infinity)" | ||
FAIL 'scale(abs(infinity))' as a specified value should serialize as 'scale(calc(infinity))'. assert_equals: 'scale(abs(infinity))' and 'scale(calc(infinity))' should serialize the same in specified values. expected "scale(calc(infinity))" but got "scale(abs(infinity))" | ||
FAIL 'abs(infinity)' as a computed value should serialize as 'infinity'. assert_equals: 'infinity' should round-trip exactly in computed values. expected "infinity" but got "1" | ||
FAIL 'scale(abs(infinity))' as a computed value should serialize as 'matrix(infinity, 0, 0, infinity, 0, 0)'. assert_equals: 'matrix(infinity, 0, 0, infinity, 0, 0)' should round-trip exactly in computed values. expected "matrix(infinity, 0, 0, infinity, 0, 0)" but got "none" | ||
PASS 'calc(abs(-infinity))' as a specified value should serialize as 'calc(infinity)'. | ||
PASS 'scale(abs(infinity))' as a specified value should serialize as 'scale(calc(infinity))'. | ||
PASS 'scale(calc(abs(-infinity)))' as a specified value should serialize as 'scale(calc(infinity))'. | ||
FAIL 'calc(abs(-infinity))' as a computed value should serialize as 'infinity'. assert_equals: 'infinity' should round-trip exactly in computed values. expected "infinity" but got "1" | ||
FAIL 'scale(calc(abs(-infinity)))' as a computed value should serialize as 'matrix(infinity, 0, 0, infinity, 0, 0)'. assert_equals: 'matrix(infinity, 0, 0, infinity, 0, 0)' should round-trip exactly in computed values. expected "matrix(infinity, 0, 0, infinity, 0, 0)" but got "none" | ||
PASS 'calc(sign(-1 * infinity))' as a specified value should serialize as 'calc(-1)'. | ||
PASS 'scale(calc(sign(-1 * infinity)))' as a specified value should serialize as 'scale(calc(-1))'. | ||
FAIL 'calc(sign(-1 * infinity))' as a computed value should serialize as '-1'. assert_equals: '-1' should round-trip exactly in computed values. expected "-1" but got "0" | ||
PASS 'scale(calc(sign(-1 * infinity)))' as a computed value should serialize as 'matrix(-1, 0, 0, -1, 0, 0)'. | ||
PASS 'scale(calc(sign(-1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'. | ||
PASS 'scale(calc(sign(1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'. | ||
|
Oops, something went wrong.