Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: fad419ed3a88f465ea09c240447d122a6a89b649
https://github.com/WebKit/WebKit/commit/fad419ed3a88f465ea09c240447d122a6a89b649
Author: Ahmad Saleem <[email protected]>
Date: 2026-10-13 (Tue, 13 Oct 2026)
Changed paths:
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-degenerate-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-degenerate.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-lr-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-lr.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-rl-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-rl.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-lr-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-lr.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-rl-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-rl.html
M Source/WebCore/style/values/sizing/StyleAspectRatio.cpp
Log Message:
-----------
aspect-ratio interpolation is inverted in vertical writing modes
https://bugs.webkit.org/show_bug.cgi?id=325390
rdar://188500448
Reviewed by Antti Koivisto.
Blending<AspectRatio>::blend() interpolated the writing-mode-relative
(logical) aspect ratio via ComputedStyle::logicalAspectRatio(), which
returns denominator/numerator in vertical writing modes, and then stored
the result straight into AspectRatio's physical numerator/denominator.
The computed value of aspect-ratio is physical (width / height) and
independent of writing mode, so in horizontal writing modes logical and
physical agree and the result was correct, but in vertical writing modes
the interpolation ran in inverted space and was stored without inverting
back, producing the reciprocal of the correct value at every non-midpoint
sample (the midpoint is symmetric in log space and happened to be
unaffected).
Fix this by interpolating the physical ratio (width / height) directly,
independent of writing mode.
Interpolation happens in log space, so a degenerate ratio (one with a zero
or infinite term, e.g. 0 / 1, 1 / 0 or 0 / 0) produced NaN or infinity.
Per https://drafts.csswg.org/css-values-4/#combine-ratio such ratios cannot
be interpolated, so make canBlend() return false for them and let them
animate discretely.
Tests:
imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-degenerate.html
imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-lr.html
imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-rl.html
imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-lr.html
imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-rl.html
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-degenerate-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-degenerate.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-lr-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-lr.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-rl-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-sideways-rl.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-lr-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-lr.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-rl-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/aspect-ratio-interpolation-vertical-rl.html:
Added.
* Source/WebCore/style/values/sizing/StyleAspectRatio.cpp:
(WebCore::Style::isInterpolable):
(WebCore::Style::Blending<AspectRatio>::canBlend):
(WebCore::Style::Blending<AspectRatio>::blend):
Canonical link: https://commits.webkit.org/323584@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications