WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-239019-20220411145048.patch (text/plain), 40.83 KB, created by
Nikos Mouchtaris
on 2022-04-11 14:50:49 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Nikos Mouchtaris
Created:
2022-04-11 14:50:49 PDT
Size:
40.83 KB
patch
obsolete
>Subversion Revision: 292419 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 717692b327f05a68959736c62a7945bd9f2b650a..b6ba2d4f8dce7dd024770eaa5aebc6ce0db3fb84 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,17 @@ >+2022-04-08 Nikolaos Mouchtaris <nmouchtaris@apple.com> >+ >+ calc(): Serialize top level min/max/hypot as calc() >+ https://bugs.webkit.org/show_bug.cgi?id=239019 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ For functions that would have no effect on the top level value, serialize as calc() rather >+ than the function. >+ >+ * css/calc/CSSCalcOperationNode.cpp: >+ (WebCore::CSSCalcOperationNode::simplifyNode): >+ * css/calc/CSSCalcOperationNode.h: >+ > 2022-04-05 Antti Koivisto <antti@apple.com> > > Avoid unnecessary traversal when updating list markers >diff --git a/Source/WebCore/css/calc/CSSCalcOperationNode.cpp b/Source/WebCore/css/calc/CSSCalcOperationNode.cpp >index 205c5479b3d62c1ae65c3bab6f3b9f82797e584b..df7b398efc6cb52bb81fa385878dd2994a3b4911 100644 >--- a/Source/WebCore/css/calc/CSSCalcOperationNode.cpp >+++ b/Source/WebCore/css/calc/CSSCalcOperationNode.cpp >@@ -901,7 +901,7 @@ Ref<CSSCalcExpressionNode> CSSCalcOperationNode::simplifyNode(Ref<CSSCalcExpress > calcOperationNode.combineChildren(); > > // If only one child remains, return the child (except at the root). >- auto shouldCombineParentWithOnlyChild = [](const CSSCalcOperationNode& parent, int depth) >+ auto shouldCombineParentWithOnlyChild = [](CSSCalcOperationNode& parent, int depth) > { > if (parent.children().size() != 1) > return false; >@@ -909,6 +909,11 @@ Ref<CSSCalcExpressionNode> CSSCalcOperationNode::simplifyNode(Ref<CSSCalcExpress > // Always simplify below the root. > if (depth) > return true; >+ >+ if (parent.shouldNotPreserveFunction() && is<CSSCalcPrimitiveValueNode>(parent.children()[0])) { >+ parent.makeTopLevelCalc(); >+ return false; >+ } > > // At the root, preserve the root function by only merging nodes with the same function. > auto& child = parent.children().first(); >diff --git a/Source/WebCore/css/calc/CSSCalcOperationNode.h b/Source/WebCore/css/calc/CSSCalcOperationNode.h >index 4c036e0e6fb322ec391e032f71da624f17fa5b36..c7d9b565a42fb01de2aeef29831b25641e475395 100644 >--- a/Source/WebCore/css/calc/CSSCalcOperationNode.h >+++ b/Source/WebCore/css/calc/CSSCalcOperationNode.h >@@ -70,6 +70,8 @@ public: > bool isHypotNode() const { return m_operator == CalcOperator::Hypot; } > bool isPowOrSqrtNode() const { return m_operator == CalcOperator::Pow || m_operator == CalcOperator::Sqrt; } > bool shouldPreserveFunction() const { return isTrigNode() || isExpNode() || isInverseTrigNode() || isAtan2Node() || isSignNode() || isSignNode() || isSteppedNode() || isRoundOperation() || isPowOrSqrtNode(); } >+ bool shouldNotPreserveFunction() const { return isMinOrMaxNode() || isHypotNode(); } >+ void makeTopLevelCalc() { m_operator = CalcOperator::Add; } > > void hoistChildrenWithOperator(CalcOperator); > void combineChildren(); >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index 8694e1f341037c0edf8db5d5e7d95ce94824547e..86532f0792e05e92a6e0457c26cb99037d37229d 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,16 @@ >+2022-04-08 Nikolaos Mouchtaris <nmouchtaris@apple.com> >+ >+ calc(): Serialize top level min/max/hypot as calc() >+ https://bugs.webkit.org/show_bug.cgi?id=239019 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt: >+ * web-platform-tests/css/css-values/minmax-length-serialize-expected.txt: >+ * web-platform-tests/css/css-values/minmax-number-serialize-expected.txt: >+ * web-platform-tests/css/css-values/minmax-percentage-serialize-expected.txt: >+ * web-platform-tests/css/css-values/minmax-time-serialize-expected.txt: >+ > 2022-04-05 Tim Nguyen <ntim@apple.com> > > Re-import css/selectors WPT >diff --git a/LayoutTests/fast/css/calc-parsing-expected.txt b/LayoutTests/fast/css/calc-parsing-expected.txt >index aa521b4dcb12917aedba26f4e5dff4c5f4d34de8..011a404649cf309d36aa769e0f4a79f1d01bb525 100644 >--- a/LayoutTests/fast/css/calc-parsing-expected.txt >+++ b/LayoutTests/fast/css/calc-parsing-expected.txt >@@ -9,15 +9,15 @@ PASS element.style['width'] is "calc(100px)" > PASS getComputedStyle(element).getPropertyValue('width') is "100px" > > element.style["width"] = "max(100px + 200px)" >-PASS element.style['width'] is "max(300px)" >+PASS element.style['width'] is "calc(300px)" > PASS getComputedStyle(element).getPropertyValue('width') is "300px" > > element.style["width"] = "max(100px , 200px)" >-PASS element.style['width'] is "max(200px)" >+PASS element.style['width'] is "calc(200px)" > PASS getComputedStyle(element).getPropertyValue('width') is "200px" > > element.style["width"] = "max(100px,200px)" >-PASS element.style['width'] is "max(200px)" >+PASS element.style['width'] is "calc(200px)" > PASS getComputedStyle(element).getPropertyValue('width') is "200px" > > element.style["width"] = "clamp(100px,123px,200px)" >@@ -73,11 +73,11 @@ PASS element.style['width'] is "calc(1024px)" > PASS getComputedStyle(element).getPropertyValue('width') is "1024px" > > element.style["width"] = "hypot(4px, 5px, 7px, 9px)" >-PASS element.style['width'] is "hypot(13.076697px)" >+PASS element.style['width'] is "calc(13.076697px)" > PASS getComputedStyle(element).getPropertyValue('width') is "13.0625px" > > element.style["width"] = "hypot(3px, 4px)" >-PASS element.style['width'] is "hypot(5px)" >+PASS element.style['width'] is "calc(5px)" > PASS getComputedStyle(element).getPropertyValue('width') is "5px" > > element.style["width"] = "calc(100px * hypot(3, 4))" >@@ -85,7 +85,7 @@ PASS element.style['width'] is "calc(500px)" > PASS getComputedStyle(element).getPropertyValue('width') is "500px" > > element.style["width"] = "hypot(-5px)" >-PASS element.style['width'] is "hypot(5px)" >+PASS element.style['width'] is "calc(5px)" > PASS getComputedStyle(element).getPropertyValue('width') is "5px" > > element.style["width"] = "calc(1px * hypot(-5))" >@@ -269,15 +269,15 @@ PASS element.style['min-width'] is "calc(100px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "100px" > > element.style["min-width"] = "max(100px + 200px)" >-PASS element.style['min-width'] is "max(300px)" >+PASS element.style['min-width'] is "calc(300px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "300px" > > element.style["min-width"] = "max(100px , 200px)" >-PASS element.style['min-width'] is "max(200px)" >+PASS element.style['min-width'] is "calc(200px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "200px" > > element.style["min-width"] = "max(100px,200px)" >-PASS element.style['min-width'] is "max(200px)" >+PASS element.style['min-width'] is "calc(200px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "200px" > > element.style["min-width"] = "clamp(100px,123px,200px)" >@@ -333,11 +333,11 @@ PASS element.style['min-width'] is "calc(1024px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "1024px" > > element.style["min-width"] = "hypot(4px, 5px, 7px, 9px)" >-PASS element.style['min-width'] is "hypot(13.076697px)" >+PASS element.style['min-width'] is "calc(13.076697px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "13.076696px" > > element.style["min-width"] = "hypot(3px, 4px)" >-PASS element.style['min-width'] is "hypot(5px)" >+PASS element.style['min-width'] is "calc(5px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "5px" > > element.style["min-width"] = "calc(100px * hypot(3, 4))" >@@ -345,7 +345,7 @@ PASS element.style['min-width'] is "calc(500px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "500px" > > element.style["min-width"] = "hypot(-5px)" >-PASS element.style['min-width'] is "hypot(5px)" >+PASS element.style['min-width'] is "calc(5px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "5px" > > element.style["min-width"] = "calc(1px * hypot(-5))" >diff --git a/LayoutTests/fast/css/calc-parsing.html b/LayoutTests/fast/css/calc-parsing.html >index 5bfbaebaae9dafead2e2c047867488826403d8f2..48f6d12875d4a3b6adc1812052d52b09d2f6e1ad 100644 >--- a/LayoutTests/fast/css/calc-parsing.html >+++ b/LayoutTests/fast/css/calc-parsing.html >@@ -31,9 +31,9 @@ > > // Valid expressions. > testExpression('calc(100px)', 'calc(100px)', '100px'); >- testExpression('max(100px + 200px)', 'max(300px)', '300px'); >- testExpression('max(100px , 200px)', 'max(200px)', '200px'); >- testExpression('max(100px,200px)', 'max(200px)', '200px'); >+ testExpression('max(100px + 200px)', 'calc(300px)', '300px'); >+ testExpression('max(100px , 200px)', 'calc(200px)', '200px'); >+ testExpression('max(100px,200px)', 'calc(200px)', '200px'); > testExpression('clamp(100px,123px,200px)', 'clamp(100px, 123px, 200px)', '123px'); > testExpression('clamp(100px,300px,200px)', 'clamp(100px, 300px, 200px)', '200px'); > testExpression('clamp(200px,300px,100px)', 'clamp(200px, 300px, 100px)', '200px'); >@@ -47,10 +47,10 @@ > testExpression('calc(100px * sqrt(100))', 'calc(1000px)', '1000px'); > testExpression('calc(1px * sqrt(999))', 'calc(31.606961px)', propertyName == 'width' ? '31.59375px' : '31.606962px'); > testExpression('calc(1px * pow(2, sqrt(100))', 'calc(1024px)', '1024px'); >- testExpression('hypot(4px, 5px, 7px, 9px)', 'hypot(13.076697px)', propertyName == 'width' ? '13.0625px' : '13.076696px'); >- testExpression('hypot(3px, 4px)', 'hypot(5px)', '5px'); >+ testExpression('hypot(4px, 5px, 7px, 9px)', 'calc(13.076697px)', propertyName == 'width' ? '13.0625px' : '13.076696px'); >+ testExpression('hypot(3px, 4px)', 'calc(5px)', '5px'); > testExpression('calc(100px * hypot(3, 4))', 'calc(500px)', '500px'); >- testExpression('hypot(-5px)', 'hypot(5px)', '5px'); >+ testExpression('hypot(-5px)', 'calc(5px)', '5px'); > testExpression('calc(1px * hypot(-5))', 'calc(5px)', '5px'); > testExpression('calc(1px * hypot(10000))', 'calc(10000px)', '10000px'); > testExpression('calc(2px * sqrt(100000000))', 'calc(20000px)', '20000px'); >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt >index 3c2a3f6da63181bee3c1812b45a278409a77fe52..2acaa5c907323eeef264bcd912cd7f2f5bf408bd 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt >@@ -10,7 +10,7 @@ PASS e.style['opacity'] = "hypot(1 * )" should not set the property value > PASS e.style['opacity'] = "hypot(1 / )" should not set the property value > PASS e.style['opacity'] = "hypot(1 2)" should not set the property value > PASS e.style['opacity'] = "hypot(1, , 2)" should not set the property value >-FAIL e.style['opacity'] = "hypot(1, 2)" should not set the property value assert_equals: expected "" but got "hypot(2.236068)" >+FAIL e.style['opacity'] = "hypot(1, 2)" should not set the property value assert_equals: expected "" but got "calc(2.236068)" > PASS e.style['opacity'] = "sqrt()" should not set the property value > PASS e.style['opacity'] = "sqrt( )" should not set the property value > PASS e.style['opacity'] = "sqrt(,)" should not set the property value >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-serialize-expected.txt >index c162a8d98f7f62c1b56bb6d3b2f85eb6ff9ee96d..28b444d0f8618764639fa0b027854c3ae16fd91c 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-serialize-expected.txt >@@ -3,8 +3,8 @@ FAIL 'pow(1,1)' as a specified value should serialize as 'calc(1)'. assert_equal > FAIL 'scale(pow(1,1))' as a specified value should serialize as 'scale(calc(1))'. assert_equals: 'scale(pow(1,1))' and 'scale(calc(1))' should serialize the same in specified values. expected "scale(calc(1))" but got "scale(pow(1, 1))" > PASS 'pow(1,1)' as a computed value should serialize as '1'. > PASS 'scale(pow(1,1))' as a computed value should serialize as 'matrix(1, 0, 0, 1, 0, 0)'. >-FAIL 'hypot(1)' as a specified value should serialize as 'calc(1)'. assert_equals: 'hypot(1)' and 'calc(1)' should serialize the same in specified values. expected "calc(1)" but got "hypot(1)" >-FAIL 'scale(hypot(1))' as a specified value should serialize as 'scale(calc(1))'. assert_equals: 'scale(hypot(1))' and 'scale(calc(1))' should serialize the same in specified values. expected "scale(calc(1))" but got "scale(hypot(1))" >+PASS 'hypot(1)' as a specified value should serialize as 'calc(1)'. >+PASS 'scale(hypot(1))' as a specified value should serialize as 'scale(calc(1))'. > PASS 'hypot(1)' as a computed value should serialize as '1'. > PASS 'scale(hypot(1))' as a computed value should serialize as 'matrix(1, 0, 0, 1, 0, 0)'. > FAIL 'sqrt(1)' as a specified value should serialize as 'calc(1)'. assert_equals: 'sqrt(1)' and 'calc(1)' should serialize the same in specified values. expected "calc(1)" but got "sqrt(1)" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt >index ed194d243ab79390805f2c54ed46c46e04582be9..c1ab2e0df482c09d64e6d3bda7eb07785eef27c7 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt >@@ -1,31 +1,31 @@ > >-FAIL 'rotate(min(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >+PASS 'rotate(min(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(min(90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(min(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >+PASS 'rotate(min(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(min(.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(min(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(100grad))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >+PASS 'rotate(min(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(min(100grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(max(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >+PASS 'rotate(max(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(max(90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(max(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >+PASS 'rotate(max(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(max(.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(max(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(100grad))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >+PASS 'rotate(max(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(max(100grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(min(90deg, 92deg, 93deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg, 92deg, 93deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >+PASS 'rotate(min(90deg, 92deg, 93deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(min(90deg, 92deg, 93deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(min(93deg, 92deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(93deg, 92deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >+PASS 'rotate(min(93deg, 92deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(min(93deg, 92deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(min(90deg, 1.58rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg, 1.58rad, 0.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >+PASS 'rotate(min(90deg, 1.58rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(min(90deg, 1.58rad, 0.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(min(0.25turn, 1.58rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(0.25turn, 1.58rad, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >+PASS 'rotate(min(0.25turn, 1.58rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(min(0.25turn, 1.58rad, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(max(81deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(81deg, 82deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >+PASS 'rotate(max(81deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(max(81deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(max(83deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(83deg, 82deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >+PASS 'rotate(max(83deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(max(83deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(max(90deg, 1.57rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(90deg, 1.57rad, 0.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >+PASS 'rotate(max(90deg, 1.57rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(max(90deg, 1.57rad, 0.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >-FAIL 'rotate(max(0.25turn, 1.57rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(0.25turn, 1.57rad, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >+PASS 'rotate(max(0.25turn, 1.57rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(max(0.25turn, 1.57rad, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(min(30deg) + max(60deg)))' as a specified value should serialize as 'rotate(calc(90deg))'. > PASS 'rotate(calc(min(30deg) + max(60deg)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-percent-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-percent-serialize-expected.txt >index 0d7d5846541edced89cc3b842180dd16023b9d5e..68eb5fc88a7aa2262dbabeb8b6f0a080c027e912 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-percent-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-percent-serialize-expected.txt >@@ -1,8 +1,8 @@ > >-FAIL 'min(1px)' as a specified value should serialize as 'calc(1px)'. assert_equals: 'min(1px)' and 'calc(1px)' should serialize the same in specified values. expected "calc(1px)" but got "min(1px)" >+PASS 'min(1px)' as a specified value should serialize as 'calc(1px)'. > PASS 'min(1px)' as a computed value should serialize as '1px'. > PASS 'min(1px)' as a used value should serialize as '1px'. >-FAIL 'max(1px)' as a specified value should serialize as 'calc(1px)'. assert_equals: 'max(1px)' and 'calc(1px)' should serialize the same in specified values. expected "calc(1px)" but got "max(1px)" >+PASS 'max(1px)' as a specified value should serialize as 'calc(1px)'. > PASS 'max(1px)' as a computed value should serialize as '1px'. > PASS 'max(1px)' as a used value should serialize as '1px'. > PASS 'min(1% + 1px)' as a specified value should serialize as 'min(1% + 1px)'. >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-serialize-expected.txt >index 33785231ede99e103864f0053b337a58af464a6d..7e6e2831e2168d58f98a5155c2eae87401985e0b 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-length-serialize-expected.txt >@@ -1,17 +1,17 @@ > >-FAIL 'min(1px)' as a specified value should serialize as 'calc(1px)'. assert_equals: 'min(1px)' and 'calc(1px)' should serialize the same in specified values. expected "calc(1px)" but got "min(1px)" >+PASS 'min(1px)' as a specified value should serialize as 'calc(1px)'. > PASS 'min(1px)' as a computed value should serialize as '1px'. >-FAIL 'min(1in)' as a specified value should serialize as 'calc(96px)'. assert_equals: 'min(1in)' and 'calc(96px)' should serialize the same in specified values. expected "calc(96px)" but got "min(96px)" >+PASS 'min(1in)' as a specified value should serialize as 'calc(96px)'. > PASS 'min(1in)' as a computed value should serialize as '96px'. >-FAIL 'max(1px)' as a specified value should serialize as 'calc(1px)'. assert_equals: 'max(1px)' and 'calc(1px)' should serialize the same in specified values. expected "calc(1px)" but got "max(1px)" >+PASS 'max(1px)' as a specified value should serialize as 'calc(1px)'. > PASS 'max(1px)' as a computed value should serialize as '1px'. >-FAIL 'max(1in)' as a specified value should serialize as 'calc(96px)'. assert_equals: 'max(1in)' and 'calc(96px)' should serialize the same in specified values. expected "calc(96px)" but got "max(96px)" >+PASS 'max(1in)' as a specified value should serialize as 'calc(96px)'. > PASS 'max(1in)' as a computed value should serialize as '96px'. >-FAIL 'min(1PX)' as a specified value should serialize as 'calc(1px)'. assert_equals: 'min(1PX)' and 'calc(1px)' should serialize the same in specified values. expected "calc(1px)" but got "min(1px)" >+PASS 'min(1PX)' as a specified value should serialize as 'calc(1px)'. > PASS 'min(1PX)' as a computed value should serialize as '1px'. >-FAIL 'min(50px, 1in + 1px)' as a specified value should serialize as 'calc(50px)'. assert_equals: 'min(50px, 1in + 1px)' and 'calc(50px)' should serialize the same in specified values. expected "calc(50px)" but got "min(50px)" >+PASS 'min(50px, 1in + 1px)' as a specified value should serialize as 'calc(50px)'. > PASS 'min(50px, 1in + 1px)' as a computed value should serialize as '50px'. >-FAIL 'max(50px, 1in + 1px)' as a specified value should serialize as 'calc(97px)'. assert_equals: 'max(50px, 1in + 1px)' and 'calc(97px)' should serialize the same in specified values. expected "calc(97px)" but got "max(97px)" >+PASS 'max(50px, 1in + 1px)' as a specified value should serialize as 'calc(97px)'. > PASS 'max(50px, 1in + 1px)' as a computed value should serialize as '97px'. > PASS 'calc(1px + min(1in, 100px))' as a specified value should serialize as 'calc(97px)'. > PASS 'calc(1px + min(1in, 100px))' as a computed value should serialize as '97px'. >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt >index 4d24abaca9259b614d40cfdd47fb6ed9c0c7187f..a5072fad5998b36706c222722b61403745800d69 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt >@@ -1,26 +1,26 @@ > >-FAIL 'min(.1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)" >-FAIL 'scale(min(.1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))" >+PASS 'min(.1)' as a specified value should serialize as 'calc(0.1)'. >+PASS 'scale(min(.1))' as a specified value should serialize as 'scale(calc(0.1))'. > PASS 'min(.1)' as a computed value should serialize as '0.1'. > PASS 'scale(min(.1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. >-FAIL 'max(.1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'max(.1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "max(0.1)" >-FAIL 'scale(max(.1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(max(.1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(max(0.1))" >+PASS 'max(.1)' as a specified value should serialize as 'calc(0.1)'. >+PASS 'scale(max(.1))' as a specified value should serialize as 'scale(calc(0.1))'. > PASS 'max(.1)' as a computed value should serialize as '0.1'. > PASS 'scale(max(.1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. >-FAIL 'min(.1, .2, .3)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.1, .2, .3)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)" >-FAIL 'scale(min(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.1, .2, .3))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))" >+PASS 'min(.1, .2, .3)' as a specified value should serialize as 'calc(0.1)'. >+PASS 'scale(min(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.1))'. > PASS 'min(.1, .2, .3)' as a computed value should serialize as '0.1'. > PASS 'scale(min(.1, .2, .3))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. >-FAIL 'max(.1, .2, .3)' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'max(.1, .2, .3)' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "max(0.3)" >-FAIL 'scale(max(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(max(.1, .2, .3))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(max(0.3))" >+PASS 'max(.1, .2, .3)' as a specified value should serialize as 'calc(0.3)'. >+PASS 'scale(max(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.3))'. > PASS 'max(.1, .2, .3)' as a computed value should serialize as '0.3'. > PASS 'scale(max(.1, .2, .3))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. >-FAIL 'min(.3, .2, .1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.3, .2, .1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)" >-FAIL 'scale(min(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.3, .2, .1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))" >+PASS 'min(.3, .2, .1)' as a specified value should serialize as 'calc(0.1)'. >+PASS 'scale(min(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.1))'. > PASS 'min(.3, .2, .1)' as a computed value should serialize as '0.1'. > PASS 'scale(min(.3, .2, .1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. >-FAIL 'max(.3, .2, .1)' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'max(.3, .2, .1)' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "max(0.3)" >-FAIL 'scale(max(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(max(.3, .2, .1))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(max(0.3))" >+PASS 'max(.3, .2, .1)' as a specified value should serialize as 'calc(0.3)'. >+PASS 'scale(max(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.3))'. > PASS 'max(.3, .2, .1)' as a computed value should serialize as '0.3'. > PASS 'scale(max(.3, .2, .1))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. > PASS 'calc(min(.1) + min(.2))' as a specified value should serialize as 'calc(0.3)'. >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-percentage-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-percentage-serialize-expected.txt >index af7179cc118ba3a433d755451837e7a647b0165b..58bbf46d68d5de036336c9bc6693ded1f07e4110 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-percentage-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-percentage-serialize-expected.txt >@@ -1,24 +1,24 @@ > >-FAIL 'min(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'min(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "min(1%)" >-FAIL 'min(1%)' as a computed value should serialize as '1%'. assert_equals: 'min(1%)' and '1%' should serialize the same in computed values. expected "1%" but got "min(1%)" >+PASS 'min(1%)' as a specified value should serialize as 'calc(1%)'. >+PASS 'min(1%)' as a computed value should serialize as '1%'. > PASS 'min(1%)' as a used value should serialize as '1px'. >-FAIL 'max(1%)' as a specified value should serialize as 'calc(1%)'. assert_equals: 'max(1%)' and 'calc(1%)' should serialize the same in specified values. expected "calc(1%)" but got "max(1%)" >-FAIL 'max(1%)' as a computed value should serialize as '1%'. assert_equals: 'max(1%)' and '1%' should serialize the same in computed values. expected "1%" but got "max(1%)" >+PASS 'max(1%)' as a specified value should serialize as 'calc(1%)'. >+PASS 'max(1%)' as a computed value should serialize as '1%'. > PASS 'max(1%)' as a used value should serialize as '1px'. >-FAIL 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in specified values. expected "min(1%, 2%, 3%)" but got "min(1%)" >-FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "min(1%)" >+FAIL 'min(1%, 2%, 3%)' as a specified value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in specified values. expected "min(1%, 2%, 3%)" but got "calc(1%)" >+FAIL 'min(1%, 2%, 3%)' as a computed value should serialize as 'min(1%, 2%, 3%)'. assert_equals: 'min(1%, 2%, 3%)' should round-trip exactly in computed values. expected "min(1%, 2%, 3%)" but got "1%" > PASS 'min(1%, 2%, 3%)' as a used value should serialize as '1px'. >-FAIL 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in specified values. expected "min(3%, 2%, 1%)" but got "min(1%)" >-FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "min(1%)" >+FAIL 'min(3%, 2%, 1%)' as a specified value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in specified values. expected "min(3%, 2%, 1%)" but got "calc(1%)" >+FAIL 'min(3%, 2%, 1%)' as a computed value should serialize as 'min(3%, 2%, 1%)'. assert_equals: 'min(3%, 2%, 1%)' should round-trip exactly in computed values. expected "min(3%, 2%, 1%)" but got "1%" > PASS 'min(3%, 2%, 1%)' as a used value should serialize as '1px'. >-FAIL 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in specified values. expected "max(1%, 2%, 3%)" but got "max(3%)" >-FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "max(3%)" >+FAIL 'max(1%, 2%, 3%)' as a specified value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in specified values. expected "max(1%, 2%, 3%)" but got "calc(3%)" >+FAIL 'max(1%, 2%, 3%)' as a computed value should serialize as 'max(1%, 2%, 3%)'. assert_equals: 'max(1%, 2%, 3%)' should round-trip exactly in computed values. expected "max(1%, 2%, 3%)" but got "3%" > PASS 'max(1%, 2%, 3%)' as a used value should serialize as '3px'. >-FAIL 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in specified values. expected "max(3%, 2%, 1%)" but got "max(3%)" >-FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "max(3%)" >+FAIL 'max(3%, 2%, 1%)' as a specified value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in specified values. expected "max(3%, 2%, 1%)" but got "calc(3%)" >+FAIL 'max(3%, 2%, 1%)' as a computed value should serialize as 'max(3%, 2%, 1%)'. assert_equals: 'max(3%, 2%, 1%)' should round-trip exactly in computed values. expected "max(3%, 2%, 1%)" but got "3%" > PASS 'max(3%, 2%, 1%)' as a used value should serialize as '3px'. > PASS 'min(1%, 2%, 3%) 0px' as a specified value should serialize as 'min(1%, 2%, 3%) 0px'. >-FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "min(1%) 0px" >+FAIL 'min(1%, 2%, 3%) 0px' as a computed value should serialize as 'min(1%, 2%, 3%) 0px'. assert_equals: 'min(1%, 2%, 3%) 0px' should round-trip exactly in computed values. expected "min(1%, 2%, 3%) 0px" but got "calc(1%) 0px" > PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a specified value should serialize as 'calc(15%)'. > PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a computed value should serialize as '15%'. > PASS 'calc(min(1%, 2%) + max(3%, 4%) + 10%)' as a used value should serialize as '15px'. >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-time-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-time-serialize-expected.txt >index cb258ba348e2e227a1f9f8255594ff1f0e5cd297..4c4897a2ce6517469243aff57eaf0efd2f9063b6 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-time-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-time-serialize-expected.txt >@@ -1,23 +1,23 @@ > >-FAIL 'min(1ms)' as a specified value should serialize as 'calc(0.001s)'. assert_equals: 'min(1ms)' and 'calc(0.001s)' should serialize the same in specified values. expected "calc(0.001s)" but got "min(0.001s)" >+PASS 'min(1ms)' as a specified value should serialize as 'calc(0.001s)'. > PASS 'min(1ms)' as a computed value should serialize as '0.001s'. >-FAIL 'min(1s)' as a specified value should serialize as 'calc(1s)'. assert_equals: 'min(1s)' and 'calc(1s)' should serialize the same in specified values. expected "calc(1s)" but got "min(1s)" >+PASS 'min(1s)' as a specified value should serialize as 'calc(1s)'. > PASS 'min(1s)' as a computed value should serialize as '1s'. >-FAIL 'max(1ms)' as a specified value should serialize as 'calc(0.001s)'. assert_equals: 'max(1ms)' and 'calc(0.001s)' should serialize the same in specified values. expected "calc(0.001s)" but got "max(0.001s)" >+PASS 'max(1ms)' as a specified value should serialize as 'calc(0.001s)'. > PASS 'max(1ms)' as a computed value should serialize as '0.001s'. >-FAIL 'max(1s)' as a specified value should serialize as 'calc(1s)'. assert_equals: 'max(1s)' and 'calc(1s)' should serialize the same in specified values. expected "calc(1s)" but got "max(1s)" >+PASS 'max(1s)' as a specified value should serialize as 'calc(1s)'. > PASS 'max(1s)' as a computed value should serialize as '1s'. >-FAIL 'min(1s, 2s, 3s)' as a specified value should serialize as 'calc(1s)'. assert_equals: 'min(1s, 2s, 3s)' and 'calc(1s)' should serialize the same in specified values. expected "calc(1s)" but got "min(1s)" >+PASS 'min(1s, 2s, 3s)' as a specified value should serialize as 'calc(1s)'. > PASS 'min(1s, 2s, 3s)' as a computed value should serialize as '1s'. >-FAIL 'min(3s, 2s, 1s)' as a specified value should serialize as 'calc(1s)'. assert_equals: 'min(3s, 2s, 1s)' and 'calc(1s)' should serialize the same in specified values. expected "calc(1s)" but got "min(1s)" >+PASS 'min(3s, 2s, 1s)' as a specified value should serialize as 'calc(1s)'. > PASS 'min(3s, 2s, 1s)' as a computed value should serialize as '1s'. >-FAIL 'max(1s, 2s, 3s)' as a specified value should serialize as 'calc(3s)'. assert_equals: 'max(1s, 2s, 3s)' and 'calc(3s)' should serialize the same in specified values. expected "calc(3s)" but got "max(3s)" >+PASS 'max(1s, 2s, 3s)' as a specified value should serialize as 'calc(3s)'. > PASS 'max(1s, 2s, 3s)' as a computed value should serialize as '3s'. >-FAIL 'max(3s, 2s, 1s)' as a specified value should serialize as 'calc(3s)'. assert_equals: 'max(3s, 2s, 1s)' and 'calc(3s)' should serialize the same in specified values. expected "calc(3s)" but got "max(3s)" >+PASS 'max(3s, 2s, 1s)' as a specified value should serialize as 'calc(3s)'. > PASS 'max(3s, 2s, 1s)' as a computed value should serialize as '3s'. >-FAIL 'min(900ms, 1s)' as a specified value should serialize as 'calc(0.9s)'. assert_equals: 'min(900ms, 1s)' and 'calc(0.9s)' should serialize the same in specified values. expected "calc(0.9s)" but got "min(0.9s)" >+PASS 'min(900ms, 1s)' as a specified value should serialize as 'calc(0.9s)'. > PASS 'min(900ms, 1s)' as a computed value should serialize as '0.9s'. >-FAIL 'max(1100ms, 1s)' as a specified value should serialize as 'calc(1.1s)'. assert_equals: 'max(1100ms, 1s)' and 'calc(1.1s)' should serialize the same in specified values. expected "calc(1.1s)" but got "max(1.1s)" >+PASS 'max(1100ms, 1s)' as a specified value should serialize as 'calc(1.1s)'. > PASS 'max(1100ms, 1s)' as a computed value should serialize as '1.1s'. > PASS 'calc(min(1s, 2s) + max(3s, 4s) + 10s)' as a specified value should serialize as 'calc(15s)'. > PASS 'calc(min(1s, 2s) + max(3s, 4s) + 10s)' as a computed value should serialize as '15s'.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 239019
:
457124
|
457289
|
457645
|
457646
|
457647