Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

layout: Respond to shorthand property requests with real values #31277

Merged
merged 5 commits into from Feb 11, 2024

Conversation

sebsebmc
Copy link
Contributor

@sebsebmc sebsebmc commented Feb 6, 2024

Instead of responding with an empty string for shorthand properties, use the mapped longhand properties to respond to computed style requests.


  • There are tests for these changes, besides the manual testcase for this there are a number of WPT tests that rely on this behavior to pass such as /css/css-flexbox/parsing/flex-computed.html, /css/css-flexbox/parsing/flex-flow-computed.html and /css/css-animations/computed-style-animation-parsing.html

@sebsebmc sebsebmc marked this pull request as ready for review February 8, 2024 01:29
@sebsebmc
Copy link
Contributor Author

sebsebmc commented Feb 8, 2024

Can the maintainer approving the workflows on this also kick off a WPT run?

@atbrakhi atbrakhi added the T-full Do a full try run label Feb 8, 2024
@github-actions github-actions bot removed the T-full Do a full try run label Feb 8, 2024
Copy link

github-actions bot commented Feb 8, 2024

🔨 Triggering try run (#7826667521) for Linux WPT, MacOS, Windows, Android

Copy link

github-actions bot commented Feb 8, 2024

Test results for linux-wpt-layout-2013 from try job (#7826667521):

Flaky unexpected result (20)
  • CRASH [expected OK] /_mozilla/mozilla/service-workers/service-worker-registration.https.html (#31036)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /css/CSS2/linebox/inline-negative-margin-001.html (#23862)
    • FAIL [expected PASS] subtest: [data-expected-height] 1 assert_equals:
      <inline-block data-expected-height="10">123 <span style="margin-left: -8ch">1234 </span></inline-block>
      height expected 10 but got 20
    • FAIL [expected PASS] subtest: [data-expected-height] 2 assert_equals:
      <inline-block data-expected-height="10">123 <span style="margin-left: -8ch">123 </span></inline-block>
      height expected 10 but got 20
    • PASS [expected FAIL] subtest: [data-expected-height] 4
  • TIMEOUT [expected FAIL] /css/css-animations/animation-delay-010.html (#26573)
  • OK /css/cssom-view/MediaQueryList-change-event-matches-value.html (#27973)
    • FAIL [expected PASS] subtest: MediaQueryList.changed is correct for all lists in the document even during a change event handler assert_equals: Should've fired the change event in both MediaQueryLists expected 2 but got 0
  • OK /css/cssom-view/MediaQueryList-extends-EventTarget-interop.html (#25285)
    • FAIL [expected PASS] subtest: listener added with addListener and addEventListener is called once assert_equals: triggerMQLEvent expected 1 but got 0
  • OK /css/cssom-view/offsetTopLeft-border-box.html (#24237)
    • FAIL [expected PASS] subtest: container: 0 assert_equals: offsetTop expected 2 but got 0
    • FAIL [expected PASS] subtest: container: 1 assert_equals: offsetTop expected 2 but got 0
  • TIMEOUT [expected OK] /custom-elements/reactions/customized-builtins/HTMLMediaElement.html (#31014)
  • TIMEOUT /fetch/api/basic/keepalive.any.html (#29536)
    • TIMEOUT [expected PASS] subtest: [keepalive] simple GET request on 'load' [no payload]; setting up Test timed out
    • NOTRUN [expected TIMEOUT] subtest: [keepalive] simple GET request on 'pagehide' [no payload]; setting up
  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html (#28066)
    • FAIL [expected PASS] subtest: 0041 set in href="" targeting a frame and clicked assert_equals: expected "A" but got ""
    • FAIL [expected PASS] subtest: 0080 00FF set in href="" targeting a frame and clicked assert_equals: expected "�ÿ" but got ""
    • FAIL [expected PASS] subtest: 0080 00FF 0100 set in href="" targeting a frame and clicked assert_equals: expected "�ÿĀ" but got ""
    • FAIL [expected PASS] subtest: D83D DE0D set in href="" targeting a frame and clicked assert_equals: expected "😍" but got ""
    • FAIL [expected PASS] subtest: DE0D 0041 set in href="" targeting a frame and clicked assert_equals: expected "\ufffdA" but got ""
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • FAIL [expected PASS] subtest: Same-origin navigation started from unload handler must be ignored assert_equals: expected "?pass" but got "?fail"
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-nonexistent.html (#28259)
    • TIMEOUT [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with non-existent fragments should work. Test timed out
  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \n in name (normal form)
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise Test timed out
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise Test timed out
  • TIMEOUT /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img) assert_equals: expected 17557504 but got 17557248
  • TIMEOUT /resource-timing/test_resource_timing.https.html (#25216)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img) assert_equals: expected 6087168 but got 6086912
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK [expected ERROR] /workers/constructors/Worker/Worker-constructor.html (#22991)
Stable unexpected results that are known to be intermittent (19)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • FAIL [expected PASS] subtest: listener that was added twice is called only once assert_equals: expected 1 but got 0
  • OK /fetch/private-network-access/worker-blob-fetch.tentative.window.html (#30064)
    • FAIL [expected PASS] subtest: local https to local https: success. assert_equals: fetch error expected (undefined) undefined but got (string) "unknown error"
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/srcdoc/consecutive-srcdoc.html (#29084)
    • FAIL [expected TIMEOUT] subtest: changing srcdoc to about:srcdoc#yo then another srcdoc does two push navigations and we can navigate back promise_test: Unhandled rejection with value: object "TypeError: iframe is null"
  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • PASS [expected FAIL] subtest: Check execution order on load handler
    • PASS [expected FAIL] subtest: Check execution order from nested timeout
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='' assert_unreached: load should not be fired Reached unreachable code
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
  • CRASH [expected PASS] /html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html (#30063)
  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • OK /html/semantics/forms/historical.html (#28568)
    • FAIL [expected PASS] subtest: <input name=isindex> should not be supported assert_regexp_match: expected object "/?isindex=x$/" but got "about:blank"
  • OK [expected TIMEOUT] /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • PASS [expected NOTRUN] subtest: Check that rel=noopener with target=_self does a normal load
  • OK [expected ERROR] /html/semantics/scripting-1/the-script-element/defer-script/async-script.html?reload (#29054)
  • OK /html/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • PASS [expected FAIL] subtest: The end: DOMContentLoaded and defer scripts
  • TIMEOUT /html/webappapis/scripting/events/compile-event-handler-settings-objects.html (#24246)
    • FAIL [expected TIMEOUT] subtest: The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document assert_equals: expected "/html/webappapis/scripting/events/resources/open-window.html" but got "blank"
  • OK [expected TIMEOUT] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html (#25805)
  • OK [expected TIMEOUT] /webmessaging/without-ports/018.html (#24485)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, javascript:

Copy link

github-actions bot commented Feb 8, 2024

Test results for linux-wpt-layout-2020 from try job (#7826667521):

Flaky unexpected result (16)
  • FAIL [expected PASS] /_mozilla/css/iframe/hide_and_show.html (#15265)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /fetch/private-network-access/worker-blob-fetch.tentative.window.html (#30064)
    • PASS [expected FAIL] subtest: public to public: success.
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • OK /html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html (#29046)
    • PASS [expected FAIL] subtest: first argument: absolute url
  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK /html/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • PASS [expected FAIL] subtest: The end: DOMContentLoaded and defer scripts
  • OK [expected TIMEOUT] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html (#25805)
  • ERROR /resource-timing/content-type-parsing.html (#29131)
    • FAIL [expected TIMEOUT] subtest: mime-type 16 : text/html;charset=�gbk assert_equals: expected (string) "text/html" but got (undefined) undefined
    • TIMEOUT [expected NOTRUN] subtest: mime-type 17 : text/html;charset= gbk Test timed out
  • TIMEOUT /resource-timing/test_resource_timing.html (#25720)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK [expected TIMEOUT] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html (#29053)
    • PASS [expected TIMEOUT] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe
  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)
  • ERROR [expected OK] /workers/semantics/run-a-worker/003.html (#22765)
Stable unexpected results that are known to be intermittent (17)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '340 398' over '501 550' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '501' should prefer '502 510' over '503 520' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '399' should prefer '400' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique 20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique 10deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique -20deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg' assert_equals: Unexpected font on test element expected 487 but got 532
  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • FAIL [expected PASS] subtest: Check execution order from nested timeout assert_equals: Expected nested setTimeout to run second expected true but got false
    • FAIL [expected PASS] subtest: Check execution order on load handler assert_equals: Expected onload to run first expected false but got true
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='' assert_unreached: load should not be fired Reached unreachable code
    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank' assert_unreached: load should not be fired Reached unreachable code
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html (#29050)
    • FAIL [expected PASS] subtest: <a> tag navigate fails for unparseable URLs promise_test: Unhandled rejection with value: object "Error: Navigation was attempted to unparseable URL"
  • OK /html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html (#23849)
    • FAIL [expected PASS] subtest: The document for a standalone media file should have one child in the body. assert_equals: expected "image/png" but got "text/html"
  • OK /html/browsers/history/the-history-interface/traverse_the_history_2.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted assert_array_equals: Pages opened during history navigation expected property 1 to be 3 but got 2 (expected array [6, 3] got [6, 2])
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted assert_array_equals: Pages opened during history navigation expected property 1 to be 3 but got 2 (expected array [6, 3] got [6, 2])
  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted assert_array_equals: Pages opened during history navigation lengths differ, expected array [6, 5] length 2, got [6, 3, 3] length 3
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Host element with delegatesFocus should support autofocus promise_test: Unhandled rejection with value: object "TypeError: host.attachShadow is not a function"
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped promise_test: Unhandled rejection with value: object "TypeError: host.attachShadow is not a function"
    • FAIL [expected NOTRUN] subtest: Area element should support autofocus assert_equals: expected Element node <area></area> but got Element node <body>
      <img src="/media/poster.png" usemap="#map">
      <map n...
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: \r\n in value (formdata event)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: \r\n in name (formdata event) assert_equals: expected "a%0D%0Ab=c" but got ""
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: double quote in name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: character not in encoding in filename (formdata event)
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • TIMEOUT [expected OK] /webmessaging/with-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
Stable unexpected results (10)
  • OK /css/css-animations/parsing/animation-computed.html
    • PASS [expected FAIL] subtest: Property animation value 'anim paused both reverse 4 1s -3s cubic-bezier(0, -2, 1, 3)'
  • OK /css/css-backgrounds/animations/background-position-interpolation.html
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_equals: expected "- 20px - 20px , - 20px - 20px , - 20px - 20px , - 20px - 20px " but got "- 20px - 20px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] assert_equals: expected "0px 0px , 0px 0px , 0px 0px , 0px 0px " but got "0px 0px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] assert_equals: expected "20px 20px , 20px 20px , 20px 20px , 20px 20px " but got "20px 20px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px] assert_equals: expected "40px 40px , 40px 40px , 40px 40px , 40px 40px " but got "40px 40px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px] assert_equals: expected "60px 60px , 60px 60px , 60px 60px , 60px 60px " but got "60px 60px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px] assert_equals: expected "80px 80px , 80px 80px , 80px 80px , 80px 80px " but got "80px 80px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] assert_equals: expected "100px 100px , 100px 100px , 100px 100px , 100px 100px " but got "100px 100px "
    • FAIL [expected PASS] subtest: CSS Transitions with transition: all: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_equals: expected "- 20px - 20px , - 20px - 20px , - 20px - 20px , - 20px - 20px " but got "- 20px - 20px "
    • FAIL [expected PASS] subtest: CSS Transitions with transition: all: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] assert_equals: expected "0px 0px , 0px 0px , 0px 0px , 0px 0px " but got "0px 0px "
    • FAIL [expected PASS] subtest: CSS Transitions with transition: all: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] assert_equals: expected "20px 20px , 20px 20px , 20px 20px , 20px 20px " but got "20px 20px "
    • And 32 more unexpected results...
  • OK /css/css-backgrounds/animations/border-color-interpolation.html
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)]
    • And 8 more unexpected results...
  • OK /css/css-backgrounds/animations/border-radius-interpolation.html
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (1) should be [30px 50px 70px 90px / 130px 150px 170px 190px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (1.5) should be [35px 55px 75px 95px / 135px 155px 175px 195px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px]
    • And 8 more unexpected results...
  • OK /css/css-backgrounds/animations/border-width-interpolation.html
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1) should be [30px 50px 70px 90px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1.5) should be [35px 55px 75px 95px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px]
    • And 8 more unexpected results...
  • OK /css/css-backgrounds/parsing/background-computed.html
    • PASS [expected FAIL] subtest: Property background-position value '12px 13px, 50% 6px, 30px -10px'
  • OK /css/css-transitions/parsing/transition-computed.html
    • PASS [expected FAIL] subtest: Property transition value '1s -3s cubic-bezier(0, -2, 1, 3) top'
  • CRASH [expected OK] /html/browsers/browsing-the-web/unloading-documents/prompt-and-unload-script-closeable.html
  • OK /html/rendering/non-replaced-elements/the-hr-element-0/hr.html
    • FAIL [expected PASS] subtest: overflow assert_equals: expected "hidden" but got "visible"
  • OK /quirks/supports.html
    • PASS [expected FAIL] subtest: Sanity check @supports length

Copy link

github-actions bot commented Feb 8, 2024

⚠️ Try run (#7826667521) failed.

@sebsebmc
Copy link
Contributor Author

sebsebmc commented Feb 8, 2024

Ive found that there is a generated type LonghandsToSerialize that seem to include the correct logic for only serializing properties of shorthands that are allowed in the shorthands

// The only variant-caps value allowed in the shorthand is small-caps (from CSS2);
// the added values defined by CSS Fonts 3 and later are not supported.
// https://www.w3.org/TR/css-fonts-4/#font-prop
if self.font_variant_caps != &font_variant_caps::get_initial_specified_value() &&
*self.font_variant_caps != SmallCaps {
return Ok(());
}
but as a Rust beginner it doesn't seem to me that I can access this member of shorthands because each shorthand type implements a different LonghandToSerialize type so there would need to be a trait made somewhere?

There are also some WPT tests that use shorthands that are failing because the serialization is expected to be returned in a shorter form than what this solution currently generates. Its not clear to me that shorter forms can be generated without knowing which longhand properties were set and which are default?

Comment on lines 19 to 9

[Can't serialize shorthand set to initial value when some longhand is missing]
expected: FAIL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This shouldn't be regressing, but it's not your fault, you will need to rebase after #31299

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No longer needed

components/layout_2020/query.rs Outdated Show resolved Hide resolved
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
@sebsebmc sebsebmc force-pushed the shorthand-computed-properties branch from e649f25 to 5ca70a1 Compare February 9, 2024 17:28
@Loirooriol Loirooriol added T-linux-wpt-2013 Do a try run of the WPT (legacy layout) T-linux-wpt-2020 Do a try run of the WPT labels Feb 9, 2024
@github-actions github-actions bot removed T-linux-wpt-2013 Do a try run of the WPT (legacy layout) T-linux-wpt-2020 Do a try run of the WPT labels Feb 9, 2024
Copy link

github-actions bot commented Feb 9, 2024

🔨 Triggering try run (#7849202580) for Linux WPT legacy-layout, Linux WPT layout-2020

Copy link

github-actions bot commented Feb 9, 2024

Test results for linux-wpt-layout-2020 from try job (#7849202580):

Flaky unexpected result (6)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • FAIL [expected PASS] subtest: Check execution order from nested timeout assert_equals: Expected nested setTimeout to run second expected true but got false
    • FAIL [expected PASS] subtest: Check execution order on load handler assert_equals: Expected onload to run first expected false but got true
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • TIMEOUT /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img) assert_equals: expected 7963136 but got 7963392
  • TIMEOUT /resource-timing/test_resource_timing.https.html (#25216)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img) assert_equals: expected 6010112 but got 6010368
Stable unexpected results that are known to be intermittent (20)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-weight: '400' should prefer '351 398' over '501 550' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-weight: '430' should prefer '420 440' over '450 460'
    • PASS [expected FAIL] subtest: Matching font-weight: '430' should prefer '450 460' over '500'
    • PASS [expected FAIL] subtest: Matching font-weight: '430' should prefer '400 425' over '350 399'
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '501 550' over '502 560' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '450 460' over '400' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-weight: '501' should prefer '500' over '450 460'
    • FAIL [expected PASS] subtest: Matching font-stretch: '100%' should prefer '100%' over '110% 120%' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'normal' should prefer 'oblique 10deg 40deg' over 'oblique 20deg 30deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'normal' should prefer 'oblique 20deg 30deg' over 'oblique -50deg -20deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • And 11 more unexpected results...
  • OK /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • PASS [expected FAIL] subtest: looks up handleEvent method on every event dispatch
  • OK /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • PASS [expected FAIL] subtest: listeners are called correct number of times
  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.https.sub.html (#30111)
    • FAIL [expected TIMEOUT] subtest: sec-fetch-site - Cross-site, no attributes promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
    • TIMEOUT [expected NOTRUN] subtest: sec-fetch-site - Same site, no attributes Test timed out
  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.sub.html (#30111)
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes
    • TIMEOUT [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-site destination, no attributes Test timed out
    • NOTRUN [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy cross-site destination, no attributes
    • NOTRUN [expected TIMEOUT] subtest: sec-fetch-mode - Not sent to non-trustworthy same-origin destination, no attributes
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted assert_array_equals: Pages opened during history navigation expected property 1 to be 3 but got 1 (expected array [6, 3] got [6, 1])
  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
  • OK /html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html (#29046)
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Host element with delegatesFocus should support autofocus promise_test: Unhandled rejection with value: object "TypeError: host.attachShadow is not a function"
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped promise_test: Unhandled rejection with value: object "TypeError: host.attachShadow is not a function"
    • FAIL [expected NOTRUN] subtest: Area element should support autofocus promise_test: Unhandled rejection with value: object "TypeError: w.document.querySelector(...) is null"
  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • PASS [expected FAIL] subtest: DOMParser
    • PASS [expected FAIL] subtest: createHTMLDocument
    • PASS [expected FAIL] subtest: <template>
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise Test timed out
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise Test timed out
  • ERROR /resource-timing/content-type-parsing.html (#29131)
    • TIMEOUT [expected FAIL] subtest: mime-type 16 : text/html;charset=�gbk Test timed out
    • NOTRUN [expected TIMEOUT] subtest: mime-type 17 : text/html;charset= gbk
  • TIMEOUT [expected OK] /webmessaging/with-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
  • TIMEOUT [expected OK] /webmessaging/without-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
  • OK [expected ERROR] /workers/baseurl/alpha/import-in-moduleworker.html (#21315)
  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)
Stable unexpected results (10)
  • OK /css/css-animations/parsing/animation-computed.html
    • PASS [expected FAIL] subtest: Property animation value 'anim paused both reverse 4 1s -3s cubic-bezier(0, -2, 1, 3)'
  • OK /css/css-backgrounds/animations/background-position-interpolation.html
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_equals: expected "- 20px - 20px , - 20px - 20px , - 20px - 20px , - 20px - 20px " but got "- 20px - 20px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] assert_equals: expected "0px 0px , 0px 0px , 0px 0px , 0px 0px " but got "0px 0px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] assert_equals: expected "20px 20px , 20px 20px , 20px 20px , 20px 20px " but got "20px 20px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px] assert_equals: expected "40px 40px , 40px 40px , 40px 40px , 40px 40px " but got "40px 40px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px] assert_equals: expected "60px 60px , 60px 60px , 60px 60px , 60px 60px " but got "60px 60px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px] assert_equals: expected "80px 80px , 80px 80px , 80px 80px , 80px 80px " but got "80px 80px "
    • FAIL [expected PASS] subtest: CSS Transitions: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] assert_equals: expected "100px 100px , 100px 100px , 100px 100px , 100px 100px " but got "100px 100px "
    • FAIL [expected PASS] subtest: CSS Transitions with transition: all: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_equals: expected "- 20px - 20px , - 20px - 20px , - 20px - 20px , - 20px - 20px " but got "- 20px - 20px "
    • FAIL [expected PASS] subtest: CSS Transitions with transition: all: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] assert_equals: expected "0px 0px , 0px 0px , 0px 0px , 0px 0px " but got "0px 0px "
    • FAIL [expected PASS] subtest: CSS Transitions with transition: all: property <background-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] assert_equals: expected "20px 20px , 20px 20px , 20px 20px , 20px 20px " but got "20px 20px "
    • And 32 more unexpected results...
  • OK /css/css-backgrounds/animations/border-color-interpolation.html
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)]
    • And 8 more unexpected results...
  • OK /css/css-backgrounds/animations/border-radius-interpolation.html
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (1) should be [30px 50px 70px 90px / 130px 150px 170px 190px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (1.5) should be [35px 55px 75px 95px / 135px 155px 175px 195px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px] to [30px 50px 70px 90px / 130px 150px 170px 190px] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px]
    • And 8 more unexpected results...
  • OK /css/css-backgrounds/animations/border-width-interpolation.html
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1) should be [30px 50px 70px 90px]
    • PASS [expected FAIL] subtest: CSS Transitions: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1.5) should be [35px 55px 75px 95px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px]
    • PASS [expected FAIL] subtest: CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px]
    • And 8 more unexpected results...
  • OK /css/css-backgrounds/parsing/background-computed.html
    • PASS [expected FAIL] subtest: Property background-position value '12px 13px, 50% 6px, 30px -10px'
  • OK /css/css-transitions/parsing/transition-computed.html
    • PASS [expected FAIL] subtest: Property transition value '1s -3s cubic-bezier(0, -2, 1, 3) top'
  • OK /css/cssom/cssom-getPropertyValue-common-checks.html
    • PASS [expected FAIL] subtest: Can't serialize shorthand set to initial value when some longhand is missing
  • OK /html/rendering/non-replaced-elements/the-hr-element-0/hr.html
    • FAIL [expected PASS] subtest: overflow assert_equals: expected "hidden" but got "visible"
  • OK /quirks/supports.html
    • PASS [expected FAIL] subtest: Sanity check @supports length

Copy link

github-actions bot commented Feb 9, 2024

⚠️ Try run (#7849202580) failed.

Copy link
Contributor

@Loirooriol Loirooriol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to update the test expectations.

So if I get it right, the regressions are:

It would be good to land #31297 first and investigate what's happening with background-position-interpolation.html, but otherwise this looks good.

components/layout_2020/query.rs Outdated Show resolved Hide resolved
Comment on lines 19 to 9

[Can't serialize shorthand set to initial value when some longhand is missing]
expected: FAIL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No longer needed

components/layout_2020/query.rs Outdated Show resolved Hide resolved
@sebsebmc
Copy link
Contributor Author

sebsebmc commented Feb 9, 2024

/css/css-fonts/font-shorthand-serialization-prevention.html does not fail because servo doesn't support the all-small-caps. It fails because shorthands are not supposed to serialize if the longhand values present in the shorthand are not settable via the shorthand. all-small-caps is one of those, and so the shorthand should not serialize (hence the name of the test font-shorthand-serialization-prevention)

@Loirooriol
Copy link
Contributor

No, the test fails because Servo doesn't support font-variant: all-small-caps nor font-variant-caps: all-small-caps, as you can see via CSS.supports.

Therefore, the assignment fails, and the longhands can be represented by a shorthand value, so the shorthand serializes.

Signed-off-by: Sebastian C <sebsebmc@gmail.com>
@Loirooriol
Copy link
Contributor

background-position-interpolation.html is also failing on Firefox: https://wpt.fyi/results/css/css-backgrounds/animations/background-position-interpolation.html

@Loirooriol Loirooriol added this pull request to the merge queue Feb 10, 2024
Merged via the queue into servo:main with commit 19667e1 Feb 11, 2024
9 checks passed
@sebsebmc sebsebmc deleted the shorthand-computed-properties branch February 11, 2024 15:24
Taym95 pushed a commit to Taym95/servo that referenced this pull request Feb 11, 2024
…o#31277)

* Respond to shorthand property requests with real values

Signed-off-by: Sebastian C <sebsebmc@gmail.com>

* Cleanup formatting and old comments

Signed-off-by: Sebastian C <sebsebmc@gmail.com>

* Update WPT expectations

Signed-off-by: Sebastian C <sebsebmc@gmail.com>

* Refactor out helper fn

Signed-off-by: Sebastian C <sebsebmc@gmail.com>

* Cleanup

Signed-off-by: Sebastian C <sebsebmc@gmail.com>

---------

Signed-off-by: Sebastian C <sebsebmc@gmail.com>
syvb added a commit to syvb/servo that referenced this pull request Feb 14, 2024
…o#31277) (full)

{"fail_fast": false, "matrix": [{"name": "Linux WPT", "workflow": "linux", "wpt_layout": "all", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "MacOS", "workflow": "macos", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Windows", "workflow": "windows", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Android", "workflow": "android", "wpt_layout": "none", "profile": "release", "unit_tests": false, "wpt_tests_to_run": ""}]}
syvb added a commit to syvb/servo that referenced this pull request Feb 14, 2024
…o#31277) (full)

{"fail_fast": false, "matrix": [{"name": "Linux WPT", "workflow": "linux", "wpt_layout": "all", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "MacOS", "workflow": "macos", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Windows", "workflow": "windows", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Android", "workflow": "android", "wpt_layout": "none", "profile": "release", "unit_tests": false, "wpt_tests_to_run": ""}]}
syvb added a commit to syvb/servo that referenced this pull request Feb 14, 2024
…o#31277) (full)

{"fail_fast": false, "matrix": [{"name": "Linux WPT", "workflow": "linux", "wpt_layout": "all", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "MacOS", "workflow": "macos", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Windows", "workflow": "windows", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Android", "workflow": "android", "wpt_layout": "none", "profile": "release", "unit_tests": false, "wpt_tests_to_run": ""}]}
syvb added a commit to syvb/servo that referenced this pull request Feb 15, 2024
…o#31277) (full)

{"fail_fast": false, "matrix": [{"name": "Linux WPT", "workflow": "linux", "wpt_layout": "all", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "MacOS", "workflow": "macos", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Windows", "workflow": "windows", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Android", "workflow": "android", "wpt_layout": "none", "profile": "release", "unit_tests": false, "wpt_tests_to_run": ""}]}
syvb added a commit to syvb/servo that referenced this pull request Feb 15, 2024
…o#31277) (full)

{"fail_fast": false, "matrix": [{"name": "Linux WPT", "workflow": "linux", "wpt_layout": "all", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "MacOS", "workflow": "macos", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Windows", "workflow": "windows", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Android", "workflow": "android", "wpt_layout": "none", "profile": "release", "unit_tests": false, "wpt_tests_to_run": ""}]}
syvb added a commit to syvb/servo that referenced this pull request Feb 15, 2024
…o#31277) (full)

{"fail_fast": false, "matrix": [{"name": "Linux WPT", "workflow": "linux", "wpt_layout": "all", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "MacOS", "workflow": "macos", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Windows", "workflow": "windows", "wpt_layout": "none", "profile": "release", "unit_tests": true, "wpt_tests_to_run": ""}, {"name": "Android", "workflow": "android", "wpt_layout": "none", "profile": "release", "unit_tests": false, "wpt_tests_to_run": ""}]}
Loirooriol added a commit to Loirooriol/servo that referenced this pull request Apr 26, 2024
This ports servo#31277 (with the changes from servo#32066) into legacy layout.

Otherwise, turning white-space into a shorthand (servo#32146) would fail
some tests that expect the property to be serializable.
github-merge-queue bot pushed a commit that referenced this pull request Apr 26, 2024
* Let legacy layout serialize shorthands in getComputedStyle

This ports #31277 (with the changes from #32066) into legacy layout.

Otherwise, turning white-space into a shorthand (#32146) would fail
some tests that expect the property to be serializable.

* Update text expecatations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Shorthand properties of computed CSSStyleDeclaration don't return correct values
4 participants