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

Reply via email to