Closed Bug 1699365 Opened 3 years ago Closed 3 years ago

[wpt-sync] Sync PR 28048 - The infinity and NaN <time> value must be clamped before consumed

Categories

(Core :: CSS Parsing and Computation, task, P4)

task

Tracking

()

RESOLVED FIXED
88 Branch
Tracking Status
firefox88 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 28048 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/28048
Details from upstream follow.

b'Seokho Song <0xdevssh@gmail.com>' wrote:

The infinity and NaN <time> value must be clamped before consumed

This patch is the third patch of css calc infinity and NaN implementation project and included clamping the infinity and NaN to finite for \<time>.

However, \<frequency> type is not supported yet in chromium so we skip the implementation for now.

More details are 4th section in [2].

The Spec: [1]
Design docs: [2]
Feature Status: [3]
Intent to prototype: [4]

[1] https://drafts.csswg.org/css-values/#calc-type-checking
[2] https://bit.ly/349gXjq
[3] https://chromestatus.com/feature/5657825571241984
[4] https://groups.google.com/a/chromium.org/g/blink-dev/c/4cT9dMkzVXE/m/aCT8B6PDAwAJ

Bug: 1133390
Change-Id: Ifb7903e3de7e3bc67522b21159e6b4bd364a804b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2752771
Commit-Queue: Seokho Song \<0xdevssh@gmail.com>
Reviewed-by: Xiaocheng Hu \<xiaochengh@chromium.org>
Reviewed-by: Mason Freed \<masonfreed@chromium.org>
Cr-Commit-Position: refs/heads/master@{#864134}

Component: web-platform-tests → CSS Parsing and Computation
Product: Testing → Core

CI Results

Ran 13 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 3 tests and 28 subtests

Status Summary

Firefox

OK : 3
FAIL: 78

Chrome

OK : 3
FAIL: 78

Safari

OK : 3
FAIL: 78

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

/css/css-values/calc-infinity-nan-computed.html
Property width value 'calc(NaN * 1px)': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(infinity * 1px)': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(infinity * 1cm)': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(NaN * 1rem)': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(infinity * 1px - infinity * 1%)': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(infinity * 1px + infinity * 1%)': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(min(NaN * 1px, infinity * 1px) + max(infinity * 1px, -infinity * 1px))': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(infinity * 1px - max(infinity * 1%, 0%))': FAIL (Chrome: FAIL, Safari: FAIL)
Property width value 'calc(max(infinity * 1px, 10px))': FAIL (Chrome: FAIL, Safari: FAIL)
Property margin-left value 'calc(-infinity * 1px)': FAIL (Chrome: FAIL, Safari: FAIL)
Property margin-left value 'calc(min(1px, -infinity * 1%))': FAIL (Chrome: FAIL, Safari: FAIL)
Property margin-left value 'calc(-infinity * 1%)': FAIL (Chrome: FAIL, Safari: FAIL)
Property margin-left value 'calc(max(10000px, 0px) + min(-infinity * 1px, infinity * 1px))': FAIL (Chrome: FAIL, Safari: FAIL)
Property margin-left value 'calc(-infinity * 1px - infinity * 1px)': FAIL (Chrome: FAIL, Safari: FAIL)
Property margin-left value 'calc(min(-infinity * 1px, 10px))': FAIL (Chrome: FAIL, Safari: FAIL)
Property animation-duration value 'calc(NaN * 1s)': FAIL (Chrome: FAIL, Safari: FAIL)
Property animation-duration value 'calc(infinity * 1s)': FAIL (Chrome: FAIL, Safari: FAIL)
Property animation-duration value 'calc(1 / 0 * 1s)': FAIL (Chrome: FAIL, Safari: FAIL)
Property animation-duration value 'calc(max(infinity * 1s, 10s)': FAIL (Chrome: FAIL, Safari: FAIL)
Property transition-delay value 'calc(-infinity* 1s)': FAIL (Chrome: FAIL, Safari: FAIL)
Property transition-delay value 'calc(max(10000s, 0s) + min(-infinity * 1s, infinity * 1s))': FAIL (Chrome: FAIL, Safari: FAIL)
Property transition-delay value 'calc(min(-infinity * 1s, 10s))': FAIL (Chrome: FAIL, Safari: FAIL)
/css/css-values/calc-infinity-nan-serialize-length.html
'calc(1px * NaN)' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * nan)' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * infinity / infinity)' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * 0 * infinity)' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * (infinity + -infinity))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * (-infinity + infinity))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * (infinity - infinity))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * infinity)' as a specified value should serialize as 'calc(infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * -infinity)' as a specified value should serialize as 'calc(-infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * iNFinIty)' as a specified value should serialize as 'calc(infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * (infinity + infinity))' as a specified value should serialize as 'calc(infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * (-infinity + -infinity))' as a specified value should serialize as 'calc(-infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * 1/infinity)' as a specified value should serialize as 'calc(0px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * infinity * infinity)' as a specified value should serialize as 'calc(infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * -infinity * -infinity)' as a specified value should serialize as 'calc(infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * max(INFinity3px, 0px))' as a specified value should serialize as 'calc(infinity * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * min(inFInity
4px, 0px))' as a specified value should serialize as 'calc(0px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * max(nAn2px, 0px))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * min(nan
3px, 0px))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * clamp(-INFINITY20px, 0px, infiniTY10px))' as a specified value should serialize as 'calc(0px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * max(NaN, min(0,10)))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * clamp(NaN, 0, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * max(0, min(10, NaN)))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * max(0, min(NaN, 10)))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * clamp(-Infinity, 0, infinity))' as a specified value should serialize as 'calc(0px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1px * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10px)'.: FAIL (Chrome: FAIL, Safari: FAIL)
/css/css-values/calc-infinity-nan-serialize-time.html
'calc(1s * NaN)' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * nan)' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * infinity / infinity)' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * 0 * infinity)' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * (infinity + -infinity))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * (-infinity + infinity))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * (infinity - infinity))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * infinity)' as a specified value should serialize as 'calc(infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * -infinity)' as a specified value should serialize as 'calc(-infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * iNFinIty)' as a specified value should serialize as 'calc(infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * (infinity + infinity))' as a specified value should serialize as 'calc(infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * (-infinity + -infinity))' as a specified value should serialize as 'calc(-infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * 1/infinity)' as a specified value should serialize as 'calc(0s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * infinity * infinity)' as a specified value should serialize as 'calc(infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * -infinity * -infinity)' as a specified value should serialize as 'calc(infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * max(INFinity3s, 0s))' as a specified value should serialize as 'calc(infinity * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * min(inFInity
4s, 0s))' as a specified value should serialize as 'calc(0s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * max(nAn2s, 0s))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * min(nan
3s, 0s))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1 * clamp(-INFINITY20s, 0s, infiniTY10s))' as a specified value should serialize as 'calc(0s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * max(NaN, min(0,10)))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * clamp(NaN, 0, 10))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * max(0, min(10, NaN)))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * max(0, min(NaN, 10)))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN * 1s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * clamp(-Infinity, 0, infinity))' as a specified value should serialize as 'calc(0s)'.: FAIL (Chrome: FAIL, Safari: FAIL)
'calc(1s * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10s)'.: FAIL (Chrome: FAIL, Safari: FAIL)

Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/da0e59a4c7d4
[wpt PR 28048] - The infinity and NaN <time> value must be clamped before consumed, a=testonly
https://hg.mozilla.org/integration/autoland/rev/9e63661b419a
[wpt PR 28048] - Update wpt metadata, a=testonly
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 88 Branch
You need to log in before you can comment on or make changes to this bug.