Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b950a86d454a2f4913770bafad3ee882cd6d7a99
      
https://github.com/WebKit/WebKit/commit/b950a86d454a2f4913770bafad3ee882cd6d7a99
  Author: Antoine Quint <[email protected]>
  Date:   2023-02-18 (Sat, 18 Feb 2023)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-base-response-002-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-base-response-002.html

  Log Message:
  -----------
  css/css-transitions/transition-base-response-002.html is a unique failure
https://bugs.webkit.org/show_bug.cgi?id=235135
rdar://problem/87785135

Reviewed by Antti Koivisto.

The goal of this test is to check that a transition for the `font-size` on the 
`:root` is
accounted for when resolving `rem` units on child elements.

However, this test failed in WebKit because it loads scripts in a blocking way 
prior to
parsing the `<style>` element containing this rule:

    :root {
        font-size: 20px;
        transition: font-size steps(2, start) 10s;
    }

What may happen though is that before we get to parsing this `<style>` element 
the `:root`
styles may be resolved and the default `font-size` is computed (to 16px in 
WebKit). Then,
when the `<style>` element is parsed and styles are resolved due to the first 
line of the
test:

    let unused = 
getComputedStyle(document.documentElement).getPropertyValue('font-size');

… we start a transition from the previously resolved value of 16px to the newly 
specified
value of 20px in the `<style>` element. This is clearly not the intention of 
the test, and
yet that is an acceptable behavior because what constitutes a "style change 
event" is not
specified by CSS Transitions 
(https://drafts.csswg.org/css-transitions/#style-change-event):

    Since this specification does not define when a style change event occurs, 
and thus what
    changes to computed values are considered simultaneous, authors should be 
aware that
    changing any of the transition properties a small amount of time after 
making a change
    that might transition can result in behavior that varies between 
implementations, since
    the changes might be considered simultaneous in some implementations but 
not others.

So we update this test to be more explicit about when the transition may start 
by setting the
`transition` property only in the `:root.changed` rule which is set by the test 
and sandwiched
between two explicit style recomputations on the first and third lines:

    let unused = 
getComputedStyle(document.documentElement).getPropertyValue('font-size');
    document.documentElement.className = 'change';
    assert_equals(getComputedStyle(target1).getPropertyValue('width'), '25px');

As a result of this change, Chrome, Firefox and Safari all pass the test 
reliably.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-base-response-002-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-base-response-002.html:

Canonical link: https://commits.webkit.org/260506@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to