Implement the CSS image-animation property [chromium/src : main]

0 views
Skip to first unread message

Stephen Chenney (Gerrit)

unread,
Jan 20, 2026, 9:13:29 AM (3 days ago) Jan 20
to Seokho Song, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
Attention needed from Seokho Song

Stephen Chenney added 6 comments

Patchset-level comments
File-level comment, Patchset 35 (Latest):
Stephen Chenney . resolved

I didn't look at the tests. Otherwise, I like the way this is going.

File third_party/blink/renderer/platform/graphics/bitmap_image.h
Line 194, Patchset 35 (Latest): raw_ptr<ImageNodeAnimationInfo> current_image_node_animation_info_ = nullptr;
Stephen Chenney . unresolved

See comment below. I think you need to fix the FIXME.

Line 174, Patchset 35 (Latest): const DOMNodeId PUASED_CACHED_FRAME_ID = -3;
Stephen Chenney . unresolved

Typo: PAUSED_CACHED_FRAME_ID

File third_party/blink/renderer/platform/graphics/bitmap_image.cc
Line 315, Patchset 35 (Latest): PaintImage image = PaintImageForCurrentFrame();
Stephen Chenney . unresolved

I think you need to add animation info as an optional arg to this method, even though it is called and overidden a lot. Maybe a separfate preparatory patch that adds the parameter, to keep the complexity of this CL down.

File third_party/blink/renderer/platform/graphics/graphics_context.h
Line 92, Patchset 35 (Latest):struct ImageNodeAnimationInfo {
Stephen Chenney . unresolved

This should be it's own header file with the EImageAnimation conversion code too, if possible.

File third_party/blink/renderer/platform/runtime_enabled_features.json5
Line 1470, Patchset 35 (Latest): name: "CSSImageAnimation",
Stephen Chenney . unresolved

Please add a comment with a link to the chromestatus entry.

Open in Gerrit

Related details

Attention is currently required from:
  • Seokho Song
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I6e5b6d6cccf6419c7c7c817a7082409e69a9c406
Gerrit-Change-Number: 7458159
Gerrit-PatchSet: 35
Gerrit-Owner: Seokho Song <seo...@chromium.org>
Gerrit-Reviewer: Seokho Song <seo...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Dirk Schulze <dsch...@chromium.org>
Gerrit-CC: Menard, Alexis <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-CC: Stephen Chenney <sche...@chromium.org>
Gerrit-Attention: Seokho Song <seo...@chromium.org>
Gerrit-Comment-Date: Tue, 20 Jan 2026 14:13:21 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Seokho Song (Gerrit)

unread,
Jan 21, 2026, 12:08:59 AM (3 days ago) Jan 21
to Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
Attention needed from Stephen Chenney

Seokho Song voted and added 5 comments

Votes added by Seokho Song

Commit-Queue+1

5 comments

File third_party/blink/renderer/platform/graphics/bitmap_image.h
Line 194, Patchset 35: raw_ptr<ImageNodeAnimationInfo> current_image_node_animation_info_ = nullptr;
Stephen Chenney . resolved

See comment below. I think you need to fix the FIXME.

Seokho Song

Acknowledged

Line 174, Patchset 35: const DOMNodeId PUASED_CACHED_FRAME_ID = -3;
Stephen Chenney . resolved

Typo: PAUSED_CACHED_FRAME_ID

Seokho Song

Done. Good catch!

File third_party/blink/renderer/platform/graphics/bitmap_image.cc
Line 315, Patchset 35: PaintImage image = PaintImageForCurrentFrame();
Stephen Chenney . resolved

I think you need to add animation info as an optional arg to this method, even though it is called and overidden a lot. Maybe a separfate preparatory patch that adds the parameter, to keep the complexity of this CL down.

Seokho Song

Yeah. I think good idea. I'd prefer separated CL. So changed `FIXME` to `TODO`

File third_party/blink/renderer/platform/graphics/graphics_context.h
Line 92, Patchset 35:struct ImageNodeAnimationInfo {
Stephen Chenney . resolved

This should be it's own header file with the EImageAnimation conversion code too, if possible.

Seokho Song

Done

File third_party/blink/renderer/platform/runtime_enabled_features.json5
Line 1470, Patchset 35: name: "CSSImageAnimation",
Stephen Chenney . resolved

Please add a comment with a link to the chromestatus entry.

Seokho Song

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Stephen Chenney
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I6e5b6d6cccf6419c7c7c817a7082409e69a9c406
    Gerrit-Change-Number: 7458159
    Gerrit-PatchSet: 38
    Gerrit-Owner: Seokho Song <seo...@chromium.org>
    Gerrit-Reviewer: Seokho Song <seo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Dirk Schulze <dsch...@chromium.org>
    Gerrit-CC: Menard, Alexis <alexis...@intel.com>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-CC: Stephen Chenney <sche...@chromium.org>
    Gerrit-Attention: Stephen Chenney <sche...@chromium.org>
    Gerrit-Comment-Date: Wed, 21 Jan 2026 05:08:38 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Stephen Chenney <sche...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Seokho Song (Gerrit)

    unread,
    Jan 21, 2026, 12:59:55 AM (2 days ago) Jan 21
    to Anders Hartvoll Ruud, Florin Malita, Jeremy Roman, Dominik Röttsches, Daniel Bratell, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
    Attention needed from Anders Hartvoll Ruud, Daniel Bratell, Dominik Röttsches, Florin Malita, Jeremy Roman and Stephen Chenney

    Seokho Song added 1 comment

    Patchset-level comments
    File-level comment, Patchset 38 (Latest):
    Seokho Song . resolved

    Hi folks! It would be great to land this CL before CSSWG F2F Jan 27-Jan29 if possible! Thank you for review in advance :)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Anders Hartvoll Ruud
    • Daniel Bratell
    • Dominik Röttsches
    • Florin Malita
    • Jeremy Roman
    • Stephen Chenney
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I6e5b6d6cccf6419c7c7c817a7082409e69a9c406
    Gerrit-Change-Number: 7458159
    Gerrit-PatchSet: 38
    Gerrit-Owner: Seokho Song <seo...@chromium.org>
    Gerrit-Reviewer: Anders Hartvoll Ruud <and...@chromium.org>
    Gerrit-Reviewer: Daniel Bratell <brat...@gmail.com>
    Gerrit-Reviewer: Dominik Röttsches <dr...@chromium.org>
    Gerrit-Reviewer: Florin Malita <fma...@chromium.org>
    Gerrit-Reviewer: Jeremy Roman <jbr...@chromium.org>
    Gerrit-Reviewer: Seokho Song <seo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Dirk Schulze <dsch...@chromium.org>
    Gerrit-CC: Manuel Rego <re...@igalia.com>
    Gerrit-CC: Menard, Alexis <alexis...@intel.com>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-CC: Stephen Chenney <sche...@chromium.org>
    Gerrit-Attention: Stephen Chenney <sche...@chromium.org>
    Gerrit-Attention: Anders Hartvoll Ruud <and...@chromium.org>
    Gerrit-Attention: Dominik Röttsches <dr...@chromium.org>
    Gerrit-Attention: Jeremy Roman <jbr...@chromium.org>
    Gerrit-Attention: Florin Malita <fma...@chromium.org>
    Gerrit-Attention: Daniel Bratell <brat...@gmail.com>
    Gerrit-Comment-Date: Wed, 21 Jan 2026 05:59:28 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Dominik Röttsches (Gerrit)

    unread,
    Jan 21, 2026, 3:02:19 AM (2 days ago) Jan 21
    to Seokho Song, Anders Hartvoll Ruud, Florin Malita, Jeremy Roman, Daniel Bratell, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
    Attention needed from Anders Hartvoll Ruud, Daniel Bratell, Florin Malita, Jeremy Roman, Seokho Song and Stephen Chenney

    Dominik Röttsches added 1 comment

    Patchset-level comments
    Dominik Röttsches . resolved

    I am afraid I am not a good reviewer for this.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Anders Hartvoll Ruud
    • Daniel Bratell
    • Florin Malita
    • Jeremy Roman
    • Seokho Song
    • Stephen Chenney
    Gerrit-Attention: Jeremy Roman <jbr...@chromium.org>
    Gerrit-Attention: Florin Malita <fma...@chromium.org>
    Gerrit-Attention: Seokho Song <seo...@chromium.org>
    Gerrit-Attention: Daniel Bratell <brat...@gmail.com>
    Gerrit-Comment-Date: Wed, 21 Jan 2026 08:02:08 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Anders Hartvoll Ruud (Gerrit)

    unread,
    Jan 21, 2026, 5:54:11 AM (2 days ago) Jan 21
    to Seokho Song, Florin Malita, Jeremy Roman, Daniel Bratell, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
    Attention needed from Daniel Bratell, Florin Malita, Jeremy Roman, Seokho Song and Stephen Chenney

    Anders Hartvoll Ruud added 4 comments

    Commit Message
    Line 38, Patchset 38 (Latest):Added -delayed.gif that hold the first frame 500ms to the test running
    Anders Hartvoll Ruud . unresolved

    WPTs with setTimeout() are bad in the first place, but waiting up to 700ms seems extra painful.

    I assume the flakiness (under 10ms) came from e.g. image-animation-img-running.tentative.html, where #img2 would incorrectly advance the animation before the screenshot was taken?

    I wonder if it's an option (right after img2.src is set) to draw the image contents onto a canvas and look at the pixel data? (Basically make this a regular async testharness test, not a reftest.)

    File third_party/blink/renderer/core/css/css_properties.json5
    Line 3715, Patchset 38 (Latest): field_template: "keyword",
    Anders Hartvoll Ruud . unresolved

    Maybe add `field_group: "*",` here, to bury this value in raredata.

    File third_party/blink/renderer/core/css/resolver/style_resolver.cc
    Line 3410, Patchset 38 (Latest): new_viewport_style_builder.SetImageAnimation(image_animation);
    Anders Hartvoll Ruud . unresolved

    Do we have a test for this propagation? It should either be tested in this CL, or we can make this change separately (along with a test).

    File third_party/blink/renderer/core/style/computed_style.cc
    Line 140, Patchset 38 (Latest): Member<void*> own_ptrs[2];
    Anders Hartvoll Ruud . unresolved

    I think this is avoidable. (See other comment.)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Bratell
    • Florin Malita
    • Jeremy Roman
    • Seokho Song
    • Stephen Chenney
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I6e5b6d6cccf6419c7c7c817a7082409e69a9c406
      Gerrit-Change-Number: 7458159
      Gerrit-PatchSet: 38
      Gerrit-Owner: Seokho Song <seo...@chromium.org>
      Gerrit-Reviewer: Anders Hartvoll Ruud <and...@chromium.org>
      Gerrit-Reviewer: Daniel Bratell <brat...@gmail.com>
      Gerrit-Reviewer: Florin Malita <fma...@chromium.org>
      Gerrit-Reviewer: Jeremy Roman <jbr...@chromium.org>
      Gerrit-Reviewer: Seokho Song <seo...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: Dirk Schulze <dsch...@chromium.org>
      Gerrit-CC: Manuel Rego <re...@igalia.com>
      Gerrit-CC: Menard, Alexis <alexis...@intel.com>
      Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
      Gerrit-CC: Stephen Chenney <sche...@chromium.org>
      Gerrit-Attention: Stephen Chenney <sche...@chromium.org>
      Gerrit-Attention: Jeremy Roman <jbr...@chromium.org>
      Gerrit-Attention: Florin Malita <fma...@chromium.org>
      Gerrit-Attention: Seokho Song <seo...@chromium.org>
      Gerrit-Attention: Daniel Bratell <brat...@gmail.com>
      Gerrit-Comment-Date: Wed, 21 Jan 2026 10:53:52 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Jeremy Roman (Gerrit)

      unread,
      Jan 21, 2026, 10:50:31 AM (2 days ago) Jan 21
      to Seokho Song, Anders Hartvoll Ruud, Florin Malita, Daniel Bratell, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org, Jeremy Roman
      Attention needed from Daniel Bratell, Florin Malita, Seokho Song and Stephen Chenney

      Jeremy Roman added 1 comment

      Patchset-level comments
      Jeremy Roman . resolved

      I'm probably not a great reviewer for this, current rendering folks are better. There are a few already on this CL, but if you need another, I'd suggest pdr@.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniel Bratell
      • Florin Malita
      • Seokho Song
      • Stephen Chenney
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I6e5b6d6cccf6419c7c7c817a7082409e69a9c406
      Gerrit-Change-Number: 7458159
      Gerrit-PatchSet: 38
      Gerrit-Owner: Seokho Song <seo...@chromium.org>
      Gerrit-Reviewer: Anders Hartvoll Ruud <and...@chromium.org>
      Gerrit-Reviewer: Daniel Bratell <brat...@gmail.com>
      Gerrit-Reviewer: Florin Malita <fma...@chromium.org>
      Gerrit-Reviewer: Seokho Song <seo...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: Dirk Schulze <dsch...@chromium.org>
      Gerrit-CC: Manuel Rego <re...@igalia.com>
      Gerrit-CC: Menard, Alexis <alexis...@intel.com>
      Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
      Gerrit-CC: Stephen Chenney <sche...@chromium.org>
      Gerrit-Attention: Stephen Chenney <sche...@chromium.org>
      Gerrit-Attention: Florin Malita <fma...@chromium.org>
      Gerrit-Attention: Seokho Song <seo...@chromium.org>
      Gerrit-Attention: Daniel Bratell <brat...@gmail.com>
      Gerrit-Comment-Date: Wed, 21 Jan 2026 15:50:25 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Seokho Song (Gerrit)

      unread,
      Jan 22, 2026, 12:01:29 AM (yesterday) Jan 22
      to Yoav Weiss (@Shopify), Anders Hartvoll Ruud, Florin Malita, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
      Attention needed from Anders Hartvoll Ruud, Florin Malita, Stephen Chenney and Yoav Weiss (@Shopify)

      Seokho Song voted and added 4 comments

      Votes added by Seokho Song

      Commit-Queue+1

      4 comments

      Commit Message
      Line 38, Patchset 38:Added -delayed.gif that hold the first frame 500ms to the test running
      Anders Hartvoll Ruud . unresolved

      WPTs with setTimeout() are bad in the first place, but waiting up to 700ms seems extra painful.

      I assume the flakiness (under 10ms) came from e.g. image-animation-img-running.tentative.html, where #img2 would incorrectly advance the animation before the screenshot was taken?

      I wonder if it's an option (right after img2.src is set) to draw the image contents onto a canvas and look at the pixel data? (Basically make this a regular async testharness test, not a reftest.)

      Seokho Song

      Yeah. I agree that the delay is bad. And your assumption is right. The flakyness frequently (almost only) occurred on `mac-rel`.

      I tried using the canvas `drawImage()` to capture the image at the moment. However, according to the relevant test case[1], it only seems to draw the first frame of the GIF.
      Another possible approach I considered was to capture the entire screen via `navigator.mediaDevices.getDisplayMedia` and render it to the canvas. Unfortunately, this approach is also unusable. Because it is mocked by [2]. It only generates greenish Pacman-likely shape. 😭

      Is there another approach that could be suggested?

      maybe `html-in-canvas`? But that is on the `test` status. So I'm not sure it is a good idea.

      [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html
      [2] https://source.chromium.org/chromium/chromium/src/+/main:media/capture/video/fake_video_capture_device.cc

      File third_party/blink/renderer/core/css/css_properties.json5
      Line 3715, Patchset 38: field_template: "keyword",
      Anders Hartvoll Ruud . resolved

      Maybe add `field_group: "*",` here, to bury this value in raredata.

      Seokho Song

      Done

      File third_party/blink/renderer/core/css/resolver/style_resolver.cc
      Line 3410, Patchset 38: new_viewport_style_builder.SetImageAnimation(image_animation);
      Anders Hartvoll Ruud . resolved

      Do we have a test for this propagation? It should either be tested in this CL, or we can make this change separately (along with a test).

      Seokho Song

      Ah, yes, I think I should this one should be separated. This also need to spec-wise update too. Undo the changes, and leave todo.

      Thanks!

      File third_party/blink/renderer/core/style/computed_style.cc
      Line 140, Patchset 38: Member<void*> own_ptrs[2];
      Anders Hartvoll Ruud . resolved

      I think this is avoidable. (See other comment.)

      Seokho Song

      Thanks, Done.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Anders Hartvoll Ruud
      • Florin Malita
      • Stephen Chenney
      • Yoav Weiss (@Shopify)
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I6e5b6d6cccf6419c7c7c817a7082409e69a9c406
      Gerrit-Change-Number: 7458159
      Gerrit-PatchSet: 39
      Gerrit-Owner: Seokho Song <seo...@chromium.org>
      Gerrit-Reviewer: Anders Hartvoll Ruud <and...@chromium.org>
      Gerrit-Reviewer: Florin Malita <fma...@chromium.org>
      Gerrit-Reviewer: Seokho Song <seo...@chromium.org>
      Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: Dirk Schulze <dsch...@chromium.org>
      Gerrit-CC: Manuel Rego <re...@igalia.com>
      Gerrit-CC: Menard, Alexis <alexis...@intel.com>
      Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
      Gerrit-CC: Stephen Chenney <sche...@chromium.org>
      Gerrit-Attention: Stephen Chenney <sche...@chromium.org>
      Gerrit-Attention: Anders Hartvoll Ruud <and...@chromium.org>
      Gerrit-Attention: Yoav Weiss (@Shopify) <yoav...@chromium.org>
      Gerrit-Attention: Florin Malita <fma...@chromium.org>
      Gerrit-Comment-Date: Thu, 22 Jan 2026 05:00:56 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      Comment-In-Reply-To: Anders Hartvoll Ruud <and...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Seokho Song (Gerrit)

      unread,
      Jan 22, 2026, 12:03:39 AM (yesterday) Jan 22
      to Yoav Weiss (@Shopify), Anders Hartvoll Ruud, Florin Malita, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
      Attention needed from Anders Hartvoll Ruud, Florin Malita, Stephen Chenney and Yoav Weiss (@Shopify)

      Seokho Song voted Commit-Queue+0

      Commit-Queue+0
      Gerrit-Comment-Date: Thu, 22 Jan 2026 05:03:08 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Seokho Song (Gerrit)

      unread,
      5:41 AM (7 hours ago) 5:41 AM
      to Yoav Weiss (@Shopify), Anders Hartvoll Ruud, Florin Malita, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
      Attention needed from Anders Hartvoll Ruud, Florin Malita, Stephen Chenney and Yoav Weiss (@Shopify)

      Seokho Song added 1 comment

      Commit Message
      Line 38, Patchset 38:Added -delayed.gif that hold the first frame 500ms to the test running
      Anders Hartvoll Ruud . unresolved

      WPTs with setTimeout() are bad in the first place, but waiting up to 700ms seems extra painful.

      I assume the flakiness (under 10ms) came from e.g. image-animation-img-running.tentative.html, where #img2 would incorrectly advance the animation before the screenshot was taken?

      I wonder if it's an option (right after img2.src is set) to draw the image contents onto a canvas and look at the pixel data? (Basically make this a regular async testharness test, not a reftest.)

      Seokho Song

      Yeah. I agree that the delay is bad. And your assumption is right. The flakyness frequently (almost only) occurred on `mac-rel`.

      I tried using the canvas `drawImage()` to capture the image at the moment. However, according to the relevant test case[1], it only seems to draw the first frame of the GIF.
      Another possible approach I considered was to capture the entire screen via `navigator.mediaDevices.getDisplayMedia` and render it to the canvas. Unfortunately, this approach is also unusable. Because it is mocked by [2]. It only generates greenish Pacman-likely shape. 😭

      Is there another approach that could be suggested?

      maybe `html-in-canvas`? But that is on the `test` status. So I'm not sure it is a good idea.

      [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html
      [2] https://source.chromium.org/chromium/chromium/src/+/main:media/capture/video/fake_video_capture_device.cc

      Seokho Song

      Also, `drawElementImage()` a.k.a. `css-in-canvas`, renders the first frame of the gif image. Hence, I think we cannot use this approach too.

      FYR: https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/wpt_internal/html/canvas/drawElementImage/animated-gif.html

      Gerrit-Comment-Date: Fri, 23 Jan 2026 10:40:48 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Anders Hartvoll Ruud <and...@chromium.org>
      Comment-In-Reply-To: Seokho Song <seo...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Seokho Song (Gerrit)

      unread,
      5:44 AM (7 hours ago) 5:44 AM
      to Yoav Weiss (@Shopify), Anders Hartvoll Ruud, Florin Malita, Manuel Rego, Chromium LUCI CQ, chromium...@chromium.org, Dirk Schulze, Menard, Alexis, Stephen Chenney, Olga Gerchikov, Chromium Metrics Reviews, AyeAye, blink-revie...@chromium.org, fmalit...@chromium.org, blink-rev...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, apavlo...@chromium.org, kinuko...@chromium.org, fserb...@chromium.org, jmedle...@chromium.org, drott+bl...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, blink-reviews-p...@chromium.org
      Attention needed from Anders Hartvoll Ruud, Florin Malita, Stephen Chenney and Yoav Weiss (@Shopify)

      Seokho Song added 1 comment

      Commit Message
      Line 38, Patchset 38:Added -delayed.gif that hold the first frame 500ms to the test running
      Anders Hartvoll Ruud . unresolved

      WPTs with setTimeout() are bad in the first place, but waiting up to 700ms seems extra painful.

      I assume the flakiness (under 10ms) came from e.g. image-animation-img-running.tentative.html, where #img2 would incorrectly advance the animation before the screenshot was taken?

      I wonder if it's an option (right after img2.src is set) to draw the image contents onto a canvas and look at the pixel data? (Basically make this a regular async testharness test, not a reftest.)

      Seokho Song

      Yeah. I agree that the delay is bad. And your assumption is right. The flakyness frequently (almost only) occurred on `mac-rel`.

      I tried using the canvas `drawImage()` to capture the image at the moment. However, according to the relevant test case[1], it only seems to draw the first frame of the GIF.
      Another possible approach I considered was to capture the entire screen via `navigator.mediaDevices.getDisplayMedia` and render it to the canvas. Unfortunately, this approach is also unusable. Because it is mocked by [2]. It only generates greenish Pacman-likely shape. 😭

      Is there another approach that could be suggested?

      maybe `html-in-canvas`? But that is on the `test` status. So I'm not sure it is a good idea.

      [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html
      [2] https://source.chromium.org/chromium/chromium/src/+/main:media/capture/video/fake_video_capture_device.cc

      Seokho Song

      Also, `drawElementImage()` a.k.a. `css-in-canvas`, renders the first frame of the gif image. Hence, I think we cannot use this approach too.

      FYR: https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/wpt_internal/html/canvas/drawElementImage/animated-gif.html

      Seokho Song

      Opps. `html-in-canvas` I mean 😳

      Gerrit-Comment-Date: Fri, 23 Jan 2026 10:44:16 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages